From 4c8f0a38d9c2df3815ace32133bb63d8a4345856 Mon Sep 17 00:00:00 2001
From: Sujuan Chen <sujuan.chen@mediatek.com>
Date: Tue, 27 Dec 2022 10:14:35 +0800
Subject: [PATCH] mediatek: ethernet: add wifi2wifi offload support

Signed-off-by: Sujuan Chen <sujuan.chen@mediatek.com>
---
 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 b935de6..acefa48 100644
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
@@ -1767,6 +1767,8 @@ void ethsys_reset(struct mtk_eth *eth, u32 reset_bits);
 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);
 
 int mtk_ppe_debugfs_init(struct mtk_eth *eth);
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 2787a97..23d2048
--- a/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
+++ b/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
@@ -546,10 +546,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;
@@ -577,17 +587,22 @@ 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;
 	struct nf_flowtable *flowtable;
 	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;
+	}
+
 	flowtable = container_of(f->block, struct nf_flowtable, flow_block);
 
 	for (i = 0; i < eth->ppe_num; i++) {
@@ -610,7 +625,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;
@@ -647,7 +662,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 1a615f2..37a86c3 100644
--- a/drivers/net/ethernet/mediatek/mtk_wed.c
+++ b/drivers/net/ethernet/mediatek/mtk_wed.c
@@ -1731,6 +1731,18 @@ out:
 	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)
 
@@ -1749,6 +1761,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

