MCPcopy Create free account
hub / github.com/F-Stack/f-stack / sfc_stats_get

Function sfc_stats_get

dpdk/drivers/net/sfc/sfc_ethdev.c:679–784  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

677}
678
679static int
680sfc_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
681{
682 const struct sfc_adapter_priv *sap = sfc_adapter_priv_by_eth_dev(dev);
683 bool have_dp_rx_stats = sap->dp_rx->features & SFC_DP_RX_FEAT_STATS;
684 bool have_dp_tx_stats = sap->dp_tx->features & SFC_DP_TX_FEAT_STATS;
685 struct sfc_adapter *sa = sfc_adapter_by_eth_dev(dev);
686 struct sfc_port *port = &sa->port;
687 uint64_t *mac_stats;
688 int ret;
689
690 sfc_adapter_lock(sa);
691
692 if (have_dp_rx_stats) {
693 sfc_stats_get_dp_rx(sa, &stats->ipackets, &stats->ibytes);
694 if (dev->data->dev_conf.rxmode.offloads &
695 RTE_ETH_RX_OFFLOAD_KEEP_CRC) {
696 stats->ibytes -= stats->ipackets * RTE_ETHER_CRC_LEN;
697 }
698 }
699 if (have_dp_tx_stats)
700 sfc_stats_get_dp_tx(sa, &stats->opackets, &stats->obytes);
701
702 ret = sfc_port_update_mac_stats(sa, B_FALSE);
703 if (ret != 0)
704 goto unlock;
705
706 mac_stats = port->mac_stats_buf;
707
708 if (EFX_MAC_STAT_SUPPORTED(port->mac_stats_mask,
709 EFX_MAC_VADAPTER_RX_UNICAST_PACKETS)) {
710 if (!have_dp_rx_stats) {
711 stats->ipackets =
712 mac_stats[EFX_MAC_VADAPTER_RX_UNICAST_PACKETS] +
713 mac_stats[EFX_MAC_VADAPTER_RX_MULTICAST_PACKETS] +
714 mac_stats[EFX_MAC_VADAPTER_RX_BROADCAST_PACKETS];
715 stats->ibytes =
716 mac_stats[EFX_MAC_VADAPTER_RX_UNICAST_BYTES] +
717 mac_stats[EFX_MAC_VADAPTER_RX_MULTICAST_BYTES] +
718 mac_stats[EFX_MAC_VADAPTER_RX_BROADCAST_BYTES];
719
720 /* CRC is included in these stats, but shouldn't be */
721 stats->ibytes -= stats->ipackets * RTE_ETHER_CRC_LEN;
722 }
723 if (!have_dp_tx_stats) {
724 stats->opackets =
725 mac_stats[EFX_MAC_VADAPTER_TX_UNICAST_PACKETS] +
726 mac_stats[EFX_MAC_VADAPTER_TX_MULTICAST_PACKETS] +
727 mac_stats[EFX_MAC_VADAPTER_TX_BROADCAST_PACKETS];
728 stats->obytes =
729 mac_stats[EFX_MAC_VADAPTER_TX_UNICAST_BYTES] +
730 mac_stats[EFX_MAC_VADAPTER_TX_MULTICAST_BYTES] +
731 mac_stats[EFX_MAC_VADAPTER_TX_BROADCAST_BYTES];
732
733 /* CRC is included in these stats, but shouldn't be */
734 stats->obytes -= stats->opackets * RTE_ETHER_CRC_LEN;
735 }
736 stats->imissed = mac_stats[EFX_MAC_VADAPTER_RX_BAD_PACKETS];

Callers

nothing calls this directly

Calls 6

sfc_adapter_by_eth_devFunction · 0.85
sfc_stats_get_dp_rxFunction · 0.85
sfc_stats_get_dp_txFunction · 0.85
sfc_update_diff_statFunction · 0.85

Tested by

no test coverage detected