--- zzzz-none-000/linux-4.4.60/include/linux/ethtool.h 2017-04-08 07:53:53.000000000 +0000 +++ scorpion-7490-727/linux-4.4.60/include/linux/ethtool.h 2021-02-04 17:41:59.000000000 +0000 @@ -282,4 +282,51 @@ }; + +struct avm_hw_rmon_counter { + u64 rx_pkts_good; + u64 tx_pkts_good; + u64 rx_bytes_good; + u64 tx_bytes_good; + u64 rx_pkts_pause; + u64 tx_pkts_pause; + u64 rx_pkts_dropped; + u64 tx_pkts_dropped; + u64 rx_bytes_error; +}; + +enum etht_stat_type { + ADAPTER_NETDEV_STATS_64, + EDMA_STATS, + HW_RMON_STATS +}; + +struct etht_stat_offset { + char stat_string[ETH_GSTRING_LEN]; + enum etht_stat_type type; + int sizeof_stat; + int stat_offset; +}; + +#define ADAPTER_NETDEV_STAT_64(str, m) { \ + .stat_string = str, \ + .type = ADAPTER_NETDEV_STATS_64, \ + .sizeof_stat = sizeof(((struct rtnl_link_stats64*)0)->m), \ + .stat_offset = offsetof(struct rtnl_link_stats64, m) } + +#define HW_RMON_STAT(str, m) { \ + .stat_string = str, \ + .type = HW_RMON_STATS, \ + .sizeof_stat = sizeof(((struct avm_hw_rmon_counter*)0)->m), \ + .stat_offset = offsetof(struct avm_hw_rmon_counter, m) } + +#define EDMA_STAT(str, m) { \ + .stat_string = str, \ + .type = EDMA_STATS, \ + .sizeof_stat = sizeof(((struct edma_ethtool_statistics*)0)->m), \ + .stat_offset = offsetof(struct edma_ethtool_statistics, m) } + +extern void (*ssdk_update_rmon_cnt_hook) + (struct avm_hw_rmon_counter *res, u32 devid, u32 port); + #endif /* _LINUX_ETHTOOL_H */