[][MAC80211][wifi7][Misc][Sync Internal patches to External Release Folder]
[Description]
Add 20231011 MT7996 firmware and sync patches to External Release Folder
[Release-log]
N/A
Change-Id: I8971c21f494c3947f2ac7f19b8c398488356ca59
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/8101977
diff --git a/autobuild_mac80211_release/mt7988_mt7996_mac80211/package/kernel/mt76/patches/2009-wifi-mt76-drop-packet-based-on-ind_reason.patch b/autobuild_mac80211_release/mt7988_mt7996_mac80211/package/kernel/mt76/patches/2009-wifi-mt76-drop-packet-based-on-ind_reason.patch
new file mode 100644
index 0000000..675e4eb
--- /dev/null
+++ b/autobuild_mac80211_release/mt7988_mt7996_mac80211/package/kernel/mt76/patches/2009-wifi-mt76-drop-packet-based-on-ind_reason.patch
@@ -0,0 +1,77 @@
+From f322c87d1e0634ec86acb5b254220918842132c6 Mon Sep 17 00:00:00 2001
+From: Peter Chiu <chui-hao.chiu@mediatek.com>
+Date: Wed, 26 Jul 2023 16:33:43 +0800
+Subject: [PATCH 73/98] wifi: mt76: drop packet based on ind_reason
+
+Driver should drop packet which ind_reason is REPEAT and OLDPKT.
+
+Signed-off-by: Peter Chiu <chui-hao.chiu@mediatek.com>
+Signed-off-by: sujuan.chen <sujuan.chen@mediatek.com>
+---
+ dma.c | 15 +++++++++++++--
+ dma.h | 9 +++++++++
+ 2 files changed, 22 insertions(+), 2 deletions(-)
+
+diff --git a/dma.c b/dma.c
+index 3983ebb..69e314a 100644
+--- a/dma.c
++++ b/dma.c
+@@ -435,8 +435,19 @@ mt76_dma_get_buf(struct mt76_dev *dev, struct mt76_queue *q, int idx,
+
+ if (drop) {
+ *drop = !!(ctrl & (MT_DMA_CTL_TO_HOST_A | MT_DMA_CTL_DROP));
+- if (ctrl & MT_DMA_CTL_VER_MASK)
+- *drop = !!(ctrl & MT_DMA_CTL_PN_CHK_FAIL);
++ if (ctrl & MT_DMA_CTL_VER_MASK) {
++ switch (le32_get_bits(desc->buf1, MT_DMA_IND_REASON)) {
++ case IND_REASON_REPEAT:
++ *drop = true;
++ break;
++ case IND_REASON_OLDPKT:
++ *drop = !le32_get_bits(desc->info, MT_DMA_INFO_DMA_FRAG);
++ break;
++ default:
++ *drop = !!(ctrl & MT_DMA_CTL_PN_CHK_FAIL);
++ break;
++ }
++ }
+ }
+
+ if (mt76_queue_is_wed_rx(q)) {
+diff --git a/dma.h b/dma.h
+index 22b79d5..afcbcdd 100644
+--- a/dma.h
++++ b/dma.h
+@@ -23,6 +23,7 @@
+
+ #define MT_DMA_PPE_CPU_REASON GENMASK(15, 11)
+ #define MT_DMA_PPE_ENTRY GENMASK(30, 16)
++#define MT_DMA_INFO_DMA_FRAG BIT(9)
+ #define MT_DMA_INFO_PPE_VLD BIT(31)
+
+ #define MT_DMA_CTL_PN_CHK_FAIL BIT(13)
+@@ -31,6 +32,7 @@
+ #define MT_DMA_RRO_EN BIT(13)
+
+ #define MT_DMA_WED_IND_CMD_CNT 8
++#define MT_DMA_IND_REASON GENMASK(15, 12)
+
+ #define MT_DMA_HDR_LEN 4
+ #define MT_RX_INFO_LEN 4
+@@ -66,6 +68,13 @@ enum mt76_mcu_evt_type {
+ EVT_EVENT_DFS_DETECT_RSP,
+ };
+
++enum ind_reason {
++ IND_REASON_NORMAL,
++ IND_REASON_REPEAT,
++ IND_REASON_OLDPKT,
++ IND_REASON_MAX
++};
++
+ int mt76_dma_rx_poll(struct napi_struct *napi, int budget);
+ void mt76_dma_attach(struct mt76_dev *dev);
+ void mt76_dma_cleanup(struct mt76_dev *dev);
+--
+2.18.0
+