#include <linux/ethtool.h>
#include <linux/kernel.h>
#include <linux/netdevice.h>
#include "prestera_ethtool.h"
#include "prestera.h"
#include "prestera_hw.h"
#define PRESTERA_STATS_CNT …
#define PRESTERA_STATS_IDX(name) …
#define PRESTERA_STATS_FIELD(name) …
static const char driver_kind[] = …;
static const struct prestera_link_mode { … } port_link_modes[PRESTERA_LINK_MODE_MAX] = …;
static const struct prestera_fec { … } port_fec_caps[PRESTERA_PORT_FEC_MAX] = …;
static const struct prestera_port_type { … } port_types[PRESTERA_PORT_TYPE_MAX] = …;
static const char prestera_cnt_name[PRESTERA_STATS_CNT][ETH_GSTRING_LEN] = …;
static void prestera_ethtool_get_drvinfo(struct net_device *dev,
struct ethtool_drvinfo *drvinfo)
{ … }
static u8 prestera_port_type_get(struct prestera_port *port)
{ … }
static int prestera_port_type_set(const struct ethtool_link_ksettings *ecmd,
struct prestera_port *port)
{ … }
static void prestera_modes_to_eth(unsigned long *eth_modes, u64 link_modes,
u8 fec, u8 type)
{ … }
static void prestera_modes_from_eth(const unsigned long *eth_modes,
u64 *link_modes, u8 *fec, u8 type)
{ … }
static void prestera_port_supp_types_get(struct ethtool_link_ksettings *ecmd,
struct prestera_port *port)
{ … }
static void prestera_port_remote_cap_get(struct ethtool_link_ksettings *ecmd,
struct prestera_port *port)
{ … }
static void prestera_port_link_mode_get(struct ethtool_link_ksettings *ecmd,
struct prestera_port *port)
{ … }
static void prestera_port_mdix_get(struct ethtool_link_ksettings *ecmd,
struct prestera_port *port)
{ … }
static int
prestera_ethtool_get_link_ksettings(struct net_device *dev,
struct ethtool_link_ksettings *ecmd)
{ … }
static int prestera_port_mdix_set(const struct ethtool_link_ksettings *ecmd,
struct prestera_port *port)
{ … }
static int prestera_port_link_mode_set(struct prestera_port *port,
u32 speed, u8 duplex, u8 type)
{ … }
static int
prestera_port_speed_duplex_set(const struct ethtool_link_ksettings *ecmd,
struct prestera_port *port)
{ … }
static int
prestera_ethtool_set_link_ksettings(struct net_device *dev,
const struct ethtool_link_ksettings *ecmd)
{ … }
static int prestera_ethtool_get_fecparam(struct net_device *dev,
struct ethtool_fecparam *fecparam)
{ … }
static int prestera_ethtool_set_fecparam(struct net_device *dev,
struct ethtool_fecparam *fecparam)
{ … }
static int prestera_ethtool_get_sset_count(struct net_device *dev, int sset)
{ … }
static void prestera_ethtool_get_strings(struct net_device *dev,
u32 stringset, u8 *data)
{ … }
static void prestera_ethtool_get_stats(struct net_device *dev,
struct ethtool_stats *stats, u64 *data)
{ … }
static int prestera_ethtool_nway_reset(struct net_device *dev)
{ … }
const struct ethtool_ops prestera_ethtool_ops = …;