[PATCH RESEND net] net: airoha: Fix NPU RX DMA descriptor bits

Christian Marangi posted 1 patch 6 days, 14 hours ago
include/linux/soc/airoha/airoha_offload.h | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
[PATCH RESEND net] net: airoha: Fix NPU RX DMA descriptor bits
Posted by Christian Marangi 6 days, 14 hours ago
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>
---
 include/linux/soc/airoha/airoha_offload.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/include/linux/soc/airoha/airoha_offload.h b/include/linux/soc/airoha/airoha_offload.h
index d01ef4a6b3d7..7589fccfeef6 100644
--- a/include/linux/soc/airoha/airoha_offload.h
+++ b/include/linux/soc/airoha/airoha_offload.h
@@ -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)
-- 
2.53.0
Re: [PATCH RESEND net] net: airoha: Fix NPU RX DMA descriptor bits
Posted by Lorenzo Bianconi 6 days, 13 hours ago
> 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>

> ---
>  include/linux/soc/airoha/airoha_offload.h | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/include/linux/soc/airoha/airoha_offload.h b/include/linux/soc/airoha/airoha_offload.h
> index d01ef4a6b3d7..7589fccfeef6 100644
> --- a/include/linux/soc/airoha/airoha_offload.h
> +++ b/include/linux/soc/airoha/airoha_offload.h
> @@ -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)
> -- 
> 2.53.0
>