brintos

brintos / linux-shallow public Read only

0
0
Text · 2.5 KiB · 5d980e1 Raw
76 lines · c
1#include <linux/ethtool.h>2#include <linux/netdevice.h>3#include <linux/pci.h>4 5#include "fbnic.h"6#include "fbnic_netdev.h"7#include "fbnic_tlv.h"8 9static void10fbnic_get_drvinfo(struct net_device *netdev, struct ethtool_drvinfo *drvinfo)11{12	struct fbnic_net *fbn = netdev_priv(netdev);13	struct fbnic_dev *fbd = fbn->fbd;14 15	fbnic_get_fw_ver_commit_str(fbd, drvinfo->fw_version,16				    sizeof(drvinfo->fw_version));17}18 19static void fbnic_set_counter(u64 *stat, struct fbnic_stat_counter *counter)20{21	if (counter->reported)22		*stat = counter->value;23}24 25static void26fbnic_get_eth_mac_stats(struct net_device *netdev,27			struct ethtool_eth_mac_stats *eth_mac_stats)28{29	struct fbnic_net *fbn = netdev_priv(netdev);30	struct fbnic_mac_stats *mac_stats;31	struct fbnic_dev *fbd = fbn->fbd;32	const struct fbnic_mac *mac;33 34	mac_stats = &fbd->hw_stats.mac;35	mac = fbd->mac;36 37	mac->get_eth_mac_stats(fbd, false, &mac_stats->eth_mac);38 39	fbnic_set_counter(&eth_mac_stats->FramesTransmittedOK,40			  &mac_stats->eth_mac.FramesTransmittedOK);41	fbnic_set_counter(&eth_mac_stats->FramesReceivedOK,42			  &mac_stats->eth_mac.FramesReceivedOK);43	fbnic_set_counter(&eth_mac_stats->FrameCheckSequenceErrors,44			  &mac_stats->eth_mac.FrameCheckSequenceErrors);45	fbnic_set_counter(&eth_mac_stats->AlignmentErrors,46			  &mac_stats->eth_mac.AlignmentErrors);47	fbnic_set_counter(&eth_mac_stats->OctetsTransmittedOK,48			  &mac_stats->eth_mac.OctetsTransmittedOK);49	fbnic_set_counter(&eth_mac_stats->FramesLostDueToIntMACXmitError,50			  &mac_stats->eth_mac.FramesLostDueToIntMACXmitError);51	fbnic_set_counter(&eth_mac_stats->OctetsReceivedOK,52			  &mac_stats->eth_mac.OctetsReceivedOK);53	fbnic_set_counter(&eth_mac_stats->FramesLostDueToIntMACRcvError,54			  &mac_stats->eth_mac.FramesLostDueToIntMACRcvError);55	fbnic_set_counter(&eth_mac_stats->MulticastFramesXmittedOK,56			  &mac_stats->eth_mac.MulticastFramesXmittedOK);57	fbnic_set_counter(&eth_mac_stats->BroadcastFramesXmittedOK,58			  &mac_stats->eth_mac.BroadcastFramesXmittedOK);59	fbnic_set_counter(&eth_mac_stats->MulticastFramesReceivedOK,60			  &mac_stats->eth_mac.MulticastFramesReceivedOK);61	fbnic_set_counter(&eth_mac_stats->BroadcastFramesReceivedOK,62			  &mac_stats->eth_mac.BroadcastFramesReceivedOK);63	fbnic_set_counter(&eth_mac_stats->FrameTooLongErrors,64			  &mac_stats->eth_mac.FrameTooLongErrors);65}66 67static const struct ethtool_ops fbnic_ethtool_ops = {68	.get_drvinfo		= fbnic_get_drvinfo,69	.get_eth_mac_stats	= fbnic_get_eth_mac_stats,70};71 72void fbnic_set_ethtool_ops(struct net_device *dev)73{74	dev->ethtool_ops = &fbnic_ethtool_ops;75}76