net: stmmac: Add DW QoS Eth v4/v5 ip payload error statistics
authorMinda Chen <minda.chen@starfivetech.com>
Tue, 8 Oct 2024 11:14:43 +0000 (19:14 +0800)
committerJakub Kicinski <kuba@kernel.org>
Thu, 10 Oct 2024 02:48:58 +0000 (19:48 -0700)
Add DW QoS Eth v4/v5 ip payload error statistics, and rename descriptor
bit macro because v4/v5 descriptor IPCE bit claims ip checksum
error or TCP/UDP/ICMP segment length error.

Here is bit description from DW QoS Eth data book(Part 19.6.2.2)

bit7 IPCE: IP Payload Error
When this bit is programmed, it indicates either of the following:
1).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.
2).The TCP, UDP, or ICMP segment length does not match the payload
   length value in the IP  Header field.
3).The TCP, UDP, or ICMP segment length is less than minimum allowed
   segment length for TCP, UDP, or ICMP.

Signed-off-by: Minda Chen <minda.chen@starfivetech.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Reviewed-by: Serge Semin <fancer.lancer@gmail.com>
Link: https://patch.msgid.link/20241008111443.81467-1-minda.chen@starfivetech.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.c
drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.h

index e99401bcc1f84b10cee02ab1ff90757d8c968d24..a5fb31eb0192f255698afffb44e9602b32c26314 100644 (file)
@@ -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++;
index 6da070ccd73746664721a297d89c31b0449554bc..1ce6f43d545ae6dfe1a82714443d9c84dd4afe0c 100644 (file)
@@ -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)