[][Fix mt7915 wds t-put drop to 0 issue]
[Description]
Fix mt7915 wds t-put drop to 0 issue
mt7915 wds should set real wcid, don't overwrite txd since mt7915 only
support 256 sta
[Release-log]
N/A
Change-Id: I749c332ccc52a3e730808f068068a0fd0362c411
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/6510406
diff --git a/autobuild_mac80211_release/target/linux/mediatek/patches-5.4/9996-add-wed-tx-wds-support-for-mt7986.patch b/autobuild_mac80211_release/target/linux/mediatek/patches-5.4/9996-add-wed-tx-wds-support-for-mt7986.patch
index 27977ac..d17f43d 100755
--- a/autobuild_mac80211_release/target/linux/mediatek/patches-5.4/9996-add-wed-tx-wds-support-for-mt7986.patch
+++ b/autobuild_mac80211_release/target/linux/mediatek/patches-5.4/9996-add-wed-tx-wds-support-for-mt7986.patch
@@ -5,15 +5,24 @@
Signed-off-by: Sujuan Chen <sujuan.chen@mediatek.com>
---
- drivers/net/ethernet/mediatek/mtk_wed.c | 6 ++++++
+ drivers/net/ethernet/mediatek/mtk_wed.c | 8 +++++++-
drivers/net/ethernet/mediatek/mtk_wed_regs.h | 1 +
- include/linux/soc/mediatek/mtk_wed.h | 1 +
- 3 files changed, 8 insertions(+)
+ include/linux/soc/mediatek/mtk_wed.h | 3 +++
+ 3 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/mediatek/mtk_wed.c b/drivers/net/ethernet/mediatek/mtk_wed.c
-index 48b0353..2700176 100644
+index 48b0353..472726e 100644
--- a/drivers/net/ethernet/mediatek/mtk_wed.c
+++ b/drivers/net/ethernet/mediatek/mtk_wed.c
+@@ -797,7 +797,7 @@ mtk_wed_start(struct mtk_wed_device *dev, u32 irq_mask)
+ val |= BIT(0);
+ regmap_write(dev->hw->mirror, dev->hw->index * 4, val);
+ } else {
+- mtk_wed_set_512_support(dev, true);
++ mtk_wed_set_512_support(dev, dev->wlan.wcid_512);
+ }
+
+ mtk_wed_dma_enable(dev);
@@ -809,6 +809,7 @@ mtk_wed_attach(struct mtk_wed_device *dev)
__releases(RCU)
{
@@ -47,7 +56,7 @@
#define MTK_WED_RESET 0x008
#define MTK_WED_RESET_TX_BM BIT(0)
diff --git a/include/linux/soc/mediatek/mtk_wed.h b/include/linux/soc/mediatek/mtk_wed.h
-index ffd547a..631360b 100644
+index ffd547a..e914cb4 100644
--- a/include/linux/soc/mediatek/mtk_wed.h
+++ b/include/linux/soc/mediatek/mtk_wed.h
@@ -42,6 +42,7 @@ struct mtk_wed_device {
@@ -58,6 +67,15 @@
struct mtk_wed_ring tx_ring[MTK_WED_TX_QUEUES];
struct mtk_wed_ring txfree_ring;
+@@ -72,6 +73,8 @@ struct mtk_wed_device {
+ u16 token_start;
+ unsigned int nbuf;
+
++ bool wcid_512;
++
+ u32 (*init_buf)(void *ptr, dma_addr_t phys, int token_id);
+ int (*offload_enable)(struct mtk_wed_device *wed);
+ void (*offload_disable)(struct mtk_wed_device *wed);
--
2.18.0
diff --git a/autobuild_mac80211_release/target/linux/mediatek/patches-5.4/9997-add-wed-rx-support-for-mt7896.patch b/autobuild_mac80211_release/target/linux/mediatek/patches-5.4/9997-add-wed-rx-support-for-mt7896.patch
index 64c3d33..e99920a 100644
--- a/autobuild_mac80211_release/target/linux/mediatek/patches-5.4/9997-add-wed-rx-support-for-mt7896.patch
+++ b/autobuild_mac80211_release/target/linux/mediatek/patches-5.4/9997-add-wed-rx-support-for-mt7896.patch
@@ -996,7 +996,7 @@
val |= BIT(0);
regmap_write(dev->hw->mirror, dev->hw->index * 4, val);
} else {
-- mtk_wed_set_512_support(dev, true);
+- mtk_wed_set_512_support(dev, dev->wlan.wcid_512);
+ /* driver set mid ready and only once */
+ wed_w32(dev, MTK_WED_EXT_INT_MASK1,
+ MTK_WED_EXT_INT_STATUS_WPDMA_MID_RDY);
@@ -1010,7 +1010,7 @@
+ if (ret)
+ return;
}
-+ mtk_wed_set_512_support(dev, true);
++ mtk_wed_set_512_support(dev, dev->wlan.wcid_512);
mtk_wed_dma_enable(dev);
dev->running = true;
@@ -3447,7 +3447,7 @@
+#endif
+
diff --git a/include/linux/soc/mediatek/mtk_wed.h b/include/linux/soc/mediatek/mtk_wed.h
-index 631360b..393f3ca 100644
+index e914cb4..cfa1120 100644
--- a/include/linux/soc/mediatek/mtk_wed.h
+++ b/include/linux/soc/mediatek/mtk_wed.h
@@ -7,6 +7,9 @@
@@ -3494,7 +3494,7 @@
struct mtk_wed_device {
#ifdef CONFIG_NET_MEDIATEK_SOC_WED
const struct mtk_wed_ops *ops;
-@@ -47,35 +77,54 @@ struct mtk_wed_device {
+@@ -47,37 +77,56 @@ struct mtk_wed_device {
struct mtk_wed_ring tx_ring[MTK_WED_TX_QUEUES];
struct mtk_wed_ring txfree_ring;
struct mtk_wed_ring tx_wdma[MTK_WED_TX_QUEUES];
@@ -3543,6 +3543,8 @@
+ unsigned int rx_pkt;
+ unsigned int rx_pkt_size;
+ bool wcid_512;
+
u32 (*init_buf)(void *ptr, dma_addr_t phys, int token_id);
int (*offload_enable)(struct mtk_wed_device *wed);
void (*offload_disable)(struct mtk_wed_device *wed);
@@ -3554,7 +3556,7 @@
} wlan;
#endif
};
-@@ -86,6 +135,10 @@ struct mtk_wed_ops {
+@@ -88,6 +137,10 @@ struct mtk_wed_ops {
void __iomem *regs);
int (*txfree_ring_setup)(struct mtk_wed_device *dev,
void __iomem *regs);
@@ -3565,7 +3567,7 @@
void (*detach)(struct mtk_wed_device *dev);
void (*stop)(struct mtk_wed_device *dev);
-@@ -97,6 +150,8 @@ struct mtk_wed_ops {
+@@ -99,6 +152,8 @@ struct mtk_wed_ops {
u32 (*irq_get)(struct mtk_wed_device *dev, u32 mask);
void (*irq_set_mask)(struct mtk_wed_device *dev, u32 mask);
@@ -3574,7 +3576,7 @@
};
extern const struct mtk_wed_ops __rcu *mtk_soc_wed_ops;
-@@ -129,6 +184,10 @@ mtk_wed_device_attach(struct mtk_wed_device *dev)
+@@ -131,6 +186,10 @@ mtk_wed_device_attach(struct mtk_wed_device *dev)
(_dev)->ops->tx_ring_setup(_dev, _ring, _regs)
#define mtk_wed_device_txfree_ring_setup(_dev, _regs) \
(_dev)->ops->txfree_ring_setup(_dev, _regs)
@@ -3585,7 +3587,7 @@
#define mtk_wed_device_reg_read(_dev, _reg) \
(_dev)->ops->reg_read(_dev, _reg)
#define mtk_wed_device_reg_write(_dev, _reg, _val) \
-@@ -137,6 +196,8 @@ mtk_wed_device_attach(struct mtk_wed_device *dev)
+@@ -139,6 +198,8 @@ mtk_wed_device_attach(struct mtk_wed_device *dev)
(_dev)->ops->irq_get(_dev, _mask)
#define mtk_wed_device_irq_set_mask(_dev, _mask) \
(_dev)->ops->irq_set_mask(_dev, _mask)
@@ -3594,7 +3596,7 @@
#else
static inline bool mtk_wed_device_active(struct mtk_wed_device *dev)
{
-@@ -146,10 +207,13 @@ static inline bool mtk_wed_device_active(struct mtk_wed_device *dev)
+@@ -148,10 +209,13 @@ static inline bool mtk_wed_device_active(struct mtk_wed_device *dev)
#define mtk_wed_device_start(_dev, _mask) do {} while (0)
#define mtk_wed_device_tx_ring_setup(_dev, _ring, _regs) -ENODEV
#define mtk_wed_device_txfree_ring_setup(_dev, _ring, _regs) -ENODEV