#include <linux/gfp.h>
#include <linux/hdreg.h>
#include <linux/blkdev.h>
#include <linux/netdevice.h>
#include <linux/moduleparam.h>
#include <net/net_namespace.h>
#include <asm/unaligned.h>
#include "aoe.h"
#define NECODES …
static char *aoe_errlist[] = …;
enum { … };
static char aoe_iflist[IFLISTSZ];
module_param_string(…);
MODULE_PARM_DESC(…) …;
static wait_queue_head_t txwq;
static struct ktstate kts;
#ifndef MODULE
static int __init aoe_iflist_setup(char *str)
{ … }
__setup(…);
#endif
static spinlock_t txlock;
static struct sk_buff_head skbtxq;
static int
tx(int id) __must_hold(&txlock)
{ … }
int
is_aoe_netif(struct net_device *ifp)
{ … }
int
set_aoe_iflist(const char __user *user_str, size_t size)
{ … }
void
aoenet_xmit(struct sk_buff_head *queue)
{ … }
static int
aoenet_rcv(struct sk_buff *skb, struct net_device *ifp, struct packet_type *pt, struct net_device *orig_dev)
{ … }
static struct packet_type aoe_pt __read_mostly = …;
int __init
aoenet_init(void)
{ … }
void
aoenet_exit(void)
{ … }