#include <linux/rhashtable.h>
#include "ef100_rep.h"
#include "ef100_netdev.h"
#include "ef100_nic.h"
#include "mae.h"
#include "rx_common.h"
#include "tc_bindings.h"
#include "efx_devlink.h"
#define EFX_EF100_REP_DRIVER …
#define EFX_REP_DEFAULT_PSEUDO_RING_SIZE …
static int efx_ef100_rep_poll(struct napi_struct *napi, int weight);
static int efx_ef100_rep_init_struct(struct efx_nic *efx, struct efx_rep *efv,
unsigned int i)
{ … }
static int efx_ef100_rep_open(struct net_device *net_dev)
{ … }
static int efx_ef100_rep_close(struct net_device *net_dev)
{ … }
static netdev_tx_t efx_ef100_rep_xmit(struct sk_buff *skb,
struct net_device *dev)
{ … }
static int efx_ef100_rep_get_port_parent_id(struct net_device *dev,
struct netdev_phys_item_id *ppid)
{ … }
static int efx_ef100_rep_get_phys_port_name(struct net_device *dev,
char *buf, size_t len)
{ … }
static int efx_ef100_rep_setup_tc(struct net_device *net_dev,
enum tc_setup_type type, void *type_data)
{ … }
static void efx_ef100_rep_get_stats64(struct net_device *dev,
struct rtnl_link_stats64 *stats)
{ … }
const struct net_device_ops efx_ef100_rep_netdev_ops = …;
static void efx_ef100_rep_get_drvinfo(struct net_device *dev,
struct ethtool_drvinfo *drvinfo)
{ … }
static u32 efx_ef100_rep_ethtool_get_msglevel(struct net_device *net_dev)
{ … }
static void efx_ef100_rep_ethtool_set_msglevel(struct net_device *net_dev,
u32 msg_enable)
{ … }
static void efx_ef100_rep_ethtool_get_ringparam(struct net_device *net_dev,
struct ethtool_ringparam *ring,
struct kernel_ethtool_ringparam *kring,
struct netlink_ext_ack *ext_ack)
{ … }
static int efx_ef100_rep_ethtool_set_ringparam(struct net_device *net_dev,
struct ethtool_ringparam *ring,
struct kernel_ethtool_ringparam *kring,
struct netlink_ext_ack *ext_ack)
{ … }
static const struct ethtool_ops efx_ef100_rep_ethtool_ops = …;
static struct efx_rep *efx_ef100_rep_create_netdev(struct efx_nic *efx,
unsigned int i)
{ … }
static int efx_ef100_configure_rep(struct efx_rep *efv)
{ … }
static void efx_ef100_deconfigure_rep(struct efx_rep *efv)
{ … }
static void efx_ef100_rep_destroy_netdev(struct efx_rep *efv)
{ … }
int efx_ef100_vfrep_create(struct efx_nic *efx, unsigned int i)
{ … }
void efx_ef100_vfrep_destroy(struct efx_nic *efx, struct efx_rep *efv)
{ … }
void efx_ef100_fini_vfreps(struct efx_nic *efx)
{ … }
static bool ef100_mport_is_pcie_vnic(struct mae_mport_desc *mport_desc)
{ … }
bool ef100_mport_on_local_intf(struct efx_nic *efx,
struct mae_mport_desc *mport_desc)
{ … }
bool ef100_mport_is_vf(struct mae_mport_desc *mport_desc)
{ … }
void efx_ef100_init_reps(struct efx_nic *efx)
{ … }
void efx_ef100_fini_reps(struct efx_nic *efx)
{ … }
static int efx_ef100_rep_poll(struct napi_struct *napi, int weight)
{ … }
void efx_ef100_rep_rx_packet(struct efx_rep *efv, struct efx_rx_buffer *rx_buf)
{ … }
struct efx_rep *efx_ef100_find_rep_by_mport(struct efx_nic *efx, u16 mport)
{ … }