Lines Matching refs:lan966x

293 static void lan966x_stats_update(struct lan966x *lan966x)
297 mutex_lock(&lan966x->stats_lock);
299 for (i = 0; i < lan966x->num_phys_ports; i++) {
300 uint idx = i * lan966x->num_stats;
303 lan966x, SYS_STAT_CFG);
305 for (j = 0; j < lan966x->num_stats; j++) {
306 u32 offset = lan966x->stats_layout[j].offset;
308 lan966x_add_cnt(&lan966x->stats[idx++],
309 lan_rd(lan966x, SYS_CNT(offset)));
313 mutex_unlock(&lan966x->stats_lock);
319 struct lan966x *lan966x = port->lan966x;
324 return lan966x->num_stats;
330 struct lan966x *lan966x = port->lan966x;
336 for (i = 0; i < lan966x->num_stats; i++)
338 lan966x->stats_layout[i].name, ETH_GSTRING_LEN);
345 struct lan966x *lan966x = port->lan966x;
349 lan966x_stats_update(lan966x);
352 for (i = 0; i < lan966x->num_stats; i++)
353 *data++ = lan966x->stats[port->chip_port *
354 lan966x->num_stats + i];
361 struct lan966x *lan966x = port->lan966x;
364 lan966x_stats_update(lan966x);
366 idx = port->chip_port * lan966x->num_stats;
368 mutex_lock(&lan966x->stats_lock);
371 lan966x->stats[idx + SYS_COUNT_TX_UC] +
372 lan966x->stats[idx + SYS_COUNT_TX_MC] +
373 lan966x->stats[idx + SYS_COUNT_TX_BC] +
374 lan966x->stats[idx + SYS_COUNT_TX_PMAC_UC] +
375 lan966x->stats[idx + SYS_COUNT_TX_PMAC_MC] +
376 lan966x->stats[idx + SYS_COUNT_TX_PMAC_BC];
378 lan966x->stats[idx + SYS_COUNT_TX_COL];
380 lan966x->stats[idx + SYS_COUNT_RX_UC] +
381 lan966x->stats[idx + SYS_COUNT_RX_MC] +
382 lan966x->stats[idx + SYS_COUNT_RX_BC];
384 lan966x->stats[idx + SYS_COUNT_RX_CRC] +
385 lan966x->stats[idx + SYS_COUNT_RX_CRC];
387 lan966x->stats[idx + SYS_COUNT_TX_OCT] +
388 lan966x->stats[idx + SYS_COUNT_TX_PMAC_OCT];
390 lan966x->stats[idx + SYS_COUNT_TX_MM_HOLD];
392 lan966x->stats[idx + SYS_COUNT_RX_OCT];
394 lan966x->stats[idx + SYS_COUNT_TX_MC] +
395 lan966x->stats[idx + SYS_COUNT_TX_PMAC_MC];
397 lan966x->stats[idx + SYS_COUNT_TX_BC] +
398 lan966x->stats[idx + SYS_COUNT_TX_PMAC_BC];
400 lan966x->stats[idx + SYS_COUNT_RX_MC];
402 lan966x->stats[idx + SYS_COUNT_RX_BC];
404 lan966x->stats[idx + SYS_COUNT_RX_FRAG] +
405 lan966x->stats[idx + SYS_COUNT_RX_JABBER] +
406 lan966x->stats[idx + SYS_COUNT_RX_CRC] +
407 lan966x->stats[idx + SYS_COUNT_RX_PMAC_FRAG] +
408 lan966x->stats[idx + SYS_COUNT_RX_PMAC_JABBER] +
409 lan966x->stats[idx + SYS_COUNT_RX_PMAC_CRC];
411 lan966x->stats[idx + SYS_COUNT_RX_SHORT] +
412 lan966x->stats[idx + SYS_COUNT_RX_PMAC_SHORT] +
413 lan966x->stats[idx + SYS_COUNT_RX_LONG] +
414 lan966x->stats[idx + SYS_COUNT_RX_PMAC_LONG];
416 lan966x->stats[idx + SYS_COUNT_RX_LONG] +
417 lan966x->stats[idx + SYS_COUNT_RX_PMAC_LONG];
419 mutex_unlock(&lan966x->stats_lock);
438 struct lan966x *lan966x = port->lan966x;
441 lan966x_stats_update(lan966x);
443 idx = port->chip_port * lan966x->num_stats;
445 mutex_lock(&lan966x->stats_lock);
448 lan966x->stats[idx + SYS_COUNT_RX_SHORT] +
449 lan966x->stats[idx + SYS_COUNT_RX_PMAC_SHORT];
451 lan966x->stats[idx + SYS_COUNT_RX_LONG] +
452 lan966x->stats[idx + SYS_COUNT_RX_PMAC_LONG];
454 lan966x->stats[idx + SYS_COUNT_RX_FRAG] +
455 lan966x->stats[idx + SYS_COUNT_RX_PMAC_FRAG];
457 lan966x->stats[idx + SYS_COUNT_RX_JABBER] +
458 lan966x->stats[idx + SYS_COUNT_RX_PMAC_JABBER];
460 lan966x->stats[idx + SYS_COUNT_RX_SZ_64] +
461 lan966x->stats[idx + SYS_COUNT_RX_PMAC_SZ_64];
463 lan966x->stats[idx + SYS_COUNT_RX_SZ_65_127] +
464 lan966x->stats[idx + SYS_COUNT_RX_PMAC_SZ_65_127];
466 lan966x->stats[idx + SYS_COUNT_RX_SZ_128_255] +
467 lan966x->stats[idx + SYS_COUNT_RX_PMAC_SZ_128_255];
469 lan966x->stats[idx + SYS_COUNT_RX_SZ_256_511] +
470 lan966x->stats[idx + SYS_COUNT_RX_PMAC_SZ_256_511];
472 lan966x->stats[idx + SYS_COUNT_RX_SZ_512_1023] +
473 lan966x->stats[idx + SYS_COUNT_RX_PMAC_SZ_512_1023];
475 lan966x->stats[idx + SYS_COUNT_RX_SZ_1024_1526] +
476 lan966x->stats[idx + SYS_COUNT_RX_PMAC_SZ_1024_1526];
478 lan966x->stats[idx + SYS_COUNT_RX_SZ_1024_1526] +
479 lan966x->stats[idx + SYS_COUNT_RX_PMAC_SZ_1024_1526];
482 lan966x->stats[idx + SYS_COUNT_TX_SZ_64] +
483 lan966x->stats[idx + SYS_COUNT_TX_PMAC_SZ_64];
485 lan966x->stats[idx + SYS_COUNT_TX_SZ_65_127] +
486 lan966x->stats[idx + SYS_COUNT_TX_PMAC_SZ_65_127];
488 lan966x->stats[idx + SYS_COUNT_TX_SZ_128_255] +
489 lan966x->stats[idx + SYS_COUNT_TX_PMAC_SZ_128_255];
491 lan966x->stats[idx + SYS_COUNT_TX_SZ_256_511] +
492 lan966x->stats[idx + SYS_COUNT_TX_PMAC_SZ_256_511];
494 lan966x->stats[idx + SYS_COUNT_TX_SZ_512_1023] +
495 lan966x->stats[idx + SYS_COUNT_TX_PMAC_SZ_512_1023];
497 lan966x->stats[idx + SYS_COUNT_TX_SZ_1024_1526] +
498 lan966x->stats[idx + SYS_COUNT_TX_PMAC_SZ_1024_1526];
500 lan966x->stats[idx + SYS_COUNT_TX_SZ_1024_1526] +
501 lan966x->stats[idx + SYS_COUNT_TX_PMAC_SZ_1024_1526];
503 mutex_unlock(&lan966x->stats_lock);
544 struct lan966x *lan966x = port->lan966x;
547 if (!lan966x->ptp)
550 phc = &lan966x->phc[LAN966X_PHC_PORT];
587 struct lan966x *lan966x = container_of(del_work, struct lan966x,
590 lan966x_stats_update(lan966x);
592 queue_delayed_work(lan966x->stats_queue, &lan966x->stats_work,
600 struct lan966x *lan966x = port->lan966x;
604 idx = port->chip_port * lan966x->num_stats;
606 mutex_lock(&lan966x->stats_lock);
608 stats->rx_bytes = lan966x->stats[idx + SYS_COUNT_RX_OCT] +
609 lan966x->stats[idx + SYS_COUNT_RX_PMAC_OCT];
611 stats->rx_packets = lan966x->stats[idx + SYS_COUNT_RX_SHORT] +
612 lan966x->stats[idx + SYS_COUNT_RX_FRAG] +
613 lan966x->stats[idx + SYS_COUNT_RX_JABBER] +
614 lan966x->stats[idx + SYS_COUNT_RX_CRC] +
615 lan966x->stats[idx + SYS_COUNT_RX_SYMBOL_ERR] +
616 lan966x->stats[idx + SYS_COUNT_RX_SZ_64] +
617 lan966x->stats[idx + SYS_COUNT_RX_SZ_65_127] +
618 lan966x->stats[idx + SYS_COUNT_RX_SZ_128_255] +
619 lan966x->stats[idx + SYS_COUNT_RX_SZ_256_511] +
620 lan966x->stats[idx + SYS_COUNT_RX_SZ_512_1023] +
621 lan966x->stats[idx + SYS_COUNT_RX_SZ_1024_1526] +
622 lan966x->stats[idx + SYS_COUNT_RX_SZ_JUMBO] +
623 lan966x->stats[idx + SYS_COUNT_RX_LONG] +
624 lan966x->stats[idx + SYS_COUNT_RX_PMAC_SHORT] +
625 lan966x->stats[idx + SYS_COUNT_RX_PMAC_FRAG] +
626 lan966x->stats[idx + SYS_COUNT_RX_PMAC_JABBER] +
627 lan966x->stats[idx + SYS_COUNT_RX_PMAC_SZ_64] +
628 lan966x->stats[idx + SYS_COUNT_RX_PMAC_SZ_65_127] +
629 lan966x->stats[idx + SYS_COUNT_RX_PMAC_SZ_128_255] +
630 lan966x->stats[idx + SYS_COUNT_RX_PMAC_SZ_256_511] +
631 lan966x->stats[idx + SYS_COUNT_RX_PMAC_SZ_512_1023] +
632 lan966x->stats[idx + SYS_COUNT_RX_PMAC_SZ_1024_1526] +
633 lan966x->stats[idx + SYS_COUNT_RX_PMAC_SZ_JUMBO];
635 stats->multicast = lan966x->stats[idx + SYS_COUNT_RX_MC] +
636 lan966x->stats[idx + SYS_COUNT_RX_PMAC_MC];
638 stats->rx_errors = lan966x->stats[idx + SYS_COUNT_RX_SHORT] +
639 lan966x->stats[idx + SYS_COUNT_RX_FRAG] +
640 lan966x->stats[idx + SYS_COUNT_RX_JABBER] +
641 lan966x->stats[idx + SYS_COUNT_RX_CRC] +
642 lan966x->stats[idx + SYS_COUNT_RX_SYMBOL_ERR] +
643 lan966x->stats[idx + SYS_COUNT_RX_LONG];
646 lan966x->stats[idx + SYS_COUNT_RX_LONG] +
647 lan966x->stats[idx + SYS_COUNT_DR_LOCAL] +
648 lan966x->stats[idx + SYS_COUNT_DR_TAIL] +
649 lan966x->stats[idx + SYS_COUNT_RX_RED_PRIO_0] +
650 lan966x->stats[idx + SYS_COUNT_RX_RED_PRIO_1] +
651 lan966x->stats[idx + SYS_COUNT_RX_RED_PRIO_2] +
652 lan966x->stats[idx + SYS_COUNT_RX_RED_PRIO_3] +
653 lan966x->stats[idx + SYS_COUNT_RX_RED_PRIO_4] +
654 lan966x->stats[idx + SYS_COUNT_RX_RED_PRIO_5] +
655 lan966x->stats[idx + SYS_COUNT_RX_RED_PRIO_6] +
656 lan966x->stats[idx + SYS_COUNT_RX_RED_PRIO_7];
660 (lan966x->stats[idx + SYS_COUNT_DR_YELLOW_PRIO_0 + i] +
661 lan966x->stats[idx + SYS_COUNT_DR_GREEN_PRIO_0 + i]);
665 stats->tx_bytes = lan966x->stats[idx + SYS_COUNT_TX_OCT] +
666 lan966x->stats[idx + SYS_COUNT_TX_PMAC_OCT];
668 stats->tx_packets = lan966x->stats[idx + SYS_COUNT_TX_SZ_64] +
669 lan966x->stats[idx + SYS_COUNT_TX_SZ_65_127] +
670 lan966x->stats[idx + SYS_COUNT_TX_SZ_128_255] +
671 lan966x->stats[idx + SYS_COUNT_TX_SZ_256_511] +
672 lan966x->stats[idx + SYS_COUNT_TX_SZ_512_1023] +
673 lan966x->stats[idx + SYS_COUNT_TX_SZ_1024_1526] +
674 lan966x->stats[idx + SYS_COUNT_TX_SZ_JUMBO] +
675 lan966x->stats[idx + SYS_COUNT_TX_PMAC_SZ_64] +
676 lan966x->stats[idx + SYS_COUNT_TX_PMAC_SZ_65_127] +
677 lan966x->stats[idx + SYS_COUNT_TX_PMAC_SZ_128_255] +
678 lan966x->stats[idx + SYS_COUNT_TX_PMAC_SZ_256_511] +
679 lan966x->stats[idx + SYS_COUNT_TX_PMAC_SZ_512_1023] +
680 lan966x->stats[idx + SYS_COUNT_TX_PMAC_SZ_1024_1526] +
681 lan966x->stats[idx + SYS_COUNT_TX_PMAC_SZ_JUMBO];
683 stats->tx_dropped = lan966x->stats[idx + SYS_COUNT_TX_DROP] +
684 lan966x->stats[idx + SYS_COUNT_TX_AGED];
686 stats->collisions = lan966x->stats[idx + SYS_COUNT_TX_COL];
688 mutex_unlock(&lan966x->stats_lock);
691 int lan966x_stats_init(struct lan966x *lan966x)
695 lan966x->stats_layout = lan966x_stats_layout;
696 lan966x->num_stats = ARRAY_SIZE(lan966x_stats_layout);
697 lan966x->stats = devm_kcalloc(lan966x->dev, lan966x->num_phys_ports *
698 lan966x->num_stats,
700 if (!lan966x->stats)
704 mutex_init(&lan966x->stats_lock);
706 dev_name(lan966x->dev));
707 lan966x->stats_queue = create_singlethread_workqueue(queue_name);
708 if (!lan966x->stats_queue)
711 INIT_DELAYED_WORK(&lan966x->stats_work, lan966x_check_stats_work);
712 queue_delayed_work(lan966x->stats_queue, &lan966x->stats_work,