Lines Matching +full:name +full:-

1 // SPDX-License-Identifier: GPL-2.0+
12 { .name = "rx_octets", .offset = 0x00, },
13 { .name = "rx_unicast", .offset = 0x01, },
14 { .name = "rx_multicast", .offset = 0x02 },
15 { .name = "rx_broadcast", .offset = 0x03 },
16 { .name = "rx_short", .offset = 0x04 },
17 { .name = "rx_frag", .offset = 0x05 },
18 { .name = "rx_jabber", .offset = 0x06 },
19 { .name = "rx_crc", .offset = 0x07 },
20 { .name = "rx_symbol_err", .offset = 0x08 },
21 { .name = "rx_sz_64", .offset = 0x09 },
22 { .name = "rx_sz_65_127", .offset = 0x0a},
23 { .name = "rx_sz_128_255", .offset = 0x0b},
24 { .name = "rx_sz_256_511", .offset = 0x0c },
25 { .name = "rx_sz_512_1023", .offset = 0x0d },
26 { .name = "rx_sz_1024_1526", .offset = 0x0e },
27 { .name = "rx_sz_jumbo", .offset = 0x0f },
28 { .name = "rx_pause", .offset = 0x10 },
29 { .name = "rx_control", .offset = 0x11 },
30 { .name = "rx_long", .offset = 0x12 },
31 { .name = "rx_cat_drop", .offset = 0x13 },
32 { .name = "rx_red_prio_0", .offset = 0x14 },
33 { .name = "rx_red_prio_1", .offset = 0x15 },
34 { .name = "rx_red_prio_2", .offset = 0x16 },
35 { .name = "rx_red_prio_3", .offset = 0x17 },
36 { .name = "rx_red_prio_4", .offset = 0x18 },
37 { .name = "rx_red_prio_5", .offset = 0x19 },
38 { .name = "rx_red_prio_6", .offset = 0x1a },
39 { .name = "rx_red_prio_7", .offset = 0x1b },
40 { .name = "rx_yellow_prio_0", .offset = 0x1c },
41 { .name = "rx_yellow_prio_1", .offset = 0x1d },
42 { .name = "rx_yellow_prio_2", .offset = 0x1e },
43 { .name = "rx_yellow_prio_3", .offset = 0x1f },
44 { .name = "rx_yellow_prio_4", .offset = 0x20 },
45 { .name = "rx_yellow_prio_5", .offset = 0x21 },
46 { .name = "rx_yellow_prio_6", .offset = 0x22 },
47 { .name = "rx_yellow_prio_7", .offset = 0x23 },
48 { .name = "rx_green_prio_0", .offset = 0x24 },
49 { .name = "rx_green_prio_1", .offset = 0x25 },
50 { .name = "rx_green_prio_2", .offset = 0x26 },
51 { .name = "rx_green_prio_3", .offset = 0x27 },
52 { .name = "rx_green_prio_4", .offset = 0x28 },
53 { .name = "rx_green_prio_5", .offset = 0x29 },
54 { .name = "rx_green_prio_6", .offset = 0x2a },
55 { .name = "rx_green_prio_7", .offset = 0x2b },
56 { .name = "rx_assembly_err", .offset = 0x2c },
57 { .name = "rx_smd_err", .offset = 0x2d },
58 { .name = "rx_assembly_ok", .offset = 0x2e },
59 { .name = "rx_merge_frag", .offset = 0x2f },
60 { .name = "rx_pmac_octets", .offset = 0x30, },
61 { .name = "rx_pmac_unicast", .offset = 0x31, },
62 { .name = "rx_pmac_multicast", .offset = 0x32 },
63 { .name = "rx_pmac_broadcast", .offset = 0x33 },
64 { .name = "rx_pmac_short", .offset = 0x34 },
65 { .name = "rx_pmac_frag", .offset = 0x35 },
66 { .name = "rx_pmac_jabber", .offset = 0x36 },
67 { .name = "rx_pmac_crc", .offset = 0x37 },
68 { .name = "rx_pmac_symbol_err", .offset = 0x38 },
69 { .name = "rx_pmac_sz_64", .offset = 0x39 },
70 { .name = "rx_pmac_sz_65_127", .offset = 0x3a },
71 { .name = "rx_pmac_sz_128_255", .offset = 0x3b },
72 { .name = "rx_pmac_sz_256_511", .offset = 0x3c },
73 { .name = "rx_pmac_sz_512_1023", .offset = 0x3d },
74 { .name = "rx_pmac_sz_1024_1526", .offset = 0x3e },
75 { .name = "rx_pmac_sz_jumbo", .offset = 0x3f },
76 { .name = "rx_pmac_pause", .offset = 0x40 },
77 { .name = "rx_pmac_control", .offset = 0x41 },
78 { .name = "rx_pmac_long", .offset = 0x42 },
80 { .name = "tx_octets", .offset = 0x80, },
81 { .name = "tx_unicast", .offset = 0x81, },
82 { .name = "tx_multicast", .offset = 0x82 },
83 { .name = "tx_broadcast", .offset = 0x83 },
84 { .name = "tx_col", .offset = 0x84 },
85 { .name = "tx_drop", .offset = 0x85 },
86 { .name = "tx_pause", .offset = 0x86 },
87 { .name = "tx_sz_64", .offset = 0x87 },
88 { .name = "tx_sz_65_127", .offset = 0x88 },
89 { .name = "tx_sz_128_255", .offset = 0x89 },
90 { .name = "tx_sz_256_511", .offset = 0x8a },
91 { .name = "tx_sz_512_1023", .offset = 0x8b },
92 { .name = "tx_sz_1024_1526", .offset = 0x8c },
93 { .name = "tx_sz_jumbo", .offset = 0x8d },
94 { .name = "tx_yellow_prio_0", .offset = 0x8e },
95 { .name = "tx_yellow_prio_1", .offset = 0x8f },
96 { .name = "tx_yellow_prio_2", .offset = 0x90 },
97 { .name = "tx_yellow_prio_3", .offset = 0x91 },
98 { .name = "tx_yellow_prio_4", .offset = 0x92 },
99 { .name = "tx_yellow_prio_5", .offset = 0x93 },
100 { .name = "tx_yellow_prio_6", .offset = 0x94 },
101 { .name = "tx_yellow_prio_7", .offset = 0x95 },
102 { .name = "tx_green_prio_0", .offset = 0x96 },
103 { .name = "tx_green_prio_1", .offset = 0x97 },
104 { .name = "tx_green_prio_2", .offset = 0x98 },
105 { .name = "tx_green_prio_3", .offset = 0x99 },
106 { .name = "tx_green_prio_4", .offset = 0x9a },
107 { .name = "tx_green_prio_5", .offset = 0x9b },
108 { .name = "tx_green_prio_6", .offset = 0x9c },
109 { .name = "tx_green_prio_7", .offset = 0x9d },
110 { .name = "tx_aged", .offset = 0x9e },
111 { .name = "tx_llct", .offset = 0x9f },
112 { .name = "tx_ct", .offset = 0xa0 },
113 { .name = "tx_mm_hold", .offset = 0xa1 },
114 { .name = "tx_merge_frag", .offset = 0xa2 },
115 { .name = "tx_pmac_octets", .offset = 0xa3, },
116 { .name = "tx_pmac_unicast", .offset = 0xa4, },
117 { .name = "tx_pmac_multicast", .offset = 0xa5 },
118 { .name = "tx_pmac_broadcast", .offset = 0xa6 },
119 { .name = "tx_pmac_pause", .offset = 0xa7 },
120 { .name = "tx_pmac_sz_64", .offset = 0xa8 },
121 { .name = "tx_pmac_sz_65_127", .offset = 0xa9 },
122 { .name = "tx_pmac_sz_128_255", .offset = 0xaa },
123 { .name = "tx_pmac_sz_256_511", .offset = 0xab },
124 { .name = "tx_pmac_sz_512_1023", .offset = 0xac },
125 { .name = "tx_pmac_sz_1024_1526", .offset = 0xad },
126 { .name = "tx_pmac_sz_jumbo", .offset = 0xae },
128 { .name = "dr_local", .offset = 0x100 },
129 { .name = "dr_tail", .offset = 0x101 },
130 { .name = "dr_yellow_prio_0", .offset = 0x102 },
131 { .name = "dr_yellow_prio_1", .offset = 0x103 },
132 { .name = "dr_yellow_prio_2", .offset = 0x104 },
133 { .name = "dr_yellow_prio_3", .offset = 0x105 },
134 { .name = "dr_yellow_prio_4", .offset = 0x106 },
135 { .name = "dr_yellow_prio_5", .offset = 0x107 },
136 { .name = "dr_yellow_prio_6", .offset = 0x108 },
137 { .name = "dr_yellow_prio_7", .offset = 0x109 },
138 { .name = "dr_green_prio_0", .offset = 0x10a },
139 { .name = "dr_green_prio_1", .offset = 0x10b },
140 { .name = "dr_green_prio_2", .offset = 0x10c },
141 { .name = "dr_green_prio_3", .offset = 0x10d },
142 { .name = "dr_green_prio_4", .offset = 0x10e },
143 { .name = "dr_green_prio_5", .offset = 0x10f },
144 { .name = "dr_green_prio_6", .offset = 0x110 },
145 { .name = "dr_green_prio_7", .offset = 0x111 },
297 mutex_lock(&lan966x->stats_lock); in lan966x_stats_update()
299 for (i = 0; i < lan966x->num_phys_ports; i++) { in lan966x_stats_update()
300 uint idx = i * lan966x->num_stats; in lan966x_stats_update()
305 for (j = 0; j < lan966x->num_stats; j++) { in lan966x_stats_update()
306 u32 offset = lan966x->stats_layout[j].offset; in lan966x_stats_update()
308 lan966x_add_cnt(&lan966x->stats[idx++], in lan966x_stats_update()
313 mutex_unlock(&lan966x->stats_lock); in lan966x_stats_update()
319 struct lan966x *lan966x = port->lan966x; in lan966x_get_sset_count()
322 return -EOPNOTSUPP; in lan966x_get_sset_count()
324 return lan966x->num_stats; in lan966x_get_sset_count()
330 struct lan966x *lan966x = port->lan966x; in lan966x_get_strings()
336 for (i = 0; i < lan966x->num_stats; i++) in lan966x_get_strings()
338 lan966x->stats_layout[i].name, ETH_GSTRING_LEN); in lan966x_get_strings()
345 struct lan966x *lan966x = port->lan966x; in lan966x_get_ethtool_stats()
352 for (i = 0; i < lan966x->num_stats; i++) in lan966x_get_ethtool_stats()
353 *data++ = lan966x->stats[port->chip_port * in lan966x_get_ethtool_stats()
354 lan966x->num_stats + i]; in lan966x_get_ethtool_stats()
361 struct lan966x *lan966x = port->lan966x; in lan966x_get_eth_mac_stats()
366 idx = port->chip_port * lan966x->num_stats; in lan966x_get_eth_mac_stats()
368 mutex_lock(&lan966x->stats_lock); in lan966x_get_eth_mac_stats()
370 mac_stats->FramesTransmittedOK = in lan966x_get_eth_mac_stats()
371 lan966x->stats[idx + SYS_COUNT_TX_UC] + in lan966x_get_eth_mac_stats()
372 lan966x->stats[idx + SYS_COUNT_TX_MC] + in lan966x_get_eth_mac_stats()
373 lan966x->stats[idx + SYS_COUNT_TX_BC] + in lan966x_get_eth_mac_stats()
374 lan966x->stats[idx + SYS_COUNT_TX_PMAC_UC] + in lan966x_get_eth_mac_stats()
375 lan966x->stats[idx + SYS_COUNT_TX_PMAC_MC] + in lan966x_get_eth_mac_stats()
376 lan966x->stats[idx + SYS_COUNT_TX_PMAC_BC]; in lan966x_get_eth_mac_stats()
377 mac_stats->SingleCollisionFrames = in lan966x_get_eth_mac_stats()
378 lan966x->stats[idx + SYS_COUNT_TX_COL]; in lan966x_get_eth_mac_stats()
379 mac_stats->MultipleCollisionFrames = 0; in lan966x_get_eth_mac_stats()
380 mac_stats->FramesReceivedOK = in lan966x_get_eth_mac_stats()
381 lan966x->stats[idx + SYS_COUNT_RX_UC] + in lan966x_get_eth_mac_stats()
382 lan966x->stats[idx + SYS_COUNT_RX_MC] + in lan966x_get_eth_mac_stats()
383 lan966x->stats[idx + SYS_COUNT_RX_BC]; in lan966x_get_eth_mac_stats()
384 mac_stats->FrameCheckSequenceErrors = in lan966x_get_eth_mac_stats()
385 lan966x->stats[idx + SYS_COUNT_RX_CRC] + in lan966x_get_eth_mac_stats()
386 lan966x->stats[idx + SYS_COUNT_RX_CRC]; in lan966x_get_eth_mac_stats()
387 mac_stats->AlignmentErrors = 0; in lan966x_get_eth_mac_stats()
388 mac_stats->OctetsTransmittedOK = in lan966x_get_eth_mac_stats()
389 lan966x->stats[idx + SYS_COUNT_TX_OCT] + in lan966x_get_eth_mac_stats()
390 lan966x->stats[idx + SYS_COUNT_TX_PMAC_OCT]; in lan966x_get_eth_mac_stats()
391 mac_stats->FramesWithDeferredXmissions = in lan966x_get_eth_mac_stats()
392 lan966x->stats[idx + SYS_COUNT_TX_MM_HOLD]; in lan966x_get_eth_mac_stats()
393 mac_stats->LateCollisions = 0; in lan966x_get_eth_mac_stats()
394 mac_stats->FramesAbortedDueToXSColls = 0; in lan966x_get_eth_mac_stats()
395 mac_stats->FramesLostDueToIntMACXmitError = 0; in lan966x_get_eth_mac_stats()
396 mac_stats->CarrierSenseErrors = 0; in lan966x_get_eth_mac_stats()
397 mac_stats->OctetsReceivedOK = in lan966x_get_eth_mac_stats()
398 lan966x->stats[idx + SYS_COUNT_RX_OCT]; in lan966x_get_eth_mac_stats()
399 mac_stats->FramesLostDueToIntMACRcvError = 0; in lan966x_get_eth_mac_stats()
400 mac_stats->MulticastFramesXmittedOK = in lan966x_get_eth_mac_stats()
401 lan966x->stats[idx + SYS_COUNT_TX_MC] + in lan966x_get_eth_mac_stats()
402 lan966x->stats[idx + SYS_COUNT_TX_PMAC_MC]; in lan966x_get_eth_mac_stats()
403 mac_stats->BroadcastFramesXmittedOK = in lan966x_get_eth_mac_stats()
404 lan966x->stats[idx + SYS_COUNT_TX_BC] + in lan966x_get_eth_mac_stats()
405 lan966x->stats[idx + SYS_COUNT_TX_PMAC_BC]; in lan966x_get_eth_mac_stats()
406 mac_stats->FramesWithExcessiveDeferral = 0; in lan966x_get_eth_mac_stats()
407 mac_stats->MulticastFramesReceivedOK = in lan966x_get_eth_mac_stats()
408 lan966x->stats[idx + SYS_COUNT_RX_MC]; in lan966x_get_eth_mac_stats()
409 mac_stats->BroadcastFramesReceivedOK = in lan966x_get_eth_mac_stats()
410 lan966x->stats[idx + SYS_COUNT_RX_BC]; in lan966x_get_eth_mac_stats()
411 mac_stats->InRangeLengthErrors = in lan966x_get_eth_mac_stats()
412 lan966x->stats[idx + SYS_COUNT_RX_FRAG] + in lan966x_get_eth_mac_stats()
413 lan966x->stats[idx + SYS_COUNT_RX_JABBER] + in lan966x_get_eth_mac_stats()
414 lan966x->stats[idx + SYS_COUNT_RX_CRC] + in lan966x_get_eth_mac_stats()
415 lan966x->stats[idx + SYS_COUNT_RX_PMAC_FRAG] + in lan966x_get_eth_mac_stats()
416 lan966x->stats[idx + SYS_COUNT_RX_PMAC_JABBER] + in lan966x_get_eth_mac_stats()
417 lan966x->stats[idx + SYS_COUNT_RX_PMAC_CRC]; in lan966x_get_eth_mac_stats()
418 mac_stats->OutOfRangeLengthField = in lan966x_get_eth_mac_stats()
419 lan966x->stats[idx + SYS_COUNT_RX_SHORT] + in lan966x_get_eth_mac_stats()
420 lan966x->stats[idx + SYS_COUNT_RX_PMAC_SHORT] + in lan966x_get_eth_mac_stats()
421 lan966x->stats[idx + SYS_COUNT_RX_LONG] + in lan966x_get_eth_mac_stats()
422 lan966x->stats[idx + SYS_COUNT_RX_PMAC_LONG]; in lan966x_get_eth_mac_stats()
423 mac_stats->FrameTooLongErrors = in lan966x_get_eth_mac_stats()
424 lan966x->stats[idx + SYS_COUNT_RX_LONG] + in lan966x_get_eth_mac_stats()
425 lan966x->stats[idx + SYS_COUNT_RX_PMAC_LONG]; in lan966x_get_eth_mac_stats()
427 mutex_unlock(&lan966x->stats_lock); in lan966x_get_eth_mac_stats()
446 struct lan966x *lan966x = port->lan966x; in lan966x_get_eth_rmon_stats()
451 idx = port->chip_port * lan966x->num_stats; in lan966x_get_eth_rmon_stats()
453 mutex_lock(&lan966x->stats_lock); in lan966x_get_eth_rmon_stats()
455 rmon_stats->undersize_pkts = in lan966x_get_eth_rmon_stats()
456 lan966x->stats[idx + SYS_COUNT_RX_SHORT] + in lan966x_get_eth_rmon_stats()
457 lan966x->stats[idx + SYS_COUNT_RX_PMAC_SHORT]; in lan966x_get_eth_rmon_stats()
458 rmon_stats->oversize_pkts = in lan966x_get_eth_rmon_stats()
459 lan966x->stats[idx + SYS_COUNT_RX_LONG] + in lan966x_get_eth_rmon_stats()
460 lan966x->stats[idx + SYS_COUNT_RX_PMAC_LONG]; in lan966x_get_eth_rmon_stats()
461 rmon_stats->fragments = in lan966x_get_eth_rmon_stats()
462 lan966x->stats[idx + SYS_COUNT_RX_FRAG] + in lan966x_get_eth_rmon_stats()
463 lan966x->stats[idx + SYS_COUNT_RX_PMAC_FRAG]; in lan966x_get_eth_rmon_stats()
464 rmon_stats->jabbers = in lan966x_get_eth_rmon_stats()
465 lan966x->stats[idx + SYS_COUNT_RX_JABBER] + in lan966x_get_eth_rmon_stats()
466 lan966x->stats[idx + SYS_COUNT_RX_PMAC_JABBER]; in lan966x_get_eth_rmon_stats()
467 rmon_stats->hist[0] = in lan966x_get_eth_rmon_stats()
468 lan966x->stats[idx + SYS_COUNT_RX_SZ_64] + in lan966x_get_eth_rmon_stats()
469 lan966x->stats[idx + SYS_COUNT_RX_PMAC_SZ_64]; in lan966x_get_eth_rmon_stats()
470 rmon_stats->hist[1] = in lan966x_get_eth_rmon_stats()
471 lan966x->stats[idx + SYS_COUNT_RX_SZ_65_127] + in lan966x_get_eth_rmon_stats()
472 lan966x->stats[idx + SYS_COUNT_RX_PMAC_SZ_65_127]; in lan966x_get_eth_rmon_stats()
473 rmon_stats->hist[2] = in lan966x_get_eth_rmon_stats()
474 lan966x->stats[idx + SYS_COUNT_RX_SZ_128_255] + in lan966x_get_eth_rmon_stats()
475 lan966x->stats[idx + SYS_COUNT_RX_PMAC_SZ_128_255]; in lan966x_get_eth_rmon_stats()
476 rmon_stats->hist[3] = in lan966x_get_eth_rmon_stats()
477 lan966x->stats[idx + SYS_COUNT_RX_SZ_256_511] + in lan966x_get_eth_rmon_stats()
478 lan966x->stats[idx + SYS_COUNT_RX_PMAC_SZ_256_511]; in lan966x_get_eth_rmon_stats()
479 rmon_stats->hist[4] = in lan966x_get_eth_rmon_stats()
480 lan966x->stats[idx + SYS_COUNT_RX_SZ_512_1023] + in lan966x_get_eth_rmon_stats()
481 lan966x->stats[idx + SYS_COUNT_RX_PMAC_SZ_512_1023]; in lan966x_get_eth_rmon_stats()
482 rmon_stats->hist[5] = in lan966x_get_eth_rmon_stats()
483 lan966x->stats[idx + SYS_COUNT_RX_SZ_1024_1526] + in lan966x_get_eth_rmon_stats()
484 lan966x->stats[idx + SYS_COUNT_RX_PMAC_SZ_1024_1526]; in lan966x_get_eth_rmon_stats()
485 rmon_stats->hist[6] = in lan966x_get_eth_rmon_stats()
486 lan966x->stats[idx + SYS_COUNT_RX_SZ_1024_1526] + in lan966x_get_eth_rmon_stats()
487 lan966x->stats[idx + SYS_COUNT_RX_PMAC_SZ_1024_1526]; in lan966x_get_eth_rmon_stats()
489 rmon_stats->hist_tx[0] = in lan966x_get_eth_rmon_stats()
490 lan966x->stats[idx + SYS_COUNT_TX_SZ_64] + in lan966x_get_eth_rmon_stats()
491 lan966x->stats[idx + SYS_COUNT_TX_PMAC_SZ_64]; in lan966x_get_eth_rmon_stats()
492 rmon_stats->hist_tx[1] = in lan966x_get_eth_rmon_stats()
493 lan966x->stats[idx + SYS_COUNT_TX_SZ_65_127] + in lan966x_get_eth_rmon_stats()
494 lan966x->stats[idx + SYS_COUNT_TX_PMAC_SZ_65_127]; in lan966x_get_eth_rmon_stats()
495 rmon_stats->hist_tx[2] = in lan966x_get_eth_rmon_stats()
496 lan966x->stats[idx + SYS_COUNT_TX_SZ_128_255] + in lan966x_get_eth_rmon_stats()
497 lan966x->stats[idx + SYS_COUNT_TX_PMAC_SZ_128_255]; in lan966x_get_eth_rmon_stats()
498 rmon_stats->hist_tx[3] = in lan966x_get_eth_rmon_stats()
499 lan966x->stats[idx + SYS_COUNT_TX_SZ_256_511] + in lan966x_get_eth_rmon_stats()
500 lan966x->stats[idx + SYS_COUNT_TX_PMAC_SZ_256_511]; in lan966x_get_eth_rmon_stats()
501 rmon_stats->hist_tx[4] = in lan966x_get_eth_rmon_stats()
502 lan966x->stats[idx + SYS_COUNT_TX_SZ_512_1023] + in lan966x_get_eth_rmon_stats()
503 lan966x->stats[idx + SYS_COUNT_TX_PMAC_SZ_512_1023]; in lan966x_get_eth_rmon_stats()
504 rmon_stats->hist_tx[5] = in lan966x_get_eth_rmon_stats()
505 lan966x->stats[idx + SYS_COUNT_TX_SZ_1024_1526] + in lan966x_get_eth_rmon_stats()
506 lan966x->stats[idx + SYS_COUNT_TX_PMAC_SZ_1024_1526]; in lan966x_get_eth_rmon_stats()
507 rmon_stats->hist_tx[6] = in lan966x_get_eth_rmon_stats()
508 lan966x->stats[idx + SYS_COUNT_TX_SZ_1024_1526] + in lan966x_get_eth_rmon_stats()
509 lan966x->stats[idx + SYS_COUNT_TX_PMAC_SZ_1024_1526]; in lan966x_get_eth_rmon_stats()
511 mutex_unlock(&lan966x->stats_lock); in lan966x_get_eth_rmon_stats()
521 return phylink_ethtool_ksettings_get(port->phylink, cmd); in lan966x_get_link_ksettings()
529 return phylink_ethtool_ksettings_set(port->phylink, cmd); in lan966x_set_link_ksettings()
537 phylink_ethtool_get_pauseparam(port->phylink, pause); in lan966x_get_pauseparam()
545 return phylink_ethtool_set_pauseparam(port->phylink, pause); in lan966x_set_pauseparam()
552 struct lan966x *lan966x = port->lan966x; in lan966x_get_ts_info()
555 if (!lan966x->ptp) in lan966x_get_ts_info()
558 phc = &lan966x->phc[LAN966X_PHC_PORT]; in lan966x_get_ts_info()
560 info->phc_index = phc->clock ? ptp_clock_index(phc->clock) : -1; in lan966x_get_ts_info()
561 if (info->phc_index == -1) { in lan966x_get_ts_info()
562 info->so_timestamping |= SOF_TIMESTAMPING_TX_SOFTWARE | in lan966x_get_ts_info()
567 info->so_timestamping |= SOF_TIMESTAMPING_TX_SOFTWARE | in lan966x_get_ts_info()
573 info->tx_types = BIT(HWTSTAMP_TX_OFF) | BIT(HWTSTAMP_TX_ON) | in lan966x_get_ts_info()
575 info->rx_filters = BIT(HWTSTAMP_FILTER_NONE) | in lan966x_get_ts_info()
603 queue_delayed_work(lan966x->stats_queue, &lan966x->stats_work, in lan966x_check_stats_work()
611 struct lan966x *lan966x = port->lan966x; in lan966x_stats_get()
615 idx = port->chip_port * lan966x->num_stats; in lan966x_stats_get()
617 mutex_lock(&lan966x->stats_lock); in lan966x_stats_get()
619 stats->rx_bytes = lan966x->stats[idx + SYS_COUNT_RX_OCT] + in lan966x_stats_get()
620 lan966x->stats[idx + SYS_COUNT_RX_PMAC_OCT]; in lan966x_stats_get()
622 stats->rx_packets = lan966x->stats[idx + SYS_COUNT_RX_SHORT] + in lan966x_stats_get()
623 lan966x->stats[idx + SYS_COUNT_RX_FRAG] + in lan966x_stats_get()
624 lan966x->stats[idx + SYS_COUNT_RX_JABBER] + in lan966x_stats_get()
625 lan966x->stats[idx + SYS_COUNT_RX_CRC] + in lan966x_stats_get()
626 lan966x->stats[idx + SYS_COUNT_RX_SYMBOL_ERR] + in lan966x_stats_get()
627 lan966x->stats[idx + SYS_COUNT_RX_SZ_64] + in lan966x_stats_get()
628 lan966x->stats[idx + SYS_COUNT_RX_SZ_65_127] + in lan966x_stats_get()
629 lan966x->stats[idx + SYS_COUNT_RX_SZ_128_255] + in lan966x_stats_get()
630 lan966x->stats[idx + SYS_COUNT_RX_SZ_256_511] + in lan966x_stats_get()
631 lan966x->stats[idx + SYS_COUNT_RX_SZ_512_1023] + in lan966x_stats_get()
632 lan966x->stats[idx + SYS_COUNT_RX_SZ_1024_1526] + in lan966x_stats_get()
633 lan966x->stats[idx + SYS_COUNT_RX_SZ_JUMBO] + in lan966x_stats_get()
634 lan966x->stats[idx + SYS_COUNT_RX_LONG] + in lan966x_stats_get()
635 lan966x->stats[idx + SYS_COUNT_RX_PMAC_SHORT] + in lan966x_stats_get()
636 lan966x->stats[idx + SYS_COUNT_RX_PMAC_FRAG] + in lan966x_stats_get()
637 lan966x->stats[idx + SYS_COUNT_RX_PMAC_JABBER] + in lan966x_stats_get()
638 lan966x->stats[idx + SYS_COUNT_RX_PMAC_SZ_64] + in lan966x_stats_get()
639 lan966x->stats[idx + SYS_COUNT_RX_PMAC_SZ_65_127] + in lan966x_stats_get()
640 lan966x->stats[idx + SYS_COUNT_RX_PMAC_SZ_128_255] + in lan966x_stats_get()
641 lan966x->stats[idx + SYS_COUNT_RX_PMAC_SZ_256_511] + in lan966x_stats_get()
642 lan966x->stats[idx + SYS_COUNT_RX_PMAC_SZ_512_1023] + in lan966x_stats_get()
643 lan966x->stats[idx + SYS_COUNT_RX_PMAC_SZ_1024_1526] + in lan966x_stats_get()
644 lan966x->stats[idx + SYS_COUNT_RX_PMAC_SZ_JUMBO]; in lan966x_stats_get()
646 stats->multicast = lan966x->stats[idx + SYS_COUNT_RX_MC] + in lan966x_stats_get()
647 lan966x->stats[idx + SYS_COUNT_RX_PMAC_MC]; in lan966x_stats_get()
649 stats->rx_errors = lan966x->stats[idx + SYS_COUNT_RX_SHORT] + in lan966x_stats_get()
650 lan966x->stats[idx + SYS_COUNT_RX_FRAG] + in lan966x_stats_get()
651 lan966x->stats[idx + SYS_COUNT_RX_JABBER] + in lan966x_stats_get()
652 lan966x->stats[idx + SYS_COUNT_RX_CRC] + in lan966x_stats_get()
653 lan966x->stats[idx + SYS_COUNT_RX_SYMBOL_ERR] + in lan966x_stats_get()
654 lan966x->stats[idx + SYS_COUNT_RX_LONG]; in lan966x_stats_get()
656 stats->rx_dropped = dev->stats.rx_dropped + in lan966x_stats_get()
657 lan966x->stats[idx + SYS_COUNT_RX_LONG] + in lan966x_stats_get()
658 lan966x->stats[idx + SYS_COUNT_DR_LOCAL] + in lan966x_stats_get()
659 lan966x->stats[idx + SYS_COUNT_DR_TAIL] + in lan966x_stats_get()
660 lan966x->stats[idx + SYS_COUNT_RX_RED_PRIO_0] + in lan966x_stats_get()
661 lan966x->stats[idx + SYS_COUNT_RX_RED_PRIO_1] + in lan966x_stats_get()
662 lan966x->stats[idx + SYS_COUNT_RX_RED_PRIO_2] + in lan966x_stats_get()
663 lan966x->stats[idx + SYS_COUNT_RX_RED_PRIO_3] + in lan966x_stats_get()
664 lan966x->stats[idx + SYS_COUNT_RX_RED_PRIO_4] + in lan966x_stats_get()
665 lan966x->stats[idx + SYS_COUNT_RX_RED_PRIO_5] + in lan966x_stats_get()
666 lan966x->stats[idx + SYS_COUNT_RX_RED_PRIO_6] + in lan966x_stats_get()
667 lan966x->stats[idx + SYS_COUNT_RX_RED_PRIO_7]; in lan966x_stats_get()
670 stats->rx_dropped += in lan966x_stats_get()
671 (lan966x->stats[idx + SYS_COUNT_DR_YELLOW_PRIO_0 + i] + in lan966x_stats_get()
672 lan966x->stats[idx + SYS_COUNT_DR_GREEN_PRIO_0 + i]); in lan966x_stats_get()
676 stats->tx_bytes = lan966x->stats[idx + SYS_COUNT_TX_OCT] + in lan966x_stats_get()
677 lan966x->stats[idx + SYS_COUNT_TX_PMAC_OCT]; in lan966x_stats_get()
679 stats->tx_packets = lan966x->stats[idx + SYS_COUNT_TX_SZ_64] + in lan966x_stats_get()
680 lan966x->stats[idx + SYS_COUNT_TX_SZ_65_127] + in lan966x_stats_get()
681 lan966x->stats[idx + SYS_COUNT_TX_SZ_128_255] + in lan966x_stats_get()
682 lan966x->stats[idx + SYS_COUNT_TX_SZ_256_511] + in lan966x_stats_get()
683 lan966x->stats[idx + SYS_COUNT_TX_SZ_512_1023] + in lan966x_stats_get()
684 lan966x->stats[idx + SYS_COUNT_TX_SZ_1024_1526] + in lan966x_stats_get()
685 lan966x->stats[idx + SYS_COUNT_TX_SZ_JUMBO] + in lan966x_stats_get()
686 lan966x->stats[idx + SYS_COUNT_TX_PMAC_SZ_64] + in lan966x_stats_get()
687 lan966x->stats[idx + SYS_COUNT_TX_PMAC_SZ_65_127] + in lan966x_stats_get()
688 lan966x->stats[idx + SYS_COUNT_TX_PMAC_SZ_128_255] + in lan966x_stats_get()
689 lan966x->stats[idx + SYS_COUNT_TX_PMAC_SZ_256_511] + in lan966x_stats_get()
690 lan966x->stats[idx + SYS_COUNT_TX_PMAC_SZ_512_1023] + in lan966x_stats_get()
691 lan966x->stats[idx + SYS_COUNT_TX_PMAC_SZ_1024_1526] + in lan966x_stats_get()
692 lan966x->stats[idx + SYS_COUNT_TX_PMAC_SZ_JUMBO]; in lan966x_stats_get()
694 stats->tx_dropped = lan966x->stats[idx + SYS_COUNT_TX_DROP] + in lan966x_stats_get()
695 lan966x->stats[idx + SYS_COUNT_TX_AGED]; in lan966x_stats_get()
697 stats->collisions = lan966x->stats[idx + SYS_COUNT_TX_COL]; in lan966x_stats_get()
699 mutex_unlock(&lan966x->stats_lock); in lan966x_stats_get()
706 lan966x->stats_layout = lan966x_stats_layout; in lan966x_stats_init()
707 lan966x->num_stats = ARRAY_SIZE(lan966x_stats_layout); in lan966x_stats_init()
708 lan966x->stats = devm_kcalloc(lan966x->dev, lan966x->num_phys_ports * in lan966x_stats_init()
709 lan966x->num_stats, in lan966x_stats_init()
711 if (!lan966x->stats) in lan966x_stats_init()
712 return -ENOMEM; in lan966x_stats_init()
715 mutex_init(&lan966x->stats_lock); in lan966x_stats_init()
716 snprintf(queue_name, sizeof(queue_name), "%s-stats", in lan966x_stats_init()
717 dev_name(lan966x->dev)); in lan966x_stats_init()
718 lan966x->stats_queue = create_singlethread_workqueue(queue_name); in lan966x_stats_init()
719 if (!lan966x->stats_queue) in lan966x_stats_init()
720 return -ENOMEM; in lan966x_stats_init()
722 INIT_DELAYED_WORK(&lan966x->stats_work, lan966x_check_stats_work); in lan966x_stats_init()
723 queue_delayed_work(lan966x->stats_queue, &lan966x->stats_work, in lan966x_stats_init()