#include <linux/module.h>
#include <linux/netdevice.h>
#include <linux/sfp.h>
#include "ionic.h"
#include "ionic_bus.h"
#include "ionic_lif.h"
#include "ionic_ethtool.h"
#include "ionic_stats.h"
#define IONIC_MAX_RX_COPYBREAK …
static void ionic_get_stats_strings(struct ionic_lif *lif, u8 *buf)
{ … }
static void ionic_get_stats(struct net_device *netdev,
struct ethtool_stats *stats, u64 *buf)
{ … }
static int ionic_get_stats_count(struct ionic_lif *lif)
{ … }
static int ionic_get_sset_count(struct net_device *netdev, int sset)
{ … }
static void ionic_get_strings(struct net_device *netdev,
u32 sset, u8 *buf)
{ … }
static void ionic_get_drvinfo(struct net_device *netdev,
struct ethtool_drvinfo *drvinfo)
{ … }
static int ionic_get_regs_len(struct net_device *netdev)
{ … }
static void ionic_get_regs(struct net_device *netdev, struct ethtool_regs *regs,
void *p)
{ … }
static void ionic_get_link_ext_stats(struct net_device *netdev,
struct ethtool_link_ext_stats *stats)
{ … }
static int ionic_get_link_ksettings(struct net_device *netdev,
struct ethtool_link_ksettings *ks)
{ … }
static int ionic_set_link_ksettings(struct net_device *netdev,
const struct ethtool_link_ksettings *ks)
{ … }
static void ionic_get_pauseparam(struct net_device *netdev,
struct ethtool_pauseparam *pause)
{ … }
static int ionic_set_pauseparam(struct net_device *netdev,
struct ethtool_pauseparam *pause)
{ … }
static int ionic_get_fecparam(struct net_device *netdev,
struct ethtool_fecparam *fec)
{ … }
static int ionic_set_fecparam(struct net_device *netdev,
struct ethtool_fecparam *fec)
{ … }
static int ionic_get_coalesce(struct net_device *netdev,
struct ethtool_coalesce *coalesce,
struct kernel_ethtool_coalesce *kernel_coal,
struct netlink_ext_ack *extack)
{ … }
static int ionic_set_coalesce(struct net_device *netdev,
struct ethtool_coalesce *coalesce,
struct kernel_ethtool_coalesce *kernel_coal,
struct netlink_ext_ack *extack)
{ … }
static int ionic_validate_cmb_config(struct ionic_lif *lif,
struct ionic_queue_params *qparam)
{ … }
static int ionic_cmb_rings_toggle(struct ionic_lif *lif, bool cmb_tx, bool cmb_rx)
{ … }
static void ionic_get_ringparam(struct net_device *netdev,
struct ethtool_ringparam *ring,
struct kernel_ethtool_ringparam *kernel_ring,
struct netlink_ext_ack *extack)
{ … }
static int ionic_set_ringparam(struct net_device *netdev,
struct ethtool_ringparam *ring,
struct kernel_ethtool_ringparam *kernel_ring,
struct netlink_ext_ack *extack)
{ … }
static void ionic_get_channels(struct net_device *netdev,
struct ethtool_channels *ch)
{ … }
static int ionic_set_channels(struct net_device *netdev,
struct ethtool_channels *ch)
{ … }
static int ionic_get_rxnfc(struct net_device *netdev,
struct ethtool_rxnfc *info, u32 *rules)
{ … }
static u32 ionic_get_rxfh_indir_size(struct net_device *netdev)
{ … }
static u32 ionic_get_rxfh_key_size(struct net_device *netdev)
{ … }
static int ionic_get_rxfh(struct net_device *netdev,
struct ethtool_rxfh_param *rxfh)
{ … }
static int ionic_set_rxfh(struct net_device *netdev,
struct ethtool_rxfh_param *rxfh,
struct netlink_ext_ack *extack)
{ … }
static int ionic_set_tunable(struct net_device *dev,
const struct ethtool_tunable *tuna,
const void *data)
{ … }
static int ionic_get_tunable(struct net_device *netdev,
const struct ethtool_tunable *tuna, void *data)
{ … }
static int ionic_get_module_info(struct net_device *netdev,
struct ethtool_modinfo *modinfo)
{ … }
static int ionic_get_module_eeprom(struct net_device *netdev,
struct ethtool_eeprom *ee,
u8 *data)
{ … }
static int ionic_get_ts_info(struct net_device *netdev,
struct kernel_ethtool_ts_info *info)
{ … }
static int ionic_nway_reset(struct net_device *netdev)
{ … }
static const struct ethtool_ops ionic_ethtool_ops = …;
void ionic_ethtool_set_ops(struct net_device *netdev)
{ … }