diff options
Diffstat (limited to 'sys/dev/bxe/bxe_stats.c')
-rw-r--r-- | sys/dev/bxe/bxe_stats.c | 100 |
1 files changed, 46 insertions, 54 deletions
diff --git a/sys/dev/bxe/bxe_stats.c b/sys/dev/bxe/bxe_stats.c index f6b2397..3d33fb7 100644 --- a/sys/dev/bxe/bxe_stats.c +++ b/sys/dev/bxe/bxe_stats.c @@ -1164,50 +1164,54 @@ bxe_storm_stats_update(struct bxe_softc *sc) static void bxe_net_stats_update(struct bxe_softc *sc) { - struct bxe_eth_stats *estats = &sc->eth_stats; - if_t ifnet = sc->ifp; - int i; - - if_setipackets(ifnet, - bxe_hilo(&estats->total_unicast_packets_received_hi) + - bxe_hilo(&estats->total_multicast_packets_received_hi) + - bxe_hilo(&estats->total_broadcast_packets_received_hi)); - - if_setopackets(ifnet, - bxe_hilo(&estats->total_unicast_packets_transmitted_hi) + - bxe_hilo(&estats->total_multicast_packets_transmitted_hi) + - bxe_hilo(&estats->total_broadcast_packets_transmitted_hi)); - - if_setibytes(ifnet, bxe_hilo(&estats->total_bytes_received_hi)); - - if_setobytes(ifnet, bxe_hilo(&estats->total_bytes_transmitted_hi)); - for (i = 0; i < sc->num_queues; i++) { - struct tstorm_per_queue_stats *old_tclient = - &sc->fp[i].old_tclient; - if_inciqdrops(ifnet, le32toh(old_tclient->checksum_discard)); - } + for (int i = 0; i < sc->num_queues; i++) + if_inc_counter(sc->ifp, IFCOUNTER_IQDROPS, + le32toh(sc->fp[i].old_tclient.checksum_discard)); +} - if_setierrors(ifnet, - bxe_hilo(&estats->rx_stat_etherstatsundersizepkts_hi) + - bxe_hilo(&estats->etherstatsoverrsizepkts_hi) + - bxe_hilo(&estats->brb_drop_hi) + - bxe_hilo(&estats->brb_truncate_hi) + - bxe_hilo(&estats->rx_stat_dot3statsfcserrors_hi) + - bxe_hilo(&estats->rx_stat_dot3statsalignmenterrors_hi) + - bxe_hilo(&estats->no_buff_discard_hi)); - - if_setoerrors(ifnet, - bxe_hilo(&estats->rx_stat_dot3statscarriersenseerrors_hi) + - bxe_hilo(&estats->tx_stat_dot3statsinternalmactransmiterrors_hi)); - - if_setimcasts(ifnet, - bxe_hilo(&estats->total_multicast_packets_received_hi)); - - if_setcollisions(ifnet, - bxe_hilo(&estats->tx_stat_etherstatscollisions_hi) + - bxe_hilo(&estats->tx_stat_dot3statslatecollisions_hi) + - bxe_hilo(&estats->tx_stat_dot3statsexcessivecollisions_hi)); +uint64_t +bxe_get_counter(if_t ifp, ift_counter cnt) +{ + struct bxe_softc *sc; + struct bxe_eth_stats *estats; + + sc = if_getsoftc(ifp); + estats = &sc->eth_stats; + + switch (cnt) { + case IFCOUNTER_IPACKETS: + return (bxe_hilo(&estats->total_unicast_packets_received_hi) + + bxe_hilo(&estats->total_multicast_packets_received_hi) + + bxe_hilo(&estats->total_broadcast_packets_received_hi)); + case IFCOUNTER_OPACKETS: + return (bxe_hilo(&estats->total_unicast_packets_transmitted_hi) + + bxe_hilo(&estats->total_multicast_packets_transmitted_hi) + + bxe_hilo(&estats->total_broadcast_packets_transmitted_hi)); + case IFCOUNTER_IBYTES: + return (bxe_hilo(&estats->total_bytes_received_hi)); + case IFCOUNTER_OBYTES: + return (bxe_hilo(&estats->total_bytes_transmitted_hi)); + case IFCOUNTER_IERRORS: + return (bxe_hilo(&estats->rx_stat_etherstatsundersizepkts_hi) + + bxe_hilo(&estats->etherstatsoverrsizepkts_hi) + + bxe_hilo(&estats->brb_drop_hi) + + bxe_hilo(&estats->brb_truncate_hi) + + bxe_hilo(&estats->rx_stat_dot3statsfcserrors_hi) + + bxe_hilo(&estats->rx_stat_dot3statsalignmenterrors_hi) + + bxe_hilo(&estats->no_buff_discard_hi)); + case IFCOUNTER_OERRORS: + return (bxe_hilo(&estats->rx_stat_dot3statscarriersenseerrors_hi) + + bxe_hilo(&estats->tx_stat_dot3statsinternalmactransmiterrors_hi)); + case IFCOUNTER_IMCASTS: + return (bxe_hilo(&estats->total_multicast_packets_received_hi)); + case IFCOUNTER_COLLISIONS: + return (bxe_hilo(&estats->tx_stat_etherstatscollisions_hi) + + bxe_hilo(&estats->tx_stat_dot3statslatecollisions_hi) + + bxe_hilo(&estats->tx_stat_dot3statsexcessivecollisions_hi)); + default: + return (if_get_counter_default(ifp, cnt)); + } } static void @@ -1669,15 +1673,6 @@ bxe_stats_init(struct bxe_softc *sc) /* prepare statistics ramrod data */ bxe_prep_fw_stats_req(sc); - if_setipackets(sc->ifp, 0); - if_setopackets(sc->ifp, 0); - if_setibytes(sc->ifp, 0); - if_setobytes(sc->ifp, 0); - if_setierrors(sc->ifp, 0); - if_setoerrors(sc->ifp, 0); - if_setimcasts(sc->ifp, 0); - if_setcollisions(sc->ifp, 0); - if (sc->stats_init) { memset(&sc->net_stats_old, 0, sizeof(sc->net_stats_old)); memset(&sc->fw_stats_old, 0, sizeof(sc->fw_stats_old)); @@ -1731,9 +1726,6 @@ bxe_save_statistics(struct bxe_softc *sc) UPDATE_QSTAT_OLD(total_tpa_bytes_lo); } - /* save net_device_stats statistics */ - sc->net_stats_old.rx_dropped = if_getiqdrops(sc->ifp); - /* store port firmware statistics */ if (sc->port.pmf) { struct bxe_eth_stats *estats = &sc->eth_stats; |