#include <linux/ethtool.h>
#include <linux/pci.h>
#include "ena_netdev.h"
#include "ena_xdp.h"
struct ena_stats { … };
#define ENA_STAT_ENA_COM_ENTRY(stat) …
#define ENA_STAT_ENTRY(stat, stat_type) …
#define ENA_STAT_HW_ENTRY(stat, stat_type) …
#define ENA_STAT_RX_ENTRY(stat) …
#define ENA_STAT_TX_ENTRY(stat) …
#define ENA_STAT_GLOBAL_ENTRY(stat) …
#define ENA_STAT_ENI_ENTRY(stat) …
static const struct ena_stats ena_stats_global_strings[] = …;
static const struct ena_stats ena_stats_eni_strings[] = …;
static const struct ena_stats ena_stats_tx_strings[] = …;
static const struct ena_stats ena_stats_rx_strings[] = …;
static const struct ena_stats ena_stats_ena_com_strings[] = …;
#define ENA_STATS_ARRAY_GLOBAL …
#define ENA_STATS_ARRAY_TX …
#define ENA_STATS_ARRAY_RX …
#define ENA_STATS_ARRAY_ENA_COM …
#define ENA_STATS_ARRAY_ENI(adapter) …
static void ena_safe_update_stat(u64 *src, u64 *dst,
struct u64_stats_sync *syncp)
{ … }
static void ena_queue_stats(struct ena_adapter *adapter, u64 **data)
{ … }
static void ena_dev_admin_queue_stats(struct ena_adapter *adapter, u64 **data)
{ … }
static void ena_get_stats(struct ena_adapter *adapter,
u64 *data,
bool eni_stats_needed)
{ … }
static void ena_get_ethtool_stats(struct net_device *netdev,
struct ethtool_stats *stats,
u64 *data)
{ … }
static int ena_get_sw_stats_count(struct ena_adapter *adapter)
{ … }
static int ena_get_hw_stats_count(struct ena_adapter *adapter)
{ … }
int ena_get_sset_count(struct net_device *netdev, int sset)
{ … }
static void ena_queue_strings(struct ena_adapter *adapter, u8 **data)
{ … }
static void ena_com_dev_strings(u8 **data)
{ … }
static void ena_get_strings(struct ena_adapter *adapter,
u8 *data,
bool eni_stats_needed)
{ … }
static void ena_get_ethtool_strings(struct net_device *netdev,
u32 sset,
u8 *data)
{ … }
static int ena_get_link_ksettings(struct net_device *netdev,
struct ethtool_link_ksettings *link_ksettings)
{ … }
static int ena_get_coalesce(struct net_device *net_dev,
struct ethtool_coalesce *coalesce,
struct kernel_ethtool_coalesce *kernel_coal,
struct netlink_ext_ack *extack)
{ … }
static void ena_update_tx_rings_nonadaptive_intr_moderation(struct ena_adapter *adapter)
{ … }
static void ena_update_rx_rings_nonadaptive_intr_moderation(struct ena_adapter *adapter)
{ … }
static int ena_set_coalesce(struct net_device *net_dev,
struct ethtool_coalesce *coalesce,
struct kernel_ethtool_coalesce *kernel_coal,
struct netlink_ext_ack *extack)
{ … }
static u32 ena_get_msglevel(struct net_device *netdev)
{ … }
static void ena_set_msglevel(struct net_device *netdev, u32 value)
{ … }
static void ena_get_drvinfo(struct net_device *dev,
struct ethtool_drvinfo *info)
{ … }
static void ena_get_ringparam(struct net_device *netdev,
struct ethtool_ringparam *ring,
struct kernel_ethtool_ringparam *kernel_ring,
struct netlink_ext_ack *extack)
{ … }
static int ena_set_ringparam(struct net_device *netdev,
struct ethtool_ringparam *ring,
struct kernel_ethtool_ringparam *kernel_ring,
struct netlink_ext_ack *extack)
{ … }
static u32 ena_flow_hash_to_flow_type(u16 hash_fields)
{ … }
static u16 ena_flow_data_to_flow_hash(u32 hash_fields)
{ … }
static int ena_get_rss_hash(struct ena_com_dev *ena_dev,
struct ethtool_rxnfc *cmd)
{ … }
static int ena_set_rss_hash(struct ena_com_dev *ena_dev,
struct ethtool_rxnfc *cmd)
{ … }
static int ena_set_rxnfc(struct net_device *netdev, struct ethtool_rxnfc *info)
{ … }
static int ena_get_rxnfc(struct net_device *netdev, struct ethtool_rxnfc *info,
u32 *rules)
{ … }
static u32 ena_get_rxfh_indir_size(struct net_device *netdev)
{ … }
static u32 ena_get_rxfh_key_size(struct net_device *netdev)
{ … }
static int ena_indirection_table_set(struct ena_adapter *adapter,
const u32 *indir)
{ … }
static int ena_indirection_table_get(struct ena_adapter *adapter, u32 *indir)
{ … }
static int ena_get_rxfh(struct net_device *netdev,
struct ethtool_rxfh_param *rxfh)
{ … }
static int ena_set_rxfh(struct net_device *netdev,
struct ethtool_rxfh_param *rxfh,
struct netlink_ext_ack *extack)
{ … }
static void ena_get_channels(struct net_device *netdev,
struct ethtool_channels *channels)
{ … }
static int ena_set_channels(struct net_device *netdev,
struct ethtool_channels *channels)
{ … }
static int ena_get_tunable(struct net_device *netdev,
const struct ethtool_tunable *tuna, void *data)
{ … }
static int ena_set_tunable(struct net_device *netdev,
const struct ethtool_tunable *tuna,
const void *data)
{ … }
static const struct ethtool_ops ena_ethtool_ops = …;
void ena_set_ethtool_ops(struct net_device *netdev)
{ … }
static void ena_dump_stats_ex(struct ena_adapter *adapter, u8 *buf)
{ … }
void ena_dump_stats_to_buf(struct ena_adapter *adapter, u8 *buf)
{ … }
void ena_dump_stats_to_dmesg(struct ena_adapter *adapter)
{ … }