static void enic_get_ethtool_stats(struct net_device *netdev, struct ethtool_stats *stats, u64 *data) { struct enic *enic = netdev_priv(netdev); struct vnic_stats *vstats; unsigned int i; enic_dev_stats_dump(enic, &vstats); for (i = 0; i < enic_n_tx_stats; i++) *(data++) = ((u64 *)&vstats->tx)[enic_tx_stats[i].index]; for (i = 0; i < enic_n_rx_stats; i++) *(data++) = ((u64 *)&vstats->rx)[enic_rx_stats[i].index]; }
static void enic_get_ethtool_stats(struct net_device *netdev, struct ethtool_stats *stats, u64 *data) { struct enic *enic = netdev_priv(netdev); struct vnic_stats *vstats; unsigned int i; int err; err = enic_dev_stats_dump(enic, &vstats); /* return only when pci_zalloc_consistent fails in vnic_dev_stats_dump * For other failures, like devcmd failure, we return previously * recorded stats. */ if (err == -ENOMEM) return; for (i = 0; i < enic_n_tx_stats; i++) *(data++) = ((u64 *)&vstats->tx)[enic_tx_stats[i].index]; for (i = 0; i < enic_n_rx_stats; i++) *(data++) = ((u64 *)&vstats->rx)[enic_rx_stats[i].index]; for (i = 0; i < enic_n_gen_stats; i++) *(data++) = ((u64 *)&enic->gen_stats)[enic_gen_stats[i].index]; }