#include "net_driver.h"
#include <linux/module.h>
#include <linux/filter.h>
#include "efx_channels.h"
#include "efx.h"
#include "efx_common.h"
#include "tx_common.h"
#include "rx_common.h"
#include "nic.h"
#include "sriov.h"
#include "workarounds.h"
unsigned int efx_siena_interrupt_mode = …;
unsigned int efx_siena_rss_cpus;
static unsigned int irq_adapt_low_thresh = …;
module_param(irq_adapt_low_thresh, uint, 0644);
MODULE_PARM_DESC(…) …;
static unsigned int irq_adapt_high_thresh = …;
module_param(irq_adapt_high_thresh, uint, 0644);
MODULE_PARM_DESC(…) …;
static const struct efx_channel_type efx_default_channel_type;
static unsigned int count_online_cores(struct efx_nic *efx, bool local_node)
{ … }
static unsigned int efx_wanted_parallelism(struct efx_nic *efx)
{ … }
static int efx_allocate_msix_channels(struct efx_nic *efx,
unsigned int max_channels,
unsigned int extra_channels,
unsigned int parallelism)
{ … }
int efx_siena_probe_interrupts(struct efx_nic *efx)
{ … }
#if defined(CONFIG_SMP)
void efx_siena_set_interrupt_affinity(struct efx_nic *efx)
{ … }
void efx_siena_clear_interrupt_affinity(struct efx_nic *efx)
{ … }
#else
void
efx_siena_set_interrupt_affinity(struct efx_nic *efx __always_unused)
{
}
void
efx_siena_clear_interrupt_affinity(struct efx_nic *efx __always_unused)
{
}
#endif
void efx_siena_remove_interrupts(struct efx_nic *efx)
{ … }
static int efx_probe_eventq(struct efx_channel *channel)
{ … }
static int efx_init_eventq(struct efx_channel *channel)
{ … }
void efx_siena_start_eventq(struct efx_channel *channel)
{ … }
void efx_siena_stop_eventq(struct efx_channel *channel)
{ … }
static void efx_fini_eventq(struct efx_channel *channel)
{ … }
static void efx_remove_eventq(struct efx_channel *channel)
{ … }
#ifdef CONFIG_RFS_ACCEL
static void efx_filter_rfs_expire(struct work_struct *data)
{ … }
#endif
static struct efx_channel *efx_alloc_channel(struct efx_nic *efx, int i)
{ … }
int efx_siena_init_channels(struct efx_nic *efx)
{ … }
void efx_siena_fini_channels(struct efx_nic *efx)
{ … }
static
struct efx_channel *efx_copy_channel(const struct efx_channel *old_channel)
{ … }
static int efx_probe_channel(struct efx_channel *channel)
{ … }
static void efx_get_channel_name(struct efx_channel *channel, char *buf,
size_t len)
{ … }
void efx_siena_set_channel_names(struct efx_nic *efx)
{ … }
int efx_siena_probe_channels(struct efx_nic *efx)
{ … }
void efx_siena_remove_channel(struct efx_channel *channel)
{ … }
void efx_siena_remove_channels(struct efx_nic *efx)
{ … }
static int efx_set_xdp_tx_queue(struct efx_nic *efx, int xdp_queue_number,
struct efx_tx_queue *tx_queue)
{ … }
static void efx_set_xdp_channels(struct efx_nic *efx)
{ … }
static int efx_soft_enable_interrupts(struct efx_nic *efx);
static void efx_soft_disable_interrupts(struct efx_nic *efx);
static void efx_init_napi_channel(struct efx_channel *channel);
static void efx_fini_napi_channel(struct efx_channel *channel);
int efx_siena_realloc_channels(struct efx_nic *efx, u32 rxq_entries,
u32 txq_entries)
{ … }
int efx_siena_set_channels(struct efx_nic *efx)
{ … }
static bool efx_default_channel_want_txqs(struct efx_channel *channel)
{ … }
static int efx_soft_enable_interrupts(struct efx_nic *efx)
{ … }
static void efx_soft_disable_interrupts(struct efx_nic *efx)
{ … }
int efx_siena_enable_interrupts(struct efx_nic *efx)
{ … }
void efx_siena_disable_interrupts(struct efx_nic *efx)
{ … }
void efx_siena_start_channels(struct efx_nic *efx)
{ … }
void efx_siena_stop_channels(struct efx_nic *efx)
{ … }
static int efx_process_channel(struct efx_channel *channel, int budget)
{ … }
static void efx_update_irq_mod(struct efx_nic *efx, struct efx_channel *channel)
{ … }
static int efx_poll(struct napi_struct *napi, int budget)
{ … }
static void efx_init_napi_channel(struct efx_channel *channel)
{ … }
void efx_siena_init_napi(struct efx_nic *efx)
{ … }
static void efx_fini_napi_channel(struct efx_channel *channel)
{ … }
void efx_siena_fini_napi(struct efx_nic *efx)
{ … }
static int efx_channel_dummy_op_int(struct efx_channel *channel)
{ … }
void efx_siena_channel_dummy_op_void(struct efx_channel *channel)
{ … }
static const struct efx_channel_type efx_default_channel_type = …;