net: ethernet: mtk_eth_soc: enable nft hw flowtable_offload for MT7988 SoC
[linux-2.6-block.git] / drivers / net / ethernet / mediatek / mtk_ppe.h
index fb6bf58172d98119dac1a18c77057b5edff5255c..e3d0ec72bc6992cc3dd94b8a724802ab886b2df5 100644 (file)
@@ -85,6 +85,17 @@ enum {
 #define MTK_FOE_WINFO_BSS              GENMASK(5, 0)
 #define MTK_FOE_WINFO_WCID             GENMASK(15, 6)
 
+#define MTK_FOE_WINFO_BSS_V3           GENMASK(23, 16)
+#define MTK_FOE_WINFO_WCID_V3          GENMASK(15, 0)
+
+#define MTK_FOE_WINFO_PAO_USR_INFO     GENMASK(15, 0)
+#define MTK_FOE_WINFO_PAO_TID          GENMASK(19, 16)
+#define MTK_FOE_WINFO_PAO_IS_FIXEDRATE BIT(20)
+#define MTK_FOE_WINFO_PAO_IS_PRIOR     BIT(21)
+#define MTK_FOE_WINFO_PAO_IS_SP                BIT(22)
+#define MTK_FOE_WINFO_PAO_HF           BIT(23)
+#define MTK_FOE_WINFO_PAO_AMSDU_EN     BIT(24)
+
 enum {
        MTK_FOE_STATE_INVALID,
        MTK_FOE_STATE_UNBIND,
@@ -106,8 +117,13 @@ struct mtk_foe_mac_info {
        u16 pppoe_id;
        u16 src_mac_lo;
 
+       /* netsys_v2 */
        u16 minfo;
        u16 winfo;
+
+       /* netsys_v3 */
+       u32 w3info;
+       u32 wpao;
 };
 
 /* software-only entry type */
@@ -218,6 +234,7 @@ struct mtk_foe_ipv6_6rd {
 
 #define MTK_FOE_ENTRY_V1_SIZE  80
 #define MTK_FOE_ENTRY_V2_SIZE  96
+#define MTK_FOE_ENTRY_V3_SIZE  128
 
 struct mtk_foe_entry {
        u32 ib1;
@@ -228,7 +245,7 @@ struct mtk_foe_entry {
                struct mtk_foe_ipv4_dslite dslite;
                struct mtk_foe_ipv6 ipv6;
                struct mtk_foe_ipv6_6rd ipv6_6rd;
-               u32 data[23];
+               u32 data[31];
        };
 };