#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/cache.h>
#include <linux/cpumask.h>
#include <linux/netdevice.h>
#include <linux/etherdevice.h>
#include <linux/ip.h>
#include <linux/string.h>
#include <linux/prefetch.h>
#include <linux/ratelimit.h>
#include <linux/smp.h>
#include <linux/interrupt.h>
#include <net/dst.h>
#ifdef CONFIG_XFRM
#include <linux/xfrm.h>
#include <net/xfrm.h>
#endif
#include "octeon-ethernet.h"
#include "ethernet-defines.h"
#include "ethernet-mem.h"
#include "ethernet-rx.h"
#include "ethernet-util.h"
static atomic_t oct_rx_ready = …;
static struct oct_rx_group { … } oct_rx_group[16];
static irqreturn_t cvm_oct_do_interrupt(int irq, void *napi_id)
{ … }
static inline int cvm_oct_check_rcv_error(struct cvmx_wqe *work)
{ … }
static void copy_segments_to_skb(struct cvmx_wqe *work, struct sk_buff *skb)
{ … }
static int cvm_oct_poll(struct oct_rx_group *rx_group, int budget)
{ … }
static int cvm_oct_napi_poll(struct napi_struct *napi, int budget)
{ … }
#ifdef CONFIG_NET_POLL_CONTROLLER
void cvm_oct_poll_controller(struct net_device *dev)
{ … }
#endif
void cvm_oct_rx_initialize(void)
{ … }
void cvm_oct_rx_shutdown(void)
{ … }