[PATCH net-next v2] net: stmmac: dwmac4: Add ip payload error statistics

Minda Chen posted 1 patch 1 month, 4 weeks ago
drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.c | 2 ++
drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.h | 2 +-
2 files changed, 3 insertions(+), 1 deletion(-)
[PATCH net-next v2] net: stmmac: dwmac4: Add ip payload error statistics
Posted by Minda Chen 1 month, 4 weeks ago
Add dwmac4 ip payload error statistics, and rename discripter bit macro
because latest version descriptor IPCE bit claims ip checksum error or
l4 segment length error.

Signed-off-by: Minda Chen <minda.chen@starfivetech.com>
---
 drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.c | 2 ++
 drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.h | 2 +-
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.c b/drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.c
index e99401bcc1f8..a5fb31eb0192 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.c
@@ -118,6 +118,8 @@ static int dwmac4_wrback_get_rx_status(struct stmmac_extra_stats *x,
 		x->ipv4_pkt_rcvd++;
 	if (rdes1 & RDES1_IPV6_HEADER)
 		x->ipv6_pkt_rcvd++;
+	if (rdes1 & RDES1_IP_PAYLOAD_ERROR)
+		x->ip_payload_err++;
 
 	if (message_type == RDES_EXT_NO_PTP)
 		x->no_ptp_rx_msg_type_ext++;
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.h b/drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.h
index 6da070ccd737..1ce6f43d545a 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.h
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.h
@@ -95,7 +95,7 @@
 #define RDES1_IPV4_HEADER		BIT(4)
 #define RDES1_IPV6_HEADER		BIT(5)
 #define RDES1_IP_CSUM_BYPASSED		BIT(6)
-#define RDES1_IP_CSUM_ERROR		BIT(7)
+#define RDES1_IP_PAYLOAD_ERROR		BIT(7)
 #define RDES1_PTP_MSG_TYPE_MASK		GENMASK(11, 8)
 #define RDES1_PTP_PACKET_TYPE		BIT(12)
 #define RDES1_PTP_VER			BIT(13)
-- 
2.17.1
Re: [PATCH net-next v2] net: stmmac: dwmac4: Add ip payload error statistics
Posted by Serge Semin 1 month, 3 weeks ago
Hi Minda

On Mon, Sep 30, 2024 at 07:02:05PM GMT, Minda Chen wrote:

Since v3 is going to be required anyway, here are several nitpicks:

> Add dwmac4 ip payload error statistics, and rename discripter bit macro
> because latest version descriptor IPCE bit claims ip checksum error or
> l4 segment length error.

s/dwmac4/DW QoS Eth v4/v5
s/ip/IP

L4-segment is a too broad definition in this case. The doc says about
just three protocols: TCP, UDP, or ICMP, so

s/l4/TCP, UDP, or ICMP

Other than that the change looks good.

Reviewed-by: Serge Semin <fancer.lancer@gmail.com>

-Serge(y)

> 
> Signed-off-by: Minda Chen <minda.chen@starfivetech.com>
> ---
>  drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.c | 2 ++
>  drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.h | 2 +-
>  2 files changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.c b/drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.c
> index e99401bcc1f8..a5fb31eb0192 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.c
> +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.c
> @@ -118,6 +118,8 @@ static int dwmac4_wrback_get_rx_status(struct stmmac_extra_stats *x,
>  		x->ipv4_pkt_rcvd++;
>  	if (rdes1 & RDES1_IPV6_HEADER)
>  		x->ipv6_pkt_rcvd++;
> +	if (rdes1 & RDES1_IP_PAYLOAD_ERROR)
> +		x->ip_payload_err++;
>  
>  	if (message_type == RDES_EXT_NO_PTP)
>  		x->no_ptp_rx_msg_type_ext++;
> diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.h b/drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.h
> index 6da070ccd737..1ce6f43d545a 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.h
> +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.h
> @@ -95,7 +95,7 @@
>  #define RDES1_IPV4_HEADER		BIT(4)
>  #define RDES1_IPV6_HEADER		BIT(5)
>  #define RDES1_IP_CSUM_BYPASSED		BIT(6)
> -#define RDES1_IP_CSUM_ERROR		BIT(7)
> +#define RDES1_IP_PAYLOAD_ERROR		BIT(7)
>  #define RDES1_PTP_MSG_TYPE_MASK		GENMASK(11, 8)
>  #define RDES1_PTP_PACKET_TYPE		BIT(12)
>  #define RDES1_PTP_VER			BIT(13)
> -- 
> 2.17.1
> 
>
Re: [PATCH net-next v2] net: stmmac: dwmac4: Add ip payload error statistics
Posted by Jakub Kicinski 1 month, 3 weeks ago
On Mon, 30 Sep 2024 19:02:05 +0800 Minda Chen wrote:
> Add dwmac4 ip payload error statistics, and rename discripter bit macro

descriptor
        ^

> because latest version descriptor IPCE bit claims ip checksum error or
> l4 segment length error.

What is an L4 segment length error on Rx?
Seems to me that reusing ip_payload_err here will be confusing
-- 
pw-bot: cr
Re: [PATCH net-next v2] net: stmmac: dwmac4: Add ip payload error statistics
Posted by Serge Semin 1 month, 3 weeks ago
Hi Jakub

On Wed, Oct 02, 2024 at 06:58:01AM GMT, Jakub Kicinski wrote:
> On Mon, 30 Sep 2024 19:02:05 +0800 Minda Chen wrote:
> > Add dwmac4 ip payload error statistics, and rename discripter bit macro
> 
> descriptor
>         ^
> 
> > because latest version descriptor IPCE bit claims ip checksum error or
> > l4 segment length error.
> 

> What is an L4 segment length error on Rx?
> Seems to me that reusing ip_payload_err here will be confusing

From the current "ip_payload_err" field semantics, Minda is correct to
use it for the Rx IP-payload error statistics. Here is the definition
of the IPCE flag (part of the RDES4 descriptor field) cited from the
Synopsys DW QoS Eth v5 HW-manual:

Bit  Name  Description
 7   IPCE  IP Payload Error
           When this bit is set, it indicates either of the following:
           ■ The 16-bit IP payload checksum (that is, the TCP, UDP, or ICMP checksum) calculated by the
             MAC does not match the corresponding checksum field in the received segment.
           ■ The TCP, UDP, or ICMP segment length does not match the payload length value in the IP Header
             field.
           ■ The TCP, UDP, or ICMP segment length is less than minimum allowed segment length for TCP,
             UDP, or ICMP.

It almost word-by-word matches to what is defined for the
ERDES4_IP_PAYLOAD_ERR flag (part of the Extended RDES4 descriptor
field) in DW GMAC v3.x HW-manual for which the
stmmac_stats::ip_payload_err field has been added in the first place.
Note the name of the flag in the descriptor matches to what is declared in
the stmmac_stats structure.

So based on that I don't see any problem with the patch except some
minor patch-log issues I mentioned in another message.

-Serge(y)

> -- 
> pw-bot: cr
> 
Re: [PATCH net-next v2] net: stmmac: dwmac4: Add ip payload error statistics
Posted by Jakub Kicinski 1 month, 3 weeks ago
On Wed, 2 Oct 2024 21:35:30 +0300 Serge Semin wrote:
> It almost word-by-word matches to what is defined for the
> ERDES4_IP_PAYLOAD_ERR flag (part of the Extended RDES4 descriptor
> field) in DW GMAC v3.x HW-manual for which the
> stmmac_stats::ip_payload_err field has been added in the first place.
> Note the name of the flag in the descriptor matches to what is declared in
> the stmmac_stats structure.

I misread the ERDES4_IP_PAYLOAD_ERR as a Tx flag, somehow. All good
then.
Re: [PATCH net-next v2] net: stmmac: dwmac4: Add ip payload error statistics
Posted by Simon Horman 1 month, 4 weeks ago
On Mon, Sep 30, 2024 at 07:02:05PM +0800, Minda Chen wrote:
> Add dwmac4 ip payload error statistics, and rename discripter bit macro
> because latest version descriptor IPCE bit claims ip checksum error or
> l4 segment length error.
> 
> Signed-off-by: Minda Chen <minda.chen@starfivetech.com>

Reviewed-by: Simon Horman <horms@kernel.org>