From d3183ad9ed0a8a35047a37f30d85f920a729897c Mon Sep 17 00:00:00 2001
From: Sujuan Chen <sujuan.chen@mediatek.com>
Date: Mon, 18 Sep 2023 11:16:18 +0800
Subject: [PATCH 17/22] mediatek-ethernet-add-wifi2wifi-offload-support

---
 drivers/net/ethernet/mediatek/mtk_eth_soc.h   |  2 ++
 .../net/ethernet/mediatek/mtk_ppe_offload.c   | 35 +++++++++++++------
 drivers/net/ethernet/mediatek/mtk_wed.c       | 13 +++++++
 include/linux/soc/mediatek/mtk_wed.h          |  6 +++-
 4 files changed, 45 insertions(+), 11 deletions(-)
 mode change 100755 => 100644 drivers/net/ethernet/mediatek/mtk_ppe_offload.c

diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.h b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
index 23c5f49..ee89b4c 100644
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
@@ -2027,6 +2027,8 @@ void mtk_usxgmii_link_poll(struct work_struct *work);
 int mtk_eth_offload_init(struct mtk_eth *eth, int id);
 int mtk_eth_setup_tc(struct net_device *dev, enum tc_setup_type type,
 		     void *type_data);
+int mtk_eth_setup_tc_block(struct net_device *dev, struct flow_block_offload *f,
+			   struct mtk_eth *eth);
 void mtk_eth_set_dma_device(struct mtk_eth *eth, struct device *dma_dev);
 u32 mtk_rss_indr_table(struct mtk_rss_params *rss_params, int index);
 
