Patch "net: stmmac: Fix queue statistics reading" has been added to the 6.1-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 6.1-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-6.1 subdirectory.

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



commit 3144fa5e22f2cc0fb775e4843ad3a3c745e6f623
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 f453b0d09366..35c8dd92d369 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c
@@ -551,16 +551,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