#include <linux/module.h>
#include <linux/kmod.h>
#include <linux/init.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/crc32.h>
#include <linux/usb/usbnet.h>
#include <linux/slab.h>
#include <linux/if_vlan.h>
#include "sr9800.h"
static int sr_read_cmd(struct usbnet *dev, u8 cmd, u16 value, u16 index,
u16 size, void *data)
{ … }
static int sr_write_cmd(struct usbnet *dev, u8 cmd, u16 value, u16 index,
u16 size, void *data)
{ … }
static void
sr_write_cmd_async(struct usbnet *dev, u8 cmd, u16 value, u16 index,
u16 size, void *data)
{ … }
static int sr_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
{ … }
static struct sk_buff *sr_tx_fixup(struct usbnet *dev, struct sk_buff *skb,
gfp_t flags)
{ … }
static void sr_status(struct usbnet *dev, struct urb *urb)
{ … }
static inline int sr_set_sw_mii(struct usbnet *dev)
{ … }
static inline int sr_set_hw_mii(struct usbnet *dev)
{ … }
static inline int sr_get_phy_addr(struct usbnet *dev)
{ … }
static int sr_sw_reset(struct usbnet *dev, u8 flags)
{ … }
static u16 sr_read_rx_ctl(struct usbnet *dev)
{ … }
static int sr_write_rx_ctl(struct usbnet *dev, u16 mode)
{ … }
static u16 sr_read_medium_status(struct usbnet *dev)
{ … }
static int sr_write_medium_mode(struct usbnet *dev, u16 mode)
{ … }
static int sr_write_gpio(struct usbnet *dev, u16 value, int sleep)
{ … }
static void sr_set_multicast(struct net_device *net)
{ … }
static int sr_mdio_read(struct net_device *net, int phy_id, int loc)
{ … }
static void
sr_mdio_write(struct net_device *net, int phy_id, int loc, int val)
{ … }
static u32 sr_get_phyid(struct usbnet *dev)
{ … }
static void
sr_get_wol(struct net_device *net, struct ethtool_wolinfo *wolinfo)
{ … }
static int
sr_set_wol(struct net_device *net, struct ethtool_wolinfo *wolinfo)
{ … }
static int sr_get_eeprom_len(struct net_device *net)
{ … }
static int sr_get_eeprom(struct net_device *net,
struct ethtool_eeprom *eeprom, u8 *data)
{ … }
static void sr_get_drvinfo(struct net_device *net,
struct ethtool_drvinfo *info)
{ … }
static u32 sr_get_link(struct net_device *net)
{ … }
static int sr_ioctl(struct net_device *net, struct ifreq *rq, int cmd)
{ … }
static int sr_set_mac_address(struct net_device *net, void *p)
{ … }
static const struct ethtool_ops sr9800_ethtool_ops = …;
static int sr9800_link_reset(struct usbnet *dev)
{ … }
static int sr9800_set_default_mode(struct usbnet *dev)
{ … }
static int sr9800_reset(struct usbnet *dev)
{ … }
static const struct net_device_ops sr9800_netdev_ops = …;
static int sr9800_phy_powerup(struct usbnet *dev)
{ … }
static int sr9800_bind(struct usbnet *dev, struct usb_interface *intf)
{ … }
static const struct driver_info sr9800_driver_info = …;
static const struct usb_device_id products[] = …;
MODULE_DEVICE_TABLE(usb, products);
static struct usb_driver sr_driver = …;
module_usb_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_VERSION(…);
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;