diff --git a/drivers/net/ethernet/mediatek/mtk_ppe_offload.c b/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
old mode 100755
new mode 100644
index f0c63da..c1cce76
--- a/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
+++ b/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
@@ -563,10 +563,20 @@ static int
 mtk_eth_setup_tc_block_cb(enum tc_setup_type type, void *type_data, void *cb_priv)
 {
 	struct flow_cls_offload *cls = type_data;
-	struct net_device *dev = cb_priv;
-	struct mtk_mac *mac = netdev_priv(dev);
-	struct mtk_eth *eth = mac->hw;
-	int err;
+	struct mtk_eth *eth = cb_priv;
+	struct net_device *dev = NULL;
+	int i, err;
+
+	for (i = 0; i < MTK_MAC_COUNT; i++) {
+		if (!eth->netdev[i])
+			continue;
+
+		dev = eth->netdev[i];
+		break;
+	}
+
+	if (!dev)
+		return -EOPNOTSUPP;
 
 	if (!tc_can_offload(dev))
 		return -EOPNOTSUPP;
@@ -594,16 +604,21 @@ mtk_eth_setup_tc_block_cb(enum tc_setup_type type, void *type_data, void *cb_pri
 	return err;
 }
 
-static int
-mtk_eth_setup_tc_block(struct net_device *dev, struct flow_block_offload *f)
+int
+mtk_eth_setup_tc_block(struct net_device *dev, struct flow_block_offload *f,
+		       struct mtk_eth *eth)
 {
-	struct mtk_mac *mac = netdev_priv(dev);
-	struct mtk_eth *eth = mac->hw;
+	struct mtk_mac *mac;
 	static LIST_HEAD(block_cb_list);
 	struct flow_block_cb *block_cb;
 	flow_setup_cb_t *cb;
 	int i, err = 0;
 
+	if (!eth) {
+		mac = netdev_priv(dev);
+		eth = mac->hw;
+	}
+
 	for (i = 0; i < eth->ppe_num; i++) {
 		if (!eth->ppe[i] || !eth->ppe[i]->foe_table)
 			return -EOPNOTSUPP;
@@ -622,7 +637,7 @@ mtk_eth_setup_tc_block(struct net_device *dev, struct flow_block_offload *f)
 			flow_block_cb_incref(block_cb);
 			goto unlock;
 		}
-		block_cb = flow_block_cb_alloc(cb, dev, dev, NULL);
+		block_cb = flow_block_cb_alloc(cb, dev, eth, NULL);
 		if (IS_ERR(block_cb)) {
 			err = PTR_ERR(block_cb);
 			goto unlock;
@@ -658,7 +673,7 @@ int mtk_eth_setup_tc(struct net_device *dev, enum tc_setup_type type,
 	switch (type) {
 	case TC_SETUP_BLOCK:
 	case TC_SETUP_FT:
-		return mtk_eth_setup_tc_block(dev, type_data);
+		return mtk_eth_setup_tc_block(dev, type_data, NULL);
 	default:
 		return -EOPNOTSUPP;
 	}
diff --git a/drivers/net/ethernet/mediatek/mtk_wed.c b/drivers/net/ethernet/mediatek/mtk_wed.c
index ae31412..3e760f7 100644
--- a/drivers/net/ethernet/mediatek/mtk_wed.c
+++ b/drivers/net/ethernet/mediatek/mtk_wed.c
@@ -1733,6 +1733,18 @@ void mtk_wed_flow_remove(int index)
 	mutex_unlock(&hw_lock);
 }
 
+static int mtk_wed_eth_setup_tc(struct mtk_wed_device *wed, struct net_device *dev,
+		int type, void *type_data)
+{
+	switch (type) {
+	case TC_SETUP_BLOCK:
+	case TC_SETUP_FT:
+		return mtk_eth_setup_tc_block(dev, type_data, wed->hw->eth);
+	default:
+		return -EOPNOTSUPP;
+	}
+}
+
 void mtk_wed_add_hw(struct device_node *np, struct mtk_eth *eth,
 			void __iomem *wdma, u32 wdma_phy, int index)
 
@@ -1751,6 +1763,7 @@ void mtk_wed_add_hw(struct device_node *np, struct mtk_eth *eth,
 		.irq_get = mtk_wed_irq_get,
 		.irq_set_mask = mtk_wed_irq_set_mask,
 		.detach = mtk_wed_detach,
+		.setup_tc = mtk_wed_eth_setup_tc,
 		.ppe_check = mtk_wed_ppe_check,
 	};
 	struct device_node *eth_np = eth->dev->of_node;
diff --git a/include/linux/soc/mediatek/mtk_wed.h b/include/linux/soc/mediatek/mtk_wed.h
index 98ed390..27cf284 100644
--- a/include/linux/soc/mediatek/mtk_wed.h
+++ b/include/linux/soc/mediatek/mtk_wed.h
@@ -183,7 +183,8 @@ struct mtk_wed_ops {
 	int (*msg_update)(struct mtk_wed_device *dev, int cmd_id,
 			  void *data, int len);
 	void (*detach)(struct mtk_wed_device *dev);
-
+	int (*setup_tc)(struct mtk_wed_device *wed, struct net_device *dev,
+			 int type, void *type_data);
 	void (*stop)(struct mtk_wed_device *dev);
 	void (*start)(struct mtk_wed_device *dev, u32 irq_mask);
 	void (*reset_dma)(struct mtk_wed_device *dev);
@@ -232,6 +233,8 @@ mtk_wed_get_rx_capa(struct mtk_wed_device *dev)
 #ifdef CONFIG_NET_MEDIATEK_SOC_WED
 #define mtk_wed_device_active(_dev) !!(_dev)->ops
 #define mtk_wed_device_detach(_dev) (_dev)->ops->detach(_dev)
+#define mtk_wed_device_setup_tc(_dev, _ndev, _type, _data) \
+	(_dev)->ops->setup_tc(_dev, _ndev, _type, _data)
 #define mtk_wed_device_start(_dev, _mask) (_dev)->ops->start(_dev, _mask)
 #define mtk_wed_device_stop(_dev) (_dev)->ops->stop(_dev)
 #define mtk_wed_device_tx_ring_setup(_dev, _ring, _regs, _reset) \
@@ -270,6 +273,7 @@ static inline bool mtk_wed_device_active(struct mtk_wed_device *dev)
 #define mtk_wed_device_irq_get(_dev, _mask) 0
 #define mtk_wed_device_irq_set_mask(_dev, _mask) do {} while (0)
 #define mtk_wed_device_dma_reset(_dev) do {} while (0)
+#define mtk_wed_device_setup_tc(_dev, _ndev, _type, _data) do {} while (0)
 #define mtk_wed_device_ppe_check(_dev, _hash)  do {} while (0)
 #endif
 
-- 
2.18.0

