#include <linux/module.h>
#include <linux/netdevice.h>
#include <linux/ethtool.h>
#include <linux/if_vlan.h>
#include <linux/ip.h>
#include <linux/mii.h>
#include <linux/usb.h>
#include <linux/usb/cdc.h>
#include <linux/usb/usbnet.h>
#include <linux/usb/cdc-wdm.h>
#include <linux/usb/cdc_ncm.h>
#include <net/ipv6.h>
#include <net/addrconf.h>
#include <net/ipv6_stubs.h>
#include <net/ndisc.h>
#define MBIM_IPS0_VID …
struct cdc_mbim_state { … };
enum cdc_mbim_flags { … };
static int cdc_mbim_manage_power(struct usbnet *dev, int on)
{ … }
static int cdc_mbim_wdm_manage_power(struct usb_interface *intf, int status)
{ … }
static int cdc_mbim_rx_add_vid(struct net_device *netdev, __be16 proto, u16 vid)
{ … }
static int cdc_mbim_rx_kill_vid(struct net_device *netdev, __be16 proto, u16 vid)
{ … }
static const struct net_device_ops cdc_mbim_netdev_ops = …;
static int cdc_mbim_set_ctrlalt(struct usbnet *dev, struct usb_interface *intf, u8 alt)
{ … }
static int cdc_mbim_bind(struct usbnet *dev, struct usb_interface *intf)
{ … }
static void cdc_mbim_unbind(struct usbnet *dev, struct usb_interface *intf)
{ … }
static bool is_ip_proto(__be16 proto)
{ … }
static struct sk_buff *cdc_mbim_tx_fixup(struct usbnet *dev, struct sk_buff *skb, gfp_t flags)
{ … }
static void do_neigh_solicit(struct usbnet *dev, u8 *buf, u16 tci)
{ … }
static bool is_neigh_solicit(u8 *buf, size_t len)
{ … }
static struct sk_buff *cdc_mbim_process_dgram(struct usbnet *dev, u8 *buf, size_t len, u16 tci)
{ … }
static int cdc_mbim_rx_fixup(struct usbnet *dev, struct sk_buff *skb_in)
{ … }
static int cdc_mbim_suspend(struct usb_interface *intf, pm_message_t message)
{ … }
static int cdc_mbim_resume(struct usb_interface *intf)
{ … }
static const struct driver_info cdc_mbim_info = …;
static const struct driver_info cdc_mbim_info_zlp = …;
static const struct driver_info cdc_mbim_info_ndp_to_end = …;
static const struct driver_info cdc_mbim_info_avoid_altsetting_toggle = …;
static const struct usb_device_id mbim_devs[] = …;
MODULE_DEVICE_TABLE(usb, mbim_devs);
static struct usb_driver cdc_mbim_driver = …;
module_usb_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;