#include <linux/module.h>
#include <linux/init.h>
#include <linux/netdevice.h>
#include <linux/etherdevice.h>
#include <linux/ctype.h>
#include <linux/ethtool.h>
#include <linux/workqueue.h>
#include <linux/mii.h>
#include <linux/usb.h>
#include <linux/usb/usbnet.h>
#include <linux/slab.h>
#include <linux/kernel.h>
#include <linux/pm_runtime.h>
#define MAX_QUEUE_MEMORY …
#define RX_QLEN(dev) …
#define TX_QLEN(dev) …
#define TX_TIMEOUT_JIFFIES …
#define THROTTLE_JIFFIES …
#define UNLINK_TIMEOUT_MS …
static int msg_level = …;
module_param (msg_level, int, 0);
MODULE_PARM_DESC(…) …;
static const char * const usbnet_event_names[] = …;
int usbnet_get_endpoints(struct usbnet *dev, struct usb_interface *intf)
{ … }
EXPORT_SYMBOL_GPL(…);
int usbnet_get_ethernet_addr(struct usbnet *dev, int iMACAddress)
{ … }
EXPORT_SYMBOL_GPL(…);
static void intr_complete (struct urb *urb)
{ … }
static int init_status (struct usbnet *dev, struct usb_interface *intf)
{ … }
int usbnet_status_start(struct usbnet *dev, gfp_t mem_flags)
{ … }
EXPORT_SYMBOL_GPL(…);
static int __usbnet_status_start_force(struct usbnet *dev, gfp_t mem_flags)
{ … }
void usbnet_status_stop(struct usbnet *dev)
{ … }
EXPORT_SYMBOL_GPL(…);
static void __usbnet_status_stop_force(struct usbnet *dev)
{ … }
void usbnet_skb_return (struct usbnet *dev, struct sk_buff *skb)
{ … }
EXPORT_SYMBOL_GPL(…);
void usbnet_update_max_qlen(struct usbnet *dev)
{ … }
EXPORT_SYMBOL_GPL(…);
int usbnet_change_mtu (struct net_device *net, int new_mtu)
{ … }
EXPORT_SYMBOL_GPL(…);
static void __usbnet_queue_skb(struct sk_buff_head *list,
struct sk_buff *newsk, enum skb_state state)
{ … }
static enum skb_state defer_bh(struct usbnet *dev, struct sk_buff *skb,
struct sk_buff_head *list, enum skb_state state)
{ … }
void usbnet_defer_kevent (struct usbnet *dev, int work)
{ … }
EXPORT_SYMBOL_GPL(…);
static void rx_complete (struct urb *urb);
static int rx_submit (struct usbnet *dev, struct urb *urb, gfp_t flags)
{ … }
static inline int rx_process(struct usbnet *dev, struct sk_buff *skb)
{ … }
static void rx_complete (struct urb *urb)
{ … }
void usbnet_pause_rx(struct usbnet *dev)
{ … }
EXPORT_SYMBOL_GPL(…);
void usbnet_resume_rx(struct usbnet *dev)
{ … }
EXPORT_SYMBOL_GPL(…);
void usbnet_purge_paused_rxq(struct usbnet *dev)
{ … }
EXPORT_SYMBOL_GPL(…);
static int unlink_urbs (struct usbnet *dev, struct sk_buff_head *q)
{ … }
void usbnet_unlink_rx_urbs(struct usbnet *dev)
{ … }
EXPORT_SYMBOL_GPL(…);
static void wait_skb_queue_empty(struct sk_buff_head *q)
{ … }
static void usbnet_terminate_urbs(struct usbnet *dev)
{ … }
int usbnet_stop (struct net_device *net)
{ … }
EXPORT_SYMBOL_GPL(…);
int usbnet_open (struct net_device *net)
{ … }
EXPORT_SYMBOL_GPL(…);
int usbnet_get_link_ksettings_mii(struct net_device *net,
struct ethtool_link_ksettings *cmd)
{ … }
EXPORT_SYMBOL_GPL(…);
int usbnet_get_link_ksettings_internal(struct net_device *net,
struct ethtool_link_ksettings *cmd)
{ … }
EXPORT_SYMBOL_GPL(…);
int usbnet_set_link_ksettings_mii(struct net_device *net,
const struct ethtool_link_ksettings *cmd)
{ … }
EXPORT_SYMBOL_GPL(…);
u32 usbnet_get_link (struct net_device *net)
{ … }
EXPORT_SYMBOL_GPL(…);
int usbnet_nway_reset(struct net_device *net)
{ … }
EXPORT_SYMBOL_GPL(…);
void usbnet_get_drvinfo (struct net_device *net, struct ethtool_drvinfo *info)
{ … }
EXPORT_SYMBOL_GPL(…);
u32 usbnet_get_msglevel (struct net_device *net)
{ … }
EXPORT_SYMBOL_GPL(…);
void usbnet_set_msglevel (struct net_device *net, u32 level)
{ … }
EXPORT_SYMBOL_GPL(…);
static const struct ethtool_ops usbnet_ethtool_ops = …;
static void __handle_link_change(struct usbnet *dev)
{ … }
void usbnet_set_rx_mode(struct net_device *net)
{ … }
EXPORT_SYMBOL_GPL(…);
static void __handle_set_rx_mode(struct usbnet *dev)
{ … }
static void
usbnet_deferred_kevent (struct work_struct *work)
{ … }
static void tx_complete (struct urb *urb)
{ … }
void usbnet_tx_timeout (struct net_device *net, unsigned int txqueue)
{ … }
EXPORT_SYMBOL_GPL(…);
static int build_dma_sg(const struct sk_buff *skb, struct urb *urb)
{ … }
netdev_tx_t usbnet_start_xmit (struct sk_buff *skb,
struct net_device *net)
{ … }
EXPORT_SYMBOL_GPL(…);
static int rx_alloc_submit(struct usbnet *dev, gfp_t flags)
{ … }
static inline void usb_free_skb(struct sk_buff *skb)
{ … }
static void usbnet_bh (struct timer_list *t)
{ … }
static void usbnet_bh_tasklet(struct tasklet_struct *t)
{ … }
void usbnet_disconnect (struct usb_interface *intf)
{ … }
EXPORT_SYMBOL_GPL(…);
static const struct net_device_ops usbnet_netdev_ops = …;
static const struct device_type wlan_type = …;
static const struct device_type wwan_type = …;
int
usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod)
{ … }
EXPORT_SYMBOL_GPL(…);
int usbnet_suspend (struct usb_interface *intf, pm_message_t message)
{ … }
EXPORT_SYMBOL_GPL(…);
int usbnet_resume (struct usb_interface *intf)
{ … }
EXPORT_SYMBOL_GPL(…);
void usbnet_device_suggests_idle(struct usbnet *dev)
{ … }
EXPORT_SYMBOL(…);
int usbnet_manage_power(struct usbnet *dev, int on)
{ … }
EXPORT_SYMBOL(…);
void usbnet_link_change(struct usbnet *dev, bool link, bool need_reset)
{ … }
EXPORT_SYMBOL(…);
static int __usbnet_read_cmd(struct usbnet *dev, u8 cmd, u8 reqtype,
u16 value, u16 index, void *data, u16 size)
{ … }
static int __usbnet_write_cmd(struct usbnet *dev, u8 cmd, u8 reqtype,
u16 value, u16 index, const void *data,
u16 size)
{ … }
int usbnet_read_cmd(struct usbnet *dev, u8 cmd, u8 reqtype,
u16 value, u16 index, void *data, u16 size)
{ … }
EXPORT_SYMBOL_GPL(…);
int usbnet_write_cmd(struct usbnet *dev, u8 cmd, u8 reqtype,
u16 value, u16 index, const void *data, u16 size)
{ … }
EXPORT_SYMBOL_GPL(…);
int usbnet_read_cmd_nopm(struct usbnet *dev, u8 cmd, u8 reqtype,
u16 value, u16 index, void *data, u16 size)
{ … }
EXPORT_SYMBOL_GPL(…);
int usbnet_write_cmd_nopm(struct usbnet *dev, u8 cmd, u8 reqtype,
u16 value, u16 index, const void *data,
u16 size)
{ … }
EXPORT_SYMBOL_GPL(…);
static void usbnet_async_cmd_cb(struct urb *urb)
{ … }
int usbnet_write_cmd_async(struct usbnet *dev, u8 cmd, u8 reqtype,
u16 value, u16 index, const void *data, u16 size)
{ … }
EXPORT_SYMBOL_GPL(…);
static int __init usbnet_init(void)
{ … }
module_init(…) …;
static void __exit usbnet_exit(void)
{ … }
module_exit(usbnet_exit);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;