@@ -148,6 +148,65 @@ static int bnxt_set_coalesce(struct net_device *dev,
148
148
#define BNXT_RX_STATS_EXT_ENTRY (counter ) \
149
149
{ BNXT_RX_STATS_EXT_OFFSET(counter), __stringify(counter) }
150
150
151
+ #define BNXT_TX_STATS_EXT_ENTRY (counter ) \
152
+ { BNXT_TX_STATS_EXT_OFFSET(counter), __stringify(counter) }
153
+
154
+ #define BNXT_RX_STATS_EXT_PFC_ENTRY (n ) \
155
+ BNXT_RX_STATS_EXT_ENTRY(pfc_pri##n##_rx_duration_us), \
156
+ BNXT_RX_STATS_EXT_ENTRY(pfc_pri##n##_rx_transitions)
157
+
158
+ #define BNXT_TX_STATS_EXT_PFC_ENTRY (n ) \
159
+ BNXT_TX_STATS_EXT_ENTRY(pfc_pri##n##_tx_duration_us), \
160
+ BNXT_TX_STATS_EXT_ENTRY(pfc_pri##n##_tx_transitions)
161
+
162
+ #define BNXT_RX_STATS_EXT_PFC_ENTRIES \
163
+ BNXT_RX_STATS_EXT_PFC_ENTRY(0), \
164
+ BNXT_RX_STATS_EXT_PFC_ENTRY(1), \
165
+ BNXT_RX_STATS_EXT_PFC_ENTRY(2), \
166
+ BNXT_RX_STATS_EXT_PFC_ENTRY(3), \
167
+ BNXT_RX_STATS_EXT_PFC_ENTRY(4), \
168
+ BNXT_RX_STATS_EXT_PFC_ENTRY(5), \
169
+ BNXT_RX_STATS_EXT_PFC_ENTRY(6), \
170
+ BNXT_RX_STATS_EXT_PFC_ENTRY(7)
171
+
172
+ #define BNXT_TX_STATS_EXT_PFC_ENTRIES \
173
+ BNXT_TX_STATS_EXT_PFC_ENTRY(0), \
174
+ BNXT_TX_STATS_EXT_PFC_ENTRY(1), \
175
+ BNXT_TX_STATS_EXT_PFC_ENTRY(2), \
176
+ BNXT_TX_STATS_EXT_PFC_ENTRY(3), \
177
+ BNXT_TX_STATS_EXT_PFC_ENTRY(4), \
178
+ BNXT_TX_STATS_EXT_PFC_ENTRY(5), \
179
+ BNXT_TX_STATS_EXT_PFC_ENTRY(6), \
180
+ BNXT_TX_STATS_EXT_PFC_ENTRY(7)
181
+
182
+ #define BNXT_RX_STATS_EXT_COS_ENTRY (n ) \
183
+ BNXT_RX_STATS_EXT_ENTRY(rx_bytes_cos##n), \
184
+ BNXT_RX_STATS_EXT_ENTRY(rx_packets_cos##n)
185
+
186
+ #define BNXT_TX_STATS_EXT_COS_ENTRY (n ) \
187
+ BNXT_TX_STATS_EXT_ENTRY(tx_bytes_cos##n), \
188
+ BNXT_TX_STATS_EXT_ENTRY(tx_packets_cos##n)
189
+
190
+ #define BNXT_RX_STATS_EXT_COS_ENTRIES \
191
+ BNXT_RX_STATS_EXT_COS_ENTRY(0), \
192
+ BNXT_RX_STATS_EXT_COS_ENTRY(1), \
193
+ BNXT_RX_STATS_EXT_COS_ENTRY(2), \
194
+ BNXT_RX_STATS_EXT_COS_ENTRY(3), \
195
+ BNXT_RX_STATS_EXT_COS_ENTRY(4), \
196
+ BNXT_RX_STATS_EXT_COS_ENTRY(5), \
197
+ BNXT_RX_STATS_EXT_COS_ENTRY(6), \
198
+ BNXT_RX_STATS_EXT_COS_ENTRY(7) \
199
+
200
+ #define BNXT_TX_STATS_EXT_COS_ENTRIES \
201
+ BNXT_TX_STATS_EXT_COS_ENTRY(0), \
202
+ BNXT_TX_STATS_EXT_COS_ENTRY(1), \
203
+ BNXT_TX_STATS_EXT_COS_ENTRY(2), \
204
+ BNXT_TX_STATS_EXT_COS_ENTRY(3), \
205
+ BNXT_TX_STATS_EXT_COS_ENTRY(4), \
206
+ BNXT_TX_STATS_EXT_COS_ENTRY(5), \
207
+ BNXT_TX_STATS_EXT_COS_ENTRY(6), \
208
+ BNXT_TX_STATS_EXT_COS_ENTRY(7) \
209
+
151
210
enum {
152
211
RX_TOTAL_DISCARDS ,
153
212
TX_TOTAL_DISCARDS ,
@@ -256,11 +315,20 @@ static const struct {
256
315
BNXT_RX_STATS_EXT_ENTRY (resume_pause_events ),
257
316
BNXT_RX_STATS_EXT_ENTRY (continuous_roce_pause_events ),
258
317
BNXT_RX_STATS_EXT_ENTRY (resume_roce_pause_events ),
318
+ BNXT_RX_STATS_EXT_COS_ENTRIES ,
319
+ BNXT_RX_STATS_EXT_PFC_ENTRIES ,
320
+ };
321
+
322
+ static const struct {
323
+ long offset ;
324
+ char string [ETH_GSTRING_LEN ];
325
+ } bnxt_tx_port_stats_ext_arr [] = {
326
+ BNXT_TX_STATS_EXT_COS_ENTRIES ,
327
+ BNXT_TX_STATS_EXT_PFC_ENTRIES ,
259
328
};
260
329
261
330
#define BNXT_NUM_SW_FUNC_STATS ARRAY_SIZE(bnxt_sw_func_stats)
262
331
#define BNXT_NUM_PORT_STATS ARRAY_SIZE(bnxt_port_stats_arr)
263
- #define BNXT_NUM_PORT_STATS_EXT ARRAY_SIZE(bnxt_port_stats_ext_arr)
264
332
265
333
static int bnxt_get_num_stats (struct bnxt * bp )
266
334
{
@@ -272,7 +340,8 @@ static int bnxt_get_num_stats(struct bnxt *bp)
272
340
num_stats += BNXT_NUM_PORT_STATS ;
273
341
274
342
if (bp -> flags & BNXT_FLAG_PORT_STATS_EXT )
275
- num_stats += BNXT_NUM_PORT_STATS_EXT ;
343
+ num_stats += bp -> fw_rx_stats_ext_size +
344
+ bp -> fw_tx_stats_ext_size ;
276
345
277
346
return num_stats ;
278
347
}
@@ -334,12 +403,17 @@ static void bnxt_get_ethtool_stats(struct net_device *dev,
334
403
}
335
404
}
336
405
if (bp -> flags & BNXT_FLAG_PORT_STATS_EXT ) {
337
- __le64 * port_stats_ext = (__le64 * )bp -> hw_rx_port_stats_ext ;
406
+ __le64 * rx_port_stats_ext = (__le64 * )bp -> hw_rx_port_stats_ext ;
407
+ __le64 * tx_port_stats_ext = (__le64 * )bp -> hw_tx_port_stats_ext ;
338
408
339
- for (i = 0 ; i < BNXT_NUM_PORT_STATS_EXT ; i ++ , j ++ ) {
340
- buf [j ] = le64_to_cpu (* (port_stats_ext +
409
+ for (i = 0 ; i < bp -> fw_rx_stats_ext_size ; i ++ , j ++ ) {
410
+ buf [j ] = le64_to_cpu (* (rx_port_stats_ext +
341
411
bnxt_port_stats_ext_arr [i ].offset ));
342
412
}
413
+ for (i = 0 ; i < bp -> fw_tx_stats_ext_size ; i ++ , j ++ ) {
414
+ buf [j ] = le64_to_cpu (* (tx_port_stats_ext +
415
+ bnxt_tx_port_stats_ext_arr [i ].offset ));
416
+ }
343
417
}
344
418
}
345
419
@@ -407,10 +481,15 @@ static void bnxt_get_strings(struct net_device *dev, u32 stringset, u8 *buf)
407
481
}
408
482
}
409
483
if (bp -> flags & BNXT_FLAG_PORT_STATS_EXT ) {
410
- for (i = 0 ; i < BNXT_NUM_PORT_STATS_EXT ; i ++ ) {
484
+ for (i = 0 ; i < bp -> fw_rx_stats_ext_size ; i ++ ) {
411
485
strcpy (buf , bnxt_port_stats_ext_arr [i ].string );
412
486
buf += ETH_GSTRING_LEN ;
413
487
}
488
+ for (i = 0 ; i < bp -> fw_tx_stats_ext_size ; i ++ ) {
489
+ strcpy (buf ,
490
+ bnxt_tx_port_stats_ext_arr [i ].string );
491
+ buf += ETH_GSTRING_LEN ;
492
+ }
414
493
}
415
494
break ;
416
495
case ETH_SS_TEST :
0 commit comments