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

Configure Feed

Select the types of activity you want to include in your feed.

RDMA/irdma: Add GEN3 HW statistics support

Plug into the unified HW statistics framework by adding a hardware
statistics map array for GEN3, defining the HW-specific width and
location for each counter in the statistics buffer.

Signed-off-by: Krzysztof Czurylo <krzysztof.czurylo@intel.com>
Signed-off-by: Tatyana Nikolova <tatyana.e.nikolova@intel.com>
Link: https://patch.msgid.link/20250827152545.2056-7-tatyana.e.nikolova@intel.com
Tested-by: Jacob Moroni <jmoroni@google.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>

authored by

Krzysztof Czurylo and committed by
Leon Romanovsky
da278cb2 b800e82f

+173 -68
+24 -9
drivers/infiniband/hw/irdma/ctrl.c
··· 1968 1968 (void *)((uintptr_t)stats_buff_mem->va + 1969 1969 IRDMA_GATHER_STATS_BUF_SIZE); 1970 1970 1971 - irdma_hw_stats_start_timer(vsi); 1971 + if (vsi->dev->hw_attrs.uk_attrs.hw_rev < IRDMA_GEN_3) 1972 + irdma_hw_stats_start_timer(vsi); 1972 1973 1973 1974 /* when stat allocation is not required default to fcn_id. */ 1974 1975 vsi->stats_idx = info->fcn_id; ··· 2014 2013 2015 2014 if (!vsi->pestat) 2016 2015 return; 2017 - irdma_hw_stats_stop_timer(vsi); 2016 + 2017 + if (dev->hw_attrs.uk_attrs.hw_rev < IRDMA_GEN_3) 2018 + irdma_hw_stats_stop_timer(vsi); 2018 2019 dma_free_coherent(vsi->pestat->hw->device, 2019 2020 vsi->pestat->gather_info.stats_buff_mem.size, 2020 2021 vsi->pestat->gather_info.stats_buff_mem.va, ··· 5932 5929 */ 5933 5930 void sc_vsi_update_stats(struct irdma_sc_vsi *vsi) 5934 5931 { 5935 - struct irdma_gather_stats *gather_stats; 5936 - struct irdma_gather_stats *last_gather_stats; 5932 + struct irdma_dev_hw_stats *hw_stats = &vsi->pestat->hw_stats; 5933 + struct irdma_gather_stats *gather_stats = 5934 + vsi->pestat->gather_info.gather_stats_va; 5935 + struct irdma_gather_stats *last_gather_stats = 5936 + vsi->pestat->gather_info.last_gather_stats_va; 5937 + const struct irdma_hw_stat_map *map = vsi->dev->hw_stats_map; 5938 + u16 max_stat_idx = vsi->dev->hw_attrs.max_stat_idx; 5939 + u16 i; 5937 5940 5938 - gather_stats = vsi->pestat->gather_info.gather_stats_va; 5939 - last_gather_stats = vsi->pestat->gather_info.last_gather_stats_va; 5940 - irdma_update_stats(&vsi->pestat->hw_stats, gather_stats, 5941 - last_gather_stats, vsi->dev->hw_stats_map, 5942 - vsi->dev->hw_attrs.max_stat_idx); 5941 + if (vsi->dev->hw_attrs.uk_attrs.hw_rev >= IRDMA_GEN_3) { 5942 + for (i = 0; i < max_stat_idx; i++) { 5943 + u16 idx = map[i].byteoff / sizeof(u64); 5944 + 5945 + hw_stats->stats_val[i] = gather_stats->val[idx]; 5946 + } 5947 + return; 5948 + } 5949 + 5950 + irdma_update_stats(hw_stats, gather_stats, last_gather_stats, 5951 + map, max_stat_idx); 5943 5952 } 5944 5953 5945 5954 /**
+1 -1
drivers/infiniband/hw/irdma/defs.h
··· 415 415 #define IRDMA_CQPSQ_STATS_USE_INST BIT_ULL(61) 416 416 #define IRDMA_CQPSQ_STATS_OP GENMASK_ULL(37, 32) 417 417 #define IRDMA_CQPSQ_STATS_INST_INDEX GENMASK_ULL(6, 0) 418 - #define IRDMA_CQPSQ_STATS_HMC_FCN_INDEX GENMASK_ULL(5, 0) 418 + #define IRDMA_CQPSQ_STATS_HMC_FCN_INDEX GENMASK_ULL(15, 0) 419 419 #define IRDMA_CQPSQ_WS_WQEVALID BIT_ULL(63) 420 420 #define IRDMA_CQPSQ_WS_NODEOP GENMASK_ULL(55, 52) 421 421 #define IRDMA_SD_MAX GENMASK_ULL(15, 0)
+63
drivers/infiniband/hw/irdma/ig3rdma_hw.c
··· 48 48 .irdma_en_irq = ig3rdma_ena_irq, 49 49 }; 50 50 51 + static const struct irdma_hw_stat_map ig3rdma_hw_stat_map[] = { 52 + [IRDMA_HW_STAT_INDEX_RXVLANERR] = { 0, 0, 0 }, 53 + [IRDMA_HW_STAT_INDEX_IP4RXOCTS] = { 8, 0, 0 }, 54 + [IRDMA_HW_STAT_INDEX_IP4RXPKTS] = { 16, 0, 0 }, 55 + [IRDMA_HW_STAT_INDEX_IP4RXDISCARD] = { 24, 0, 0 }, 56 + [IRDMA_HW_STAT_INDEX_IP4RXTRUNC] = { 32, 0, 0 }, 57 + [IRDMA_HW_STAT_INDEX_IP4RXFRAGS] = { 40, 0, 0 }, 58 + [IRDMA_HW_STAT_INDEX_IP4RXMCOCTS] = { 48, 0, 0 }, 59 + [IRDMA_HW_STAT_INDEX_IP4RXMCPKTS] = { 56, 0, 0 }, 60 + [IRDMA_HW_STAT_INDEX_IP6RXOCTS] = { 64, 0, 0 }, 61 + [IRDMA_HW_STAT_INDEX_IP6RXPKTS] = { 72, 0, 0 }, 62 + [IRDMA_HW_STAT_INDEX_IP6RXDISCARD] = { 80, 0, 0 }, 63 + [IRDMA_HW_STAT_INDEX_IP6RXTRUNC] = { 88, 0, 0 }, 64 + [IRDMA_HW_STAT_INDEX_IP6RXFRAGS] = { 96, 0, 0 }, 65 + [IRDMA_HW_STAT_INDEX_IP6RXMCOCTS] = { 104, 0, 0 }, 66 + [IRDMA_HW_STAT_INDEX_IP6RXMCPKTS] = { 112, 0, 0 }, 67 + [IRDMA_HW_STAT_INDEX_IP4TXOCTS] = { 120, 0, 0 }, 68 + [IRDMA_HW_STAT_INDEX_IP4TXPKTS] = { 128, 0, 0 }, 69 + [IRDMA_HW_STAT_INDEX_IP4TXFRAGS] = { 136, 0, 0 }, 70 + [IRDMA_HW_STAT_INDEX_IP4TXMCOCTS] = { 144, 0, 0 }, 71 + [IRDMA_HW_STAT_INDEX_IP4TXMCPKTS] = { 152, 0, 0 }, 72 + [IRDMA_HW_STAT_INDEX_IP6TXOCTS] = { 160, 0, 0 }, 73 + [IRDMA_HW_STAT_INDEX_IP6TXPKTS] = { 168, 0, 0 }, 74 + [IRDMA_HW_STAT_INDEX_IP6TXFRAGS] = { 176, 0, 0 }, 75 + [IRDMA_HW_STAT_INDEX_IP6TXMCOCTS] = { 184, 0, 0 }, 76 + [IRDMA_HW_STAT_INDEX_IP6TXMCPKTS] = { 192, 0, 0 }, 77 + [IRDMA_HW_STAT_INDEX_IP4TXNOROUTE] = { 200, 0, 0 }, 78 + [IRDMA_HW_STAT_INDEX_IP6TXNOROUTE] = { 208, 0, 0 }, 79 + [IRDMA_HW_STAT_INDEX_TCPRTXSEG] = { 216, 0, 0 }, 80 + [IRDMA_HW_STAT_INDEX_TCPRXOPTERR] = { 224, 0, 0 }, 81 + [IRDMA_HW_STAT_INDEX_TCPRXPROTOERR] = { 232, 0, 0 }, 82 + [IRDMA_HW_STAT_INDEX_TCPTXSEG] = { 240, 0, 0 }, 83 + [IRDMA_HW_STAT_INDEX_TCPRXSEGS] = { 248, 0, 0 }, 84 + [IRDMA_HW_STAT_INDEX_UDPRXPKTS] = { 256, 0, 0 }, 85 + [IRDMA_HW_STAT_INDEX_UDPTXPKTS] = { 264, 0, 0 }, 86 + [IRDMA_HW_STAT_INDEX_RDMARXWRS] = { 272, 0, 0 }, 87 + [IRDMA_HW_STAT_INDEX_RDMARXRDS] = { 280, 0, 0 }, 88 + [IRDMA_HW_STAT_INDEX_RDMARXSNDS] = { 288, 0, 0 }, 89 + [IRDMA_HW_STAT_INDEX_RDMATXWRS] = { 296, 0, 0 }, 90 + [IRDMA_HW_STAT_INDEX_RDMATXRDS] = { 304, 0, 0 }, 91 + [IRDMA_HW_STAT_INDEX_RDMATXSNDS] = { 312, 0, 0 }, 92 + [IRDMA_HW_STAT_INDEX_RDMAVBND] = { 320, 0, 0 }, 93 + [IRDMA_HW_STAT_INDEX_RDMAVINV] = { 328, 0, 0 }, 94 + [IRDMA_HW_STAT_INDEX_RXNPECNMARKEDPKTS] = { 336, 0, 0 }, 95 + [IRDMA_HW_STAT_INDEX_RXRPCNPHANDLED] = { 344, 0, 0 }, 96 + [IRDMA_HW_STAT_INDEX_RXRPCNPIGNORED] = { 352, 0, 0 }, 97 + [IRDMA_HW_STAT_INDEX_TXNPCNPSENT] = { 360, 0, 0 }, 98 + [IRDMA_HW_STAT_INDEX_RNR_SENT] = { 368, 0, 0 }, 99 + [IRDMA_HW_STAT_INDEX_RNR_RCVD] = { 376, 0, 0 }, 100 + [IRDMA_HW_STAT_INDEX_RDMAORDLMTCNT] = { 384, 0, 0 }, 101 + [IRDMA_HW_STAT_INDEX_RDMAIRDLMTCNT] = { 392, 0, 0 }, 102 + [IRDMA_HW_STAT_INDEX_RDMARXATS] = { 408, 0, 0 }, 103 + [IRDMA_HW_STAT_INDEX_RDMATXATS] = { 416, 0, 0 }, 104 + [IRDMA_HW_STAT_INDEX_NAKSEQERR] = { 424, 0, 0 }, 105 + [IRDMA_HW_STAT_INDEX_NAKSEQERR_IMPLIED] = { 432, 0, 0 }, 106 + [IRDMA_HW_STAT_INDEX_RTO] = { 440, 0, 0 }, 107 + [IRDMA_HW_STAT_INDEX_RXOOOPKTS] = { 448, 0, 0 }, 108 + [IRDMA_HW_STAT_INDEX_ICRCERR] = { 456, 0, 0 }, 109 + }; 110 + 51 111 void ig3rdma_init_hw(struct irdma_sc_dev *dev) 52 112 { 53 113 dev->irq_ops = &ig3rdma_irq_ops; 114 + dev->hw_stats_map = ig3rdma_hw_stat_map; 54 115 55 116 dev->hw_attrs.uk_attrs.hw_rev = IRDMA_GEN_3; 56 117 dev->hw_attrs.uk_attrs.max_hw_wq_frags = IG3RDMA_MAX_WQ_FRAGMENT_COUNT; ··· 131 70 dev->hw_attrs.page_size_cap = SZ_4K | SZ_2M | SZ_1G; 132 71 dev->hw_attrs.max_hw_ird = IG3RDMA_MAX_IRD_SIZE; 133 72 dev->hw_attrs.max_hw_ord = IG3RDMA_MAX_ORD_SIZE; 73 + dev->hw_attrs.max_stat_inst = IG3RDMA_MAX_STATS_COUNT; 74 + dev->hw_attrs.max_stat_idx = IRDMA_HW_STAT_INDEX_MAX_GEN_3; 134 75 dev->hw_attrs.uk_attrs.min_hw_wq_size = IG3RDMA_MIN_WQ_SIZE; 135 76 dev->hw_attrs.uk_attrs.max_hw_srq_quanta = IRDMA_SRQ_MAX_QUANTA; 136 77 dev->hw_attrs.uk_attrs.max_hw_inline = IG3RDMA_MAX_INLINE_DATA_SIZE;
+17 -2
drivers/infiniband/hw/irdma/type.h
··· 156 156 IRDMA_HW_STAT_INDEX_RXRPCNPIGNORED = 44, 157 157 IRDMA_HW_STAT_INDEX_TXNPCNPSENT = 45, 158 158 IRDMA_HW_STAT_INDEX_MAX_GEN_2 = 46, 159 + 160 + /* gen3 */ 161 + IRDMA_HW_STAT_INDEX_RNR_SENT = 46, 162 + IRDMA_HW_STAT_INDEX_RNR_RCVD = 47, 163 + IRDMA_HW_STAT_INDEX_RDMAORDLMTCNT = 48, 164 + IRDMA_HW_STAT_INDEX_RDMAIRDLMTCNT = 49, 165 + IRDMA_HW_STAT_INDEX_RDMARXATS = 50, 166 + IRDMA_HW_STAT_INDEX_RDMATXATS = 51, 167 + IRDMA_HW_STAT_INDEX_NAKSEQERR = 52, 168 + IRDMA_HW_STAT_INDEX_NAKSEQERR_IMPLIED = 53, 169 + IRDMA_HW_STAT_INDEX_RTO = 54, 170 + IRDMA_HW_STAT_INDEX_RXOOOPKTS = 55, 171 + IRDMA_HW_STAT_INDEX_ICRCERR = 56, 172 + 173 + IRDMA_HW_STAT_INDEX_MAX_GEN_3 = 57, 159 174 }; 160 175 161 176 enum irdma_feature_type { ··· 584 569 struct irdma_stats_inst_info { 585 570 bool use_hmc_fcn_index; 586 571 u8 hmc_fn_id; 587 - u8 stats_idx; 572 + u16 stats_idx; 588 573 }; 589 574 590 575 struct irdma_up_info { ··· 1042 1027 u32 send_cq_num; 1043 1028 u32 rcv_cq_num; 1044 1029 u32 rem_endpoint_idx; 1045 - u8 stats_idx; 1030 + u16 stats_idx; 1046 1031 bool srq_valid:1; 1047 1032 bool tcp_info_valid:1; 1048 1033 bool iwarp_info_valid:1;
+68 -56
drivers/infiniband/hw/irdma/verbs.c
··· 3923 3923 return ret; 3924 3924 } 3925 3925 3926 + static const struct rdma_stat_desc irdma_hw_stat_descs[] = { 3927 + /* gen1 - 32-bit */ 3928 + [IRDMA_HW_STAT_INDEX_IP4RXDISCARD].name = "ip4InDiscards", 3929 + [IRDMA_HW_STAT_INDEX_IP4RXTRUNC].name = "ip4InTruncatedPkts", 3930 + [IRDMA_HW_STAT_INDEX_IP4TXNOROUTE].name = "ip4OutNoRoutes", 3931 + [IRDMA_HW_STAT_INDEX_IP6RXDISCARD].name = "ip6InDiscards", 3932 + [IRDMA_HW_STAT_INDEX_IP6RXTRUNC].name = "ip6InTruncatedPkts", 3933 + [IRDMA_HW_STAT_INDEX_IP6TXNOROUTE].name = "ip6OutNoRoutes", 3934 + [IRDMA_HW_STAT_INDEX_RXVLANERR].name = "rxVlanErrors", 3935 + /* gen1 - 64-bit */ 3936 + [IRDMA_HW_STAT_INDEX_IP4RXOCTS].name = "ip4InOctets", 3937 + [IRDMA_HW_STAT_INDEX_IP4RXPKTS].name = "ip4InPkts", 3938 + [IRDMA_HW_STAT_INDEX_IP4RXFRAGS].name = "ip4InReasmRqd", 3939 + [IRDMA_HW_STAT_INDEX_IP4RXMCPKTS].name = "ip4InMcastPkts", 3940 + [IRDMA_HW_STAT_INDEX_IP4TXOCTS].name = "ip4OutOctets", 3941 + [IRDMA_HW_STAT_INDEX_IP4TXPKTS].name = "ip4OutPkts", 3942 + [IRDMA_HW_STAT_INDEX_IP4TXFRAGS].name = "ip4OutSegRqd", 3943 + [IRDMA_HW_STAT_INDEX_IP4TXMCPKTS].name = "ip4OutMcastPkts", 3944 + [IRDMA_HW_STAT_INDEX_IP6RXOCTS].name = "ip6InOctets", 3945 + [IRDMA_HW_STAT_INDEX_IP6RXPKTS].name = "ip6InPkts", 3946 + [IRDMA_HW_STAT_INDEX_IP6RXFRAGS].name = "ip6InReasmRqd", 3947 + [IRDMA_HW_STAT_INDEX_IP6RXMCPKTS].name = "ip6InMcastPkts", 3948 + [IRDMA_HW_STAT_INDEX_IP6TXOCTS].name = "ip6OutOctets", 3949 + [IRDMA_HW_STAT_INDEX_IP6TXPKTS].name = "ip6OutPkts", 3950 + [IRDMA_HW_STAT_INDEX_IP6TXFRAGS].name = "ip6OutSegRqd", 3951 + [IRDMA_HW_STAT_INDEX_IP6TXMCPKTS].name = "ip6OutMcastPkts", 3952 + [IRDMA_HW_STAT_INDEX_RDMARXRDS].name = "InRdmaReads", 3953 + [IRDMA_HW_STAT_INDEX_RDMARXSNDS].name = "InRdmaSends", 3954 + [IRDMA_HW_STAT_INDEX_RDMARXWRS].name = "InRdmaWrites", 3955 + [IRDMA_HW_STAT_INDEX_RDMATXRDS].name = "OutRdmaReads", 3956 + [IRDMA_HW_STAT_INDEX_RDMATXSNDS].name = "OutRdmaSends", 3957 + [IRDMA_HW_STAT_INDEX_RDMATXWRS].name = "OutRdmaWrites", 3958 + [IRDMA_HW_STAT_INDEX_RDMAVBND].name = "RdmaBnd", 3959 + [IRDMA_HW_STAT_INDEX_RDMAVINV].name = "RdmaInv", 3960 + 3961 + /* gen2 - 32-bit */ 3962 + [IRDMA_HW_STAT_INDEX_RXRPCNPHANDLED].name = "cnpHandled", 3963 + [IRDMA_HW_STAT_INDEX_RXRPCNPIGNORED].name = "cnpIgnored", 3964 + [IRDMA_HW_STAT_INDEX_TXNPCNPSENT].name = "cnpSent", 3965 + /* gen2 - 64-bit */ 3966 + [IRDMA_HW_STAT_INDEX_IP4RXMCOCTS].name = "ip4InMcastOctets", 3967 + [IRDMA_HW_STAT_INDEX_IP4TXMCOCTS].name = "ip4OutMcastOctets", 3968 + [IRDMA_HW_STAT_INDEX_IP6RXMCOCTS].name = "ip6InMcastOctets", 3969 + [IRDMA_HW_STAT_INDEX_IP6TXMCOCTS].name = "ip6OutMcastOctets", 3970 + [IRDMA_HW_STAT_INDEX_UDPRXPKTS].name = "RxUDP", 3971 + [IRDMA_HW_STAT_INDEX_UDPTXPKTS].name = "TxUDP", 3972 + [IRDMA_HW_STAT_INDEX_RXNPECNMARKEDPKTS].name = "RxECNMrkd", 3973 + [IRDMA_HW_STAT_INDEX_TCPRTXSEG].name = "RetransSegs", 3974 + [IRDMA_HW_STAT_INDEX_TCPRXOPTERR].name = "InOptErrors", 3975 + [IRDMA_HW_STAT_INDEX_TCPRXPROTOERR].name = "InProtoErrors", 3976 + [IRDMA_HW_STAT_INDEX_TCPRXSEGS].name = "InSegs", 3977 + [IRDMA_HW_STAT_INDEX_TCPTXSEG].name = "OutSegs", 3978 + 3979 + /* gen3 */ 3980 + [IRDMA_HW_STAT_INDEX_RNR_SENT].name = "RNR sent", 3981 + [IRDMA_HW_STAT_INDEX_RNR_RCVD].name = "RNR received", 3982 + [IRDMA_HW_STAT_INDEX_RDMAORDLMTCNT].name = "ord limit count", 3983 + [IRDMA_HW_STAT_INDEX_RDMAIRDLMTCNT].name = "ird limit count", 3984 + [IRDMA_HW_STAT_INDEX_RDMARXATS].name = "Rx atomics", 3985 + [IRDMA_HW_STAT_INDEX_RDMATXATS].name = "Tx atomics", 3986 + [IRDMA_HW_STAT_INDEX_NAKSEQERR].name = "Nak Sequence Error", 3987 + [IRDMA_HW_STAT_INDEX_NAKSEQERR_IMPLIED].name = "Nak Sequence Error Implied", 3988 + [IRDMA_HW_STAT_INDEX_RTO].name = "RTO", 3989 + [IRDMA_HW_STAT_INDEX_RXOOOPKTS].name = "Rcvd Out of order packets", 3990 + [IRDMA_HW_STAT_INDEX_ICRCERR].name = "CRC errors", 3991 + }; 3992 + 3926 3993 static int irdma_roce_port_immutable(struct ib_device *ibdev, u32 port_num, 3927 3994 struct ib_port_immutable *immutable) 3928 3995 { ··· 4023 3956 return 0; 4024 3957 } 4025 3958 4026 - static const struct rdma_stat_desc irdma_hw_stat_names[] = { 4027 - /* gen1 - 32-bit */ 4028 - [IRDMA_HW_STAT_INDEX_IP4RXDISCARD].name = "ip4InDiscards", 4029 - [IRDMA_HW_STAT_INDEX_IP4RXTRUNC].name = "ip4InTruncatedPkts", 4030 - [IRDMA_HW_STAT_INDEX_IP4TXNOROUTE].name = "ip4OutNoRoutes", 4031 - [IRDMA_HW_STAT_INDEX_IP6RXDISCARD].name = "ip6InDiscards", 4032 - [IRDMA_HW_STAT_INDEX_IP6RXTRUNC].name = "ip6InTruncatedPkts", 4033 - [IRDMA_HW_STAT_INDEX_IP6TXNOROUTE].name = "ip6OutNoRoutes", 4034 - [IRDMA_HW_STAT_INDEX_TCPRTXSEG].name = "tcpRetransSegs", 4035 - [IRDMA_HW_STAT_INDEX_TCPRXOPTERR].name = "tcpInOptErrors", 4036 - [IRDMA_HW_STAT_INDEX_TCPRXPROTOERR].name = "tcpInProtoErrors", 4037 - [IRDMA_HW_STAT_INDEX_RXVLANERR].name = "rxVlanErrors", 4038 - /* gen1 - 64-bit */ 4039 - [IRDMA_HW_STAT_INDEX_IP4RXOCTS].name = "ip4InOctets", 4040 - [IRDMA_HW_STAT_INDEX_IP4RXPKTS].name = "ip4InPkts", 4041 - [IRDMA_HW_STAT_INDEX_IP4RXFRAGS].name = "ip4InReasmRqd", 4042 - [IRDMA_HW_STAT_INDEX_IP4RXMCPKTS].name = "ip4InMcastPkts", 4043 - [IRDMA_HW_STAT_INDEX_IP4TXOCTS].name = "ip4OutOctets", 4044 - [IRDMA_HW_STAT_INDEX_IP4TXPKTS].name = "ip4OutPkts", 4045 - [IRDMA_HW_STAT_INDEX_IP4TXFRAGS].name = "ip4OutSegRqd", 4046 - [IRDMA_HW_STAT_INDEX_IP4TXMCPKTS].name = "ip4OutMcastPkts", 4047 - [IRDMA_HW_STAT_INDEX_IP6RXOCTS].name = "ip6InOctets", 4048 - [IRDMA_HW_STAT_INDEX_IP6RXPKTS].name = "ip6InPkts", 4049 - [IRDMA_HW_STAT_INDEX_IP6RXFRAGS].name = "ip6InReasmRqd", 4050 - [IRDMA_HW_STAT_INDEX_IP6RXMCPKTS].name = "ip6InMcastPkts", 4051 - [IRDMA_HW_STAT_INDEX_IP6TXOCTS].name = "ip6OutOctets", 4052 - [IRDMA_HW_STAT_INDEX_IP6TXPKTS].name = "ip6OutPkts", 4053 - [IRDMA_HW_STAT_INDEX_IP6TXFRAGS].name = "ip6OutSegRqd", 4054 - [IRDMA_HW_STAT_INDEX_IP6TXMCPKTS].name = "ip6OutMcastPkts", 4055 - [IRDMA_HW_STAT_INDEX_TCPRXSEGS].name = "tcpInSegs", 4056 - [IRDMA_HW_STAT_INDEX_TCPTXSEG].name = "tcpOutSegs", 4057 - [IRDMA_HW_STAT_INDEX_RDMARXRDS].name = "iwInRdmaReads", 4058 - [IRDMA_HW_STAT_INDEX_RDMARXSNDS].name = "iwInRdmaSends", 4059 - [IRDMA_HW_STAT_INDEX_RDMARXWRS].name = "iwInRdmaWrites", 4060 - [IRDMA_HW_STAT_INDEX_RDMATXRDS].name = "iwOutRdmaReads", 4061 - [IRDMA_HW_STAT_INDEX_RDMATXSNDS].name = "iwOutRdmaSends", 4062 - [IRDMA_HW_STAT_INDEX_RDMATXWRS].name = "iwOutRdmaWrites", 4063 - [IRDMA_HW_STAT_INDEX_RDMAVBND].name = "iwRdmaBnd", 4064 - [IRDMA_HW_STAT_INDEX_RDMAVINV].name = "iwRdmaInv", 4065 - 4066 - /* gen2 - 32-bit */ 4067 - [IRDMA_HW_STAT_INDEX_RXRPCNPHANDLED].name = "cnpHandled", 4068 - [IRDMA_HW_STAT_INDEX_RXRPCNPIGNORED].name = "cnpIgnored", 4069 - [IRDMA_HW_STAT_INDEX_TXNPCNPSENT].name = "cnpSent", 4070 - /* gen2 - 64-bit */ 4071 - [IRDMA_HW_STAT_INDEX_IP4RXMCOCTS].name = "ip4InMcastOctets", 4072 - [IRDMA_HW_STAT_INDEX_IP4TXMCOCTS].name = "ip4OutMcastOctets", 4073 - [IRDMA_HW_STAT_INDEX_IP6RXMCOCTS].name = "ip6InMcastOctets", 4074 - [IRDMA_HW_STAT_INDEX_IP6TXMCOCTS].name = "ip6OutMcastOctets", 4075 - [IRDMA_HW_STAT_INDEX_UDPRXPKTS].name = "RxUDP", 4076 - [IRDMA_HW_STAT_INDEX_UDPTXPKTS].name = "TxUDP", 4077 - [IRDMA_HW_STAT_INDEX_RXNPECNMARKEDPKTS].name = "RxECNMrkd", 4078 - 4079 - }; 4080 - 4081 3959 static void irdma_get_dev_fw_str(struct ib_device *dev, char *str) 4082 3960 { 4083 3961 struct irdma_device *iwdev = to_iwdev(dev); ··· 4046 4034 int num_counters = dev->hw_attrs.max_stat_idx; 4047 4035 unsigned long lifespan = RDMA_HW_STATS_DEFAULT_LIFESPAN; 4048 4036 4049 - return rdma_alloc_hw_stats_struct(irdma_hw_stat_names, num_counters, 4037 + return rdma_alloc_hw_stats_struct(irdma_hw_stat_descs, num_counters, 4050 4038 lifespan); 4051 4039 } 4052 4040