]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net: enetc: read 64-bit statistics from port MAC counters
authorWei Fang <wei.fang@nxp.com>
Fri, 27 Jun 2025 02:11:08 +0000 (10:11 +0800)
committerJakub Kicinski <kuba@kernel.org>
Tue, 1 Jul 2025 01:23:55 +0000 (18:23 -0700)
The counters of port MAC are all 64-bit registers, and the statistics of
ethtool are u64 type, so replace enetc_port_rd() with enetc_port_rd64()
to read 64-bit statistics.

Signed-off-by: Wei Fang <wei.fang@nxp.com>
Reviewed-by: Claudiu Manoil <claudiu.manoil@nxp.com>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20250627021108.3359642-4-wei.fang@nxp.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/freescale/enetc/enetc_ethtool.c

index 2c9aa94c8e3dcc8bf3e707c13d174aa9f91b4597..961e76cd84898f459320c7c75cf74329ffa0046a 100644 (file)
@@ -320,8 +320,8 @@ static void enetc_get_ethtool_stats(struct net_device *ndev,
 static void enetc_pause_stats(struct enetc_hw *hw, int mac,
                              struct ethtool_pause_stats *pause_stats)
 {
-       pause_stats->tx_pause_frames = enetc_port_rd(hw, ENETC_PM_TXPF(mac));
-       pause_stats->rx_pause_frames = enetc_port_rd(hw, ENETC_PM_RXPF(mac));
+       pause_stats->tx_pause_frames = enetc_port_rd64(hw, ENETC_PM_TXPF(mac));
+       pause_stats->rx_pause_frames = enetc_port_rd64(hw, ENETC_PM_RXPF(mac));
 }
 
 static void enetc_get_pause_stats(struct net_device *ndev,
@@ -348,31 +348,31 @@ static void enetc_get_pause_stats(struct net_device *ndev,
 static void enetc_mac_stats(struct enetc_hw *hw, int mac,
                            struct ethtool_eth_mac_stats *s)
 {
-       s->FramesTransmittedOK = enetc_port_rd(hw, ENETC_PM_TFRM(mac));
-       s->SingleCollisionFrames = enetc_port_rd(hw, ENETC_PM_TSCOL(mac));
-       s->MultipleCollisionFrames = enetc_port_rd(hw, ENETC_PM_TMCOL(mac));
-       s->FramesReceivedOK = enetc_port_rd(hw, ENETC_PM_RFRM(mac));
-       s->FrameCheckSequenceErrors = enetc_port_rd(hw, ENETC_PM_RFCS(mac));
-       s->AlignmentErrors = enetc_port_rd(hw, ENETC_PM_RALN(mac));
-       s->OctetsTransmittedOK = enetc_port_rd(hw, ENETC_PM_TEOCT(mac));
-       s->FramesWithDeferredXmissions = enetc_port_rd(hw, ENETC_PM_TDFR(mac));
-       s->LateCollisions = enetc_port_rd(hw, ENETC_PM_TLCOL(mac));
-       s->FramesAbortedDueToXSColls = enetc_port_rd(hw, ENETC_PM_TECOL(mac));
-       s->FramesLostDueToIntMACXmitError = enetc_port_rd(hw, ENETC_PM_TERR(mac));
-       s->CarrierSenseErrors = enetc_port_rd(hw, ENETC_PM_TCRSE(mac));
-       s->OctetsReceivedOK = enetc_port_rd(hw, ENETC_PM_REOCT(mac));
-       s->FramesLostDueToIntMACRcvError = enetc_port_rd(hw, ENETC_PM_RDRNTP(mac));
-       s->MulticastFramesXmittedOK = enetc_port_rd(hw, ENETC_PM_TMCA(mac));
-       s->BroadcastFramesXmittedOK = enetc_port_rd(hw, ENETC_PM_TBCA(mac));
-       s->MulticastFramesReceivedOK = enetc_port_rd(hw, ENETC_PM_RMCA(mac));
-       s->BroadcastFramesReceivedOK = enetc_port_rd(hw, ENETC_PM_RBCA(mac));
+       s->FramesTransmittedOK = enetc_port_rd64(hw, ENETC_PM_TFRM(mac));
+       s->SingleCollisionFrames = enetc_port_rd64(hw, ENETC_PM_TSCOL(mac));
+       s->MultipleCollisionFrames = enetc_port_rd64(hw, ENETC_PM_TMCOL(mac));
+       s->FramesReceivedOK = enetc_port_rd64(hw, ENETC_PM_RFRM(mac));
+       s->FrameCheckSequenceErrors = enetc_port_rd64(hw, ENETC_PM_RFCS(mac));
+       s->AlignmentErrors = enetc_port_rd64(hw, ENETC_PM_RALN(mac));
+       s->OctetsTransmittedOK = enetc_port_rd64(hw, ENETC_PM_TEOCT(mac));
+       s->FramesWithDeferredXmissions = enetc_port_rd64(hw, ENETC_PM_TDFR(mac));
+       s->LateCollisions = enetc_port_rd64(hw, ENETC_PM_TLCOL(mac));
+       s->FramesAbortedDueToXSColls = enetc_port_rd64(hw, ENETC_PM_TECOL(mac));
+       s->FramesLostDueToIntMACXmitError = enetc_port_rd64(hw, ENETC_PM_TERR(mac));
+       s->CarrierSenseErrors = enetc_port_rd64(hw, ENETC_PM_TCRSE(mac));
+       s->OctetsReceivedOK = enetc_port_rd64(hw, ENETC_PM_REOCT(mac));
+       s->FramesLostDueToIntMACRcvError = enetc_port_rd64(hw, ENETC_PM_RDRNTP(mac));
+       s->MulticastFramesXmittedOK = enetc_port_rd64(hw, ENETC_PM_TMCA(mac));
+       s->BroadcastFramesXmittedOK = enetc_port_rd64(hw, ENETC_PM_TBCA(mac));
+       s->MulticastFramesReceivedOK = enetc_port_rd64(hw, ENETC_PM_RMCA(mac));
+       s->BroadcastFramesReceivedOK = enetc_port_rd64(hw, ENETC_PM_RBCA(mac));
 }
 
 static void enetc_ctrl_stats(struct enetc_hw *hw, int mac,
                             struct ethtool_eth_ctrl_stats *s)
 {
-       s->MACControlFramesTransmitted = enetc_port_rd(hw, ENETC_PM_TCNP(mac));
-       s->MACControlFramesReceived = enetc_port_rd(hw, ENETC_PM_RCNP(mac));
+       s->MACControlFramesTransmitted = enetc_port_rd64(hw, ENETC_PM_TCNP(mac));
+       s->MACControlFramesReceived = enetc_port_rd64(hw, ENETC_PM_RCNP(mac));
 }
 
 static const struct ethtool_rmon_hist_range enetc_rmon_ranges[] = {
@@ -389,26 +389,26 @@ static const struct ethtool_rmon_hist_range enetc_rmon_ranges[] = {
 static void enetc_rmon_stats(struct enetc_hw *hw, int mac,
                             struct ethtool_rmon_stats *s)
 {
-       s->undersize_pkts = enetc_port_rd(hw, ENETC_PM_RUND(mac));
-       s->oversize_pkts = enetc_port_rd(hw, ENETC_PM_ROVR(mac));
-       s->fragments = enetc_port_rd(hw, ENETC_PM_RFRG(mac));
-       s->jabbers = enetc_port_rd(hw, ENETC_PM_RJBR(mac));
-
-       s->hist[0] = enetc_port_rd(hw, ENETC_PM_R64(mac));
-       s->hist[1] = enetc_port_rd(hw, ENETC_PM_R127(mac));
-       s->hist[2] = enetc_port_rd(hw, ENETC_PM_R255(mac));
-       s->hist[3] = enetc_port_rd(hw, ENETC_PM_R511(mac));
-       s->hist[4] = enetc_port_rd(hw, ENETC_PM_R1023(mac));
-       s->hist[5] = enetc_port_rd(hw, ENETC_PM_R1522(mac));
-       s->hist[6] = enetc_port_rd(hw, ENETC_PM_R1523X(mac));
-
-       s->hist_tx[0] = enetc_port_rd(hw, ENETC_PM_T64(mac));
-       s->hist_tx[1] = enetc_port_rd(hw, ENETC_PM_T127(mac));
-       s->hist_tx[2] = enetc_port_rd(hw, ENETC_PM_T255(mac));
-       s->hist_tx[3] = enetc_port_rd(hw, ENETC_PM_T511(mac));
-       s->hist_tx[4] = enetc_port_rd(hw, ENETC_PM_T1023(mac));
-       s->hist_tx[5] = enetc_port_rd(hw, ENETC_PM_T1522(mac));
-       s->hist_tx[6] = enetc_port_rd(hw, ENETC_PM_T1523X(mac));
+       s->undersize_pkts = enetc_port_rd64(hw, ENETC_PM_RUND(mac));
+       s->oversize_pkts = enetc_port_rd64(hw, ENETC_PM_ROVR(mac));
+       s->fragments = enetc_port_rd64(hw, ENETC_PM_RFRG(mac));
+       s->jabbers = enetc_port_rd64(hw, ENETC_PM_RJBR(mac));
+
+       s->hist[0] = enetc_port_rd64(hw, ENETC_PM_R64(mac));
+       s->hist[1] = enetc_port_rd64(hw, ENETC_PM_R127(mac));
+       s->hist[2] = enetc_port_rd64(hw, ENETC_PM_R255(mac));
+       s->hist[3] = enetc_port_rd64(hw, ENETC_PM_R511(mac));
+       s->hist[4] = enetc_port_rd64(hw, ENETC_PM_R1023(mac));
+       s->hist[5] = enetc_port_rd64(hw, ENETC_PM_R1522(mac));
+       s->hist[6] = enetc_port_rd64(hw, ENETC_PM_R1523X(mac));
+
+       s->hist_tx[0] = enetc_port_rd64(hw, ENETC_PM_T64(mac));
+       s->hist_tx[1] = enetc_port_rd64(hw, ENETC_PM_T127(mac));
+       s->hist_tx[2] = enetc_port_rd64(hw, ENETC_PM_T255(mac));
+       s->hist_tx[3] = enetc_port_rd64(hw, ENETC_PM_T511(mac));
+       s->hist_tx[4] = enetc_port_rd64(hw, ENETC_PM_T1023(mac));
+       s->hist_tx[5] = enetc_port_rd64(hw, ENETC_PM_T1522(mac));
+       s->hist_tx[6] = enetc_port_rd64(hw, ENETC_PM_T1523X(mac));
 }
 
 static void enetc_get_eth_mac_stats(struct net_device *ndev,