Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net: ncsi: Fix GCPS 64-bit member variables

Correct Get Controller Packet Statistics (GCPS) 64-bit wide member
variables, as per DSP0222 v1.0.0 and forward specs. The Driver currently
collects these stats, but they are yet to be exposed to the user.
Therefore, no user impact.

Statistics fixes:
Total Bytes Received (byte range 28..35)
Total Bytes Transmitted (byte range 36..43)
Total Unicast Packets Received (byte range 44..51)
Total Multicast Packets Received (byte range 52..59)
Total Broadcast Packets Received (byte range 60..67)
Total Unicast Packets Transmitted (byte range 68..75)
Total Multicast Packets Transmitted (byte range 76..83)
Total Broadcast Packets Transmitted (byte range 84..91)
Valid Bytes Received (byte range 204..11)

Signed-off-by: Hari Kalavakunta <kalavakunta.hari.prasad@gmail.com>
Reviewed-by: Paul Fertser <fercerpav@gmail.com>
Link: https://patch.msgid.link/20250410012309.1343-1-kalavakunta.hari.prasad@gmail.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>

authored by

Hari Kalavakunta and committed by
Paolo Abeni
e8a1bd83 8c9b406f

+31 -34
+10 -11
net/ncsi/internal.h
··· 143 143 }; 144 144 145 145 struct ncsi_channel_stats { 146 - u32 hnc_cnt_hi; /* Counter cleared */ 147 - u32 hnc_cnt_lo; /* Counter cleared */ 148 - u32 hnc_rx_bytes; /* Rx bytes */ 149 - u32 hnc_tx_bytes; /* Tx bytes */ 150 - u32 hnc_rx_uc_pkts; /* Rx UC packets */ 151 - u32 hnc_rx_mc_pkts; /* Rx MC packets */ 152 - u32 hnc_rx_bc_pkts; /* Rx BC packets */ 153 - u32 hnc_tx_uc_pkts; /* Tx UC packets */ 154 - u32 hnc_tx_mc_pkts; /* Tx MC packets */ 155 - u32 hnc_tx_bc_pkts; /* Tx BC packets */ 146 + u64 hnc_cnt; /* Counter cleared */ 147 + u64 hnc_rx_bytes; /* Rx bytes */ 148 + u64 hnc_tx_bytes; /* Tx bytes */ 149 + u64 hnc_rx_uc_pkts; /* Rx UC packets */ 150 + u64 hnc_rx_mc_pkts; /* Rx MC packets */ 151 + u64 hnc_rx_bc_pkts; /* Rx BC packets */ 152 + u64 hnc_tx_uc_pkts; /* Tx UC packets */ 153 + u64 hnc_tx_mc_pkts; /* Tx MC packets */ 154 + u64 hnc_tx_bc_pkts; /* Tx BC packets */ 156 155 u32 hnc_fcs_err; /* FCS errors */ 157 156 u32 hnc_align_err; /* Alignment errors */ 158 157 u32 hnc_false_carrier; /* False carrier detection */ ··· 180 181 u32 hnc_tx_1023_frames; /* Tx 512-1023 bytes frames */ 181 182 u32 hnc_tx_1522_frames; /* Tx 1024-1522 bytes frames */ 182 183 u32 hnc_tx_9022_frames; /* Tx 1523-9022 bytes frames */ 183 - u32 hnc_rx_valid_bytes; /* Rx valid bytes */ 184 + u64 hnc_rx_valid_bytes; /* Rx valid bytes */ 184 185 u32 hnc_rx_runt_pkts; /* Rx error runt packets */ 185 186 u32 hnc_rx_jabber_pkts; /* Rx error jabber packets */ 186 187 u32 ncsi_rx_cmds; /* Rx NCSI commands */
+11 -12
net/ncsi/ncsi-pkt.h
··· 252 252 /* Get Controller Packet Statistics */ 253 253 struct ncsi_rsp_gcps_pkt { 254 254 struct ncsi_rsp_pkt_hdr rsp; /* Response header */ 255 - __be32 cnt_hi; /* Counter cleared */ 256 - __be32 cnt_lo; /* Counter cleared */ 257 - __be32 rx_bytes; /* Rx bytes */ 258 - __be32 tx_bytes; /* Tx bytes */ 259 - __be32 rx_uc_pkts; /* Rx UC packets */ 260 - __be32 rx_mc_pkts; /* Rx MC packets */ 261 - __be32 rx_bc_pkts; /* Rx BC packets */ 262 - __be32 tx_uc_pkts; /* Tx UC packets */ 263 - __be32 tx_mc_pkts; /* Tx MC packets */ 264 - __be32 tx_bc_pkts; /* Tx BC packets */ 255 + __be64 cnt; /* Counter cleared */ 256 + __be64 rx_bytes; /* Rx bytes */ 257 + __be64 tx_bytes; /* Tx bytes */ 258 + __be64 rx_uc_pkts; /* Rx UC packets */ 259 + __be64 rx_mc_pkts; /* Rx MC packets */ 260 + __be64 rx_bc_pkts; /* Rx BC packets */ 261 + __be64 tx_uc_pkts; /* Tx UC packets */ 262 + __be64 tx_mc_pkts; /* Tx MC packets */ 263 + __be64 tx_bc_pkts; /* Tx BC packets */ 265 264 __be32 fcs_err; /* FCS errors */ 266 265 __be32 align_err; /* Alignment errors */ 267 266 __be32 false_carrier; /* False carrier detection */ ··· 289 290 __be32 tx_1023_frames; /* Tx 512-1023 bytes frames */ 290 291 __be32 tx_1522_frames; /* Tx 1024-1522 bytes frames */ 291 292 __be32 tx_9022_frames; /* Tx 1523-9022 bytes frames */ 292 - __be32 rx_valid_bytes; /* Rx valid bytes */ 293 + __be64 rx_valid_bytes; /* Rx valid bytes */ 293 294 __be32 rx_runt_pkts; /* Rx error runt packets */ 294 295 __be32 rx_jabber_pkts; /* Rx error jabber packets */ 295 296 __be32 checksum; /* Checksum */ 296 - }; 297 + } __packed __aligned(4); 297 298 298 299 /* Get NCSI Statistics */ 299 300 struct ncsi_rsp_gns_pkt {
+10 -11
net/ncsi/ncsi-rsp.c
··· 926 926 927 927 /* Update HNC's statistics */ 928 928 ncs = &nc->stats; 929 - ncs->hnc_cnt_hi = ntohl(rsp->cnt_hi); 930 - ncs->hnc_cnt_lo = ntohl(rsp->cnt_lo); 931 - ncs->hnc_rx_bytes = ntohl(rsp->rx_bytes); 932 - ncs->hnc_tx_bytes = ntohl(rsp->tx_bytes); 933 - ncs->hnc_rx_uc_pkts = ntohl(rsp->rx_uc_pkts); 934 - ncs->hnc_rx_mc_pkts = ntohl(rsp->rx_mc_pkts); 935 - ncs->hnc_rx_bc_pkts = ntohl(rsp->rx_bc_pkts); 936 - ncs->hnc_tx_uc_pkts = ntohl(rsp->tx_uc_pkts); 937 - ncs->hnc_tx_mc_pkts = ntohl(rsp->tx_mc_pkts); 938 - ncs->hnc_tx_bc_pkts = ntohl(rsp->tx_bc_pkts); 929 + ncs->hnc_cnt = be64_to_cpu(rsp->cnt); 930 + ncs->hnc_rx_bytes = be64_to_cpu(rsp->rx_bytes); 931 + ncs->hnc_tx_bytes = be64_to_cpu(rsp->tx_bytes); 932 + ncs->hnc_rx_uc_pkts = be64_to_cpu(rsp->rx_uc_pkts); 933 + ncs->hnc_rx_mc_pkts = be64_to_cpu(rsp->rx_mc_pkts); 934 + ncs->hnc_rx_bc_pkts = be64_to_cpu(rsp->rx_bc_pkts); 935 + ncs->hnc_tx_uc_pkts = be64_to_cpu(rsp->tx_uc_pkts); 936 + ncs->hnc_tx_mc_pkts = be64_to_cpu(rsp->tx_mc_pkts); 937 + ncs->hnc_tx_bc_pkts = be64_to_cpu(rsp->tx_bc_pkts); 939 938 ncs->hnc_fcs_err = ntohl(rsp->fcs_err); 940 939 ncs->hnc_align_err = ntohl(rsp->align_err); 941 940 ncs->hnc_false_carrier = ntohl(rsp->false_carrier); ··· 963 964 ncs->hnc_tx_1023_frames = ntohl(rsp->tx_1023_frames); 964 965 ncs->hnc_tx_1522_frames = ntohl(rsp->tx_1522_frames); 965 966 ncs->hnc_tx_9022_frames = ntohl(rsp->tx_9022_frames); 966 - ncs->hnc_rx_valid_bytes = ntohl(rsp->rx_valid_bytes); 967 + ncs->hnc_rx_valid_bytes = be64_to_cpu(rsp->rx_valid_bytes); 967 968 ncs->hnc_rx_runt_pkts = ntohl(rsp->rx_runt_pkts); 968 969 ncs->hnc_rx_jabber_pkts = ntohl(rsp->rx_jabber_pkts); 969 970