[][openwrt][mt7988][hnat][Add extensions for 3-WED/3-WDMA offload]
[Description]
Add extensions to support 3-WED/3-WDMA wifi offload.
If without this patch, WiFi offload is not able to run
3-WED/3-WDMA scenario.
[Release-log]
N/A
Change-Id: I184610e5327a1135366a3524610cd293aa72e9fe
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/7824471
diff --git a/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_hnat/hnat.h b/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_hnat/hnat.h
index 2337f0e..331fce9 100644
--- a/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_hnat/hnat.h
+++ b/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_hnat/hnat.h
@@ -1048,7 +1048,8 @@
#define FROM_GE_VIRTUAL(skb) (skb_hnat_iface(skb) == FOE_MAGIC_GE_VIRTUAL)
#define FROM_EXT(skb) (skb_hnat_iface(skb) == FOE_MAGIC_EXT)
#define FROM_WED(skb) ((skb_hnat_iface(skb) == FOE_MAGIC_WED0) || \
- (skb_hnat_iface(skb) == FOE_MAGIC_WED1))
+ (skb_hnat_iface(skb) == FOE_MAGIC_WED1) || \
+ (skb_hnat_iface(skb) == FOE_MAGIC_WED2))
#define FOE_MAGIC_GE_LAN 0x1
#define FOE_MAGIC_GE_WAN 0x2
#define FOE_MAGIC_EXT 0x3
@@ -1084,6 +1085,7 @@
#define NR_DISCARD 7
#define NR_WDMA0_PORT 8
#define NR_WDMA1_PORT 9
+#define NR_WDMA2_PORT 13
#define NR_GMAC3_PORT 15
#define LAN_DEV_NAME hnat_priv->lan
#define LAN2_DEV_NAME hnat_priv->lan2
diff --git a/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_hnat/hnat_nf_hook.c b/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_hnat/hnat_nf_hook.c
index 59b3e71..31c03ca 100644
--- a/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_hnat/hnat_nf_hook.c
+++ b/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_hnat/hnat_nf_hook.c
@@ -1834,7 +1834,7 @@
skb_hnat_wc_id(skb), skb_hnat_rx_id(skb));
if ((gmac_no != NR_WDMA0_PORT) && (gmac_no != NR_WDMA1_PORT) &&
- (gmac_no != NR_WHNAT_WDMA_PORT))
+ (gmac_no != NR_WDMA2_PORT) && (gmac_no != NR_WHNAT_WDMA_PORT))
return NF_ACCEPT;
if (unlikely(!skb_mac_header_was_set(skb)))
@@ -1914,7 +1914,8 @@
gmac_no == NR_WHNAT_WDMA_PORT) ||
((hnat_priv->data->version == MTK_HNAT_V2 ||
hnat_priv->data->version == MTK_HNAT_V3) &&
- (gmac_no == NR_WDMA0_PORT || gmac_no == NR_WDMA1_PORT))) {
+ (gmac_no == NR_WDMA0_PORT || gmac_no == NR_WDMA1_PORT ||
+ gmac_no == NR_WDMA2_PORT))) {
entry->ipv4_hnapt.winfo.bssid = skb_hnat_bss_id(skb);
entry->ipv4_hnapt.winfo.wcid = skb_hnat_wc_id(skb);
#if defined(CONFIG_MEDIATEK_NETSYS_V3)
@@ -1984,7 +1985,8 @@
gmac_no == NR_WHNAT_WDMA_PORT) ||
((hnat_priv->data->version == MTK_HNAT_V2 ||
hnat_priv->data->version == MTK_HNAT_V3) &&
- (gmac_no == NR_WDMA0_PORT || gmac_no == NR_WDMA1_PORT))) {
+ (gmac_no == NR_WDMA0_PORT || gmac_no == NR_WDMA1_PORT ||
+ gmac_no == NR_WDMA2_PORT))) {
entry->ipv6_5t_route.winfo.bssid = skb_hnat_bss_id(skb);
entry->ipv6_5t_route.winfo.wcid = skb_hnat_wc_id(skb);
#if defined(CONFIG_MEDIATEK_NETSYS_V3)
@@ -2063,6 +2065,8 @@
skb_hnat_sport(skb) = NR_WDMA0_PORT;
else if (skb_hnat_iface(skb) == FOE_MAGIC_WED1)
skb_hnat_sport(skb) = NR_WDMA1_PORT;
+ else if (skb_hnat_iface(skb) == FOE_MAGIC_WED2)
+ skb_hnat_sport(skb) = NR_WDMA2_PORT;
return NF_ACCEPT;
}