blob: 2e80514c5dd9c8bc590dbee611b4f5b05eb0e068 [file] [log] [blame]
From 508070a74e55bbdc06b8865736301f568feb8e9f 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 2010/2012] 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 415121f74..7e3d0393b 100644
--- a/dma.c
+++ b/dma.c
@@ -436,8 +436,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 480370928..f83604537 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_MAGIC_EN BIT(13)
#define MT_DMA_IND_CMD_MAGIC_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.39.2