#include <linux/module.h>
#include <linux/netdevice.h>
#include <linux/etherdevice.h>
#include <linux/ethtool.h>
#include <linux/workqueue.h>
#include <linux/mii.h>
#include <linux/usb.h>
#include <linux/usb/usbnet.h>
enum cx82310_cmd { … };
enum cx82310_status { … };
#define CMD_PACKET_SIZE …
#define CMD_TIMEOUT …
#define CMD_REPLY_RETRY …
#define CX82310_MTU …
#define CMD_EP …
struct cx82310_priv { … };
static int cx82310_cmd(struct usbnet *dev, enum cx82310_cmd cmd, bool reply,
u8 *wdata, int wlen, u8 *rdata, int rlen)
{ … }
static int cx82310_enable_ethernet(struct usbnet *dev)
{ … }
static void cx82310_reenable_work(struct work_struct *work)
{ … }
#define partial_len …
#define partial_rem …
#define partial_data …
static int cx82310_bind(struct usbnet *dev, struct usb_interface *intf)
{ … }
static void cx82310_unbind(struct usbnet *dev, struct usb_interface *intf)
{ … }
static int cx82310_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
{ … }
static struct sk_buff *cx82310_tx_fixup(struct usbnet *dev, struct sk_buff *skb,
gfp_t flags)
{ … }
static const struct driver_info cx82310_info = …;
#define USB_DEVICE_CLASS(vend, prod, cl, sc, pr) …
static const struct usb_device_id products[] = …;
MODULE_DEVICE_TABLE(usb, products);
static struct usb_driver cx82310_driver = …;
module_usb_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;