Patch "net: stmmac: Fix queue statistics reading" has been added to the 5.15-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    net: stmmac: Fix queue statistics reading

to the 5.15-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     net-stmmac-fix-queue-statistics-reading.patch
and it can be found in the queue-5.15 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 1c0f8dc629939a940d4b0d8c08a7873e36d05b7d
Author: Kurt Kanzenbach <kurt@xxxxxxxxxxxxx>
Date:   Sat Jan 14 13:04:37 2023 +0100

    net: stmmac: Fix queue statistics reading
    
    [ Upstream commit c296c77efb66994d94d9f706446a115581226550 ]
    
    Correct queue statistics reading. All queue statistics are stored as unsigned
    long values. The retrieval for ethtool fetches these values as u64. However, on
    some systems the size of the counters are 32 bit. That yields wrong queue
    statistic counters e.g., on arm32 systems such as the stm32mp157. Fix it by
    using the correct data type.
    
    Tested on Olimex STMP157-OLinuXino-LIME2 by simple running linuxptp for a short
    period of time:
    
    Non-patched kernel:
    |root@st1:~# ethtool -S eth0 | grep q0
    |     q0_tx_pkt_n: 3775276254951 # ???
    |     q0_tx_irq_n: 879
    |     q0_rx_pkt_n: 1194000908909 # ???
    |     q0_rx_irq_n: 278
    
    Patched kernel:
    |root@st1:~# ethtool -S eth0 | grep q0
    |     q0_tx_pkt_n: 2434
    |     q0_tx_irq_n: 1274
    |     q0_rx_pkt_n: 1604
    |     q0_rx_irq_n: 846
    
    Fixes: 68e9c5dee1cf ("net: stmmac: add ethtool per-queue statistic framework")
    Signed-off-by: Kurt Kanzenbach <kurt@xxxxxxxxxxxxx>
    Cc: Vijayakannan Ayyathurai <vijayakannan.ayyathurai@xxxxxxxxx>
    Cc: Wong Vee Khee <vee.khee.wong@xxxxxxxxxxxxxxx>
    Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c
index dc31501fec8f..9e8ae4384e4f 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c
@@ -548,16 +548,16 @@ static void stmmac_get_per_qstats(struct stmmac_priv *priv, u64 *data)
 		p = (char *)priv + offsetof(struct stmmac_priv,
 					    xstats.txq_stats[q].tx_pkt_n);
 		for (stat = 0; stat < STMMAC_TXQ_STATS; stat++) {
-			*data++ = (*(u64 *)p);
-			p += sizeof(u64 *);
+			*data++ = (*(unsigned long *)p);
+			p += sizeof(unsigned long);
 		}
 	}
 	for (q = 0; q < rx_cnt; q++) {
 		p = (char *)priv + offsetof(struct stmmac_priv,
 					    xstats.rxq_stats[q].rx_pkt_n);
 		for (stat = 0; stat < STMMAC_RXQ_STATS; stat++) {
-			*data++ = (*(u64 *)p);
-			p += sizeof(u64 *);
+			*data++ = (*(unsigned long *)p);
+			p += sizeof(unsigned long);
 		}
 	}
 }



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux