drivers/net/ethernet/hisilicon/hibmcge/hbg_ethtool.c

Source file repositories/reference/linux-study-clean/drivers/net/ethernet/hisilicon/hibmcge/hbg_ethtool.c

File Facts

System
Linux kernel
Corpus path
drivers/net/ethernet/hisilicon/hibmcge/hbg_ethtool.c
Extension
.c
Size
17946 bytes
Lines
501
Domain
Driver Families
Bucket
drivers/net
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

struct hbg_ethtool_stats {
	char name[ETH_GSTRING_LEN];
	unsigned long offset;
	u32 reg; /* set to 0 if stats is not updated via dump reg */
};

#define HBG_STATS_I(stats) { #stats, HBG_STATS_FIELD_OFF(stats), 0}
#define HBG_STATS_REG_I(stats, reg) { #stats, HBG_STATS_FIELD_OFF(stats), reg}

static const struct hbg_ethtool_stats hbg_ethtool_stats_info[] = {
	HBG_STATS_I(rx_desc_l2_err_cnt),
	HBG_STATS_I(rx_desc_pkt_len_err_cnt),
	HBG_STATS_I(rx_desc_l3_wrong_head_cnt),
	HBG_STATS_I(rx_desc_l3_csum_err_cnt),
	HBG_STATS_I(rx_desc_l3_len_err_cnt),
	HBG_STATS_I(rx_desc_l3_zero_ttl_cnt),
	HBG_STATS_I(rx_desc_l3_other_cnt),
	HBG_STATS_I(rx_desc_l4_wrong_head_cnt),
	HBG_STATS_I(rx_desc_l4_len_err_cnt),
	HBG_STATS_I(rx_desc_l4_csum_err_cnt),
	HBG_STATS_I(rx_desc_l4_zero_port_num_cnt),
	HBG_STATS_I(rx_desc_l4_other_cnt),
	HBG_STATS_I(rx_desc_ip_ver_err_cnt),
	HBG_STATS_I(rx_desc_ipv4_pkt_cnt),
	HBG_STATS_I(rx_desc_ipv6_pkt_cnt),
	HBG_STATS_I(rx_desc_no_ip_pkt_cnt),
	HBG_STATS_I(rx_desc_ip_pkt_cnt),
	HBG_STATS_I(rx_desc_tcp_pkt_cnt),
	HBG_STATS_I(rx_desc_udp_pkt_cnt),
	HBG_STATS_I(rx_desc_vlan_pkt_cnt),
	HBG_STATS_I(rx_desc_icmp_pkt_cnt),
	HBG_STATS_I(rx_desc_arp_pkt_cnt),
	HBG_STATS_I(rx_desc_rarp_pkt_cnt),
	HBG_STATS_I(rx_desc_multicast_pkt_cnt),
	HBG_STATS_I(rx_desc_broadcast_pkt_cnt),
	HBG_STATS_I(rx_desc_ipsec_pkt_cnt),
	HBG_STATS_I(rx_desc_ip_opt_pkt_cnt),
	HBG_STATS_I(rx_desc_key_not_match_cnt),

	HBG_STATS_REG_I(rx_octets_bad_cnt, HBG_REG_RX_OCTETS_BAD_ADDR),
	HBG_STATS_REG_I(rx_octets_total_filt_cnt,
			HBG_REG_RX_OCTETS_TOTAL_FILT_ADDR),
	HBG_STATS_REG_I(rx_uc_pkt_cnt, HBG_REG_RX_UC_PKTS_ADDR),
	HBG_STATS_REG_I(rx_vlan_pkt_cnt, HBG_REG_RX_TAGGED_ADDR),
	HBG_STATS_REG_I(rx_filt_pkt_cnt, HBG_REG_RX_FILT_PKT_CNT_ADDR),
	HBG_STATS_REG_I(rx_data_error_cnt, HBG_REG_RX_DATA_ERR_ADDR),
	HBG_STATS_REG_I(rx_frame_long_err_cnt, HBG_REG_RX_LONG_ERRORS_ADDR),
	HBG_STATS_REG_I(rx_jabber_err_cnt, HBG_REG_RX_JABBER_ERRORS_ADDR),
	HBG_STATS_REG_I(rx_frame_very_long_err_cnt,
			HBG_REG_RX_VERY_LONG_ERR_CNT_ADDR),
	HBG_STATS_REG_I(rx_frame_runt_err_cnt, HBG_REG_RX_RUNT_ERR_CNT_ADDR),
	HBG_STATS_REG_I(rx_frame_short_err_cnt, HBG_REG_RX_SHORT_ERR_CNT_ADDR),
	HBG_STATS_REG_I(rx_overflow_cnt, HBG_REG_RX_OVER_FLOW_CNT_ADDR),
	HBG_STATS_REG_I(rx_bufrq_err_cnt, HBG_REG_RX_BUFRQ_ERR_CNT_ADDR),
	HBG_STATS_REG_I(rx_we_err_cnt, HBG_REG_RX_WE_ERR_CNT_ADDR),
	HBG_STATS_REG_I(rx_overrun_cnt, HBG_REG_RX_OVERRUN_CNT_ADDR),
	HBG_STATS_REG_I(rx_lengthfield_err_cnt,
			HBG_REG_RX_LENGTHFIELD_ERR_CNT_ADDR),
	HBG_STATS_REG_I(rx_fail_comma_cnt, HBG_REG_RX_FAIL_COMMA_CNT_ADDR),
	HBG_STATS_I(rx_dma_err_cnt),
	HBG_STATS_I(rx_fifo_less_empty_thrsld_cnt),

	HBG_STATS_REG_I(tx_uc_pkt_cnt, HBG_REG_TX_UC_PKTS_ADDR),
	HBG_STATS_REG_I(tx_vlan_pkt_cnt, HBG_REG_TX_TAGGED_ADDR),
	HBG_STATS_REG_I(tx_octets_bad_cnt, HBG_REG_OCTETS_TRANSMITTED_BAD_ADDR),

	HBG_STATS_REG_I(tx_underrun_err_cnt, HBG_REG_TX_UNDERRUN_ADDR),
	HBG_STATS_REG_I(tx_add_cs_fail_cnt, HBG_REG_TX_CS_FAIL_CNT_ADDR),
	HBG_STATS_REG_I(tx_bufrl_err_cnt, HBG_REG_TX_BUFRL_ERR_CNT_ADDR),
	HBG_STATS_REG_I(tx_crc_err_cnt, HBG_REG_TX_CRC_ERROR_ADDR),
	HBG_STATS_REG_I(tx_drop_cnt, HBG_REG_TX_DROP_CNT_ADDR),
	HBG_STATS_REG_I(tx_excessive_length_drop_cnt,
			HBG_REG_TX_EXCESSIVE_LENGTH_DROP_ADDR),
	HBG_STATS_I(tx_dma_err_cnt),
	HBG_STATS_I(tx_timeout_cnt),
	HBG_STATS_I(reset_fail_cnt),
};

static const struct hbg_ethtool_stats hbg_ethtool_rmon_stats_info[] = {
	HBG_STATS_I(rx_desc_frag_cnt),
	HBG_STATS_REG_I(rx_framesize_64, HBG_REG_RX_PKTS_64OCTETS_ADDR),
	HBG_STATS_REG_I(rx_framesize_65_127,
			HBG_REG_RX_PKTS_65TO127OCTETS_ADDR),
	HBG_STATS_REG_I(rx_framesize_128_255,
			HBG_REG_RX_PKTS_128TO255OCTETS_ADDR),
	HBG_STATS_REG_I(rx_framesize_256_511,
			HBG_REG_RX_PKTS_256TO511OCTETS_ADDR),
	HBG_STATS_REG_I(rx_framesize_512_1023,
			HBG_REG_RX_PKTS_512TO1023OCTETS_ADDR),
	HBG_STATS_REG_I(rx_framesize_1024_1518,

Annotation

Implementation Notes