]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
net: airoha: Fix NPU RX DMA descriptor bits
authorChristian Marangi <ansuelsmth@gmail.com>
Mon, 18 May 2026 13:44:57 +0000 (15:44 +0200)
committerJakub Kicinski <kuba@kernel.org>
Wed, 20 May 2026 02:05:20 +0000 (19:05 -0700)
In an internal review from Airoha, it was notice that the RX DMA descriptor
bits and mask are wrong. These values probably refer to an old NPU firmware
never published. The previous value works correctly but it was reported
that in some specific condition in mixed scenario with both Ethernet and
WiFi offload it's possible that RX DMA descriptor signal wrong value with
the problem to the RX ring or packets getting dropped.

To handle these specific scenario, apply the new suggested bits mask from
Airoha.

Correct functionality of both AN7581 NPU and MT7996 variant were verified
and confirmed working.

Fixes: a7fc8c641cab ("net: airoha: Fix npu rx DMA definitions")
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Acked-by: Lorenzo Bianconi <lorenzo@kernel.org>
Link: https://patch.msgid.link/20260518134530.3683-1-ansuelsmth@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/linux/soc/airoha/airoha_offload.h

index d01ef4a6b3d7cef2e8dd0cbaf183fd6cc040c45b..7589fccfeef6dbbd3126f4f029057821d4dcbfa4 100644 (file)
@@ -71,9 +71,9 @@ static inline void airoha_ppe_dev_check_skb(struct airoha_ppe_dev *dev,
 #define NPU_RX1_DESC_NUM       512
 
 /* CTRL */
-#define NPU_RX_DMA_DESC_LAST_MASK      BIT(27)
-#define NPU_RX_DMA_DESC_LEN_MASK       GENMASK(26, 14)
-#define NPU_RX_DMA_DESC_CUR_LEN_MASK   GENMASK(13, 1)
+#define NPU_RX_DMA_DESC_LAST_MASK      BIT(29)
+#define NPU_RX_DMA_DESC_LEN_MASK       GENMASK(28, 15)
+#define NPU_RX_DMA_DESC_CUR_LEN_MASK   GENMASK(14, 1)
 #define NPU_RX_DMA_DESC_DONE_MASK      BIT(0)
 /* INFO */
 #define NPU_RX_DMA_PKT_COUNT_MASK      GENMASK(31, 29)