diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/usb/net/Kconfig | 8 | ||||
| -rw-r--r-- | drivers/usb/net/usbnet.c | 58 | 
2 files changed, 39 insertions, 27 deletions
| diff --git a/drivers/usb/net/Kconfig b/drivers/usb/net/Kconfig index 454a186b64ad..e081836014ac 100644 --- a/drivers/usb/net/Kconfig +++ b/drivers/usb/net/Kconfig @@ -92,8 +92,13 @@ config USB_RTL8150  	  To compile this driver as a module, choose M here: the  	  module will be called rtl8150. +config USB_USBNET_MII +	tristate +	default n +  config USB_USBNET  	tristate "Multi-purpose USB Networking Framework" +	select MII if USBNET_MII != n  	---help---  	  This driver supports several kinds of network links over USB,  	  with "minidrivers" built around a common network driver core @@ -129,7 +134,7 @@ config USB_NET_AX8817X  	tristate "ASIX AX88xxx Based USB 2.0 Ethernet Adapters"  	depends on USB_USBNET && NET_ETHERNET  	select CRC32 -	select MII +	select USB_USBNET_MII  	default y  	help  	  This option adds support for ASIX AX88xxx based USB 2.0 @@ -210,6 +215,7 @@ config USB_NET_PLUSB  config USB_NET_MCS7830  	tristate "MosChip MCS7830 based Ethernet adapters"  	depends on USB_USBNET +	select USB_USBNET_MII  	help  	  Choose this option if you're using a 10/100 Ethernet USB2  	  adapter based on the MosChip 7830 controller. This includes diff --git a/drivers/usb/net/usbnet.c b/drivers/usb/net/usbnet.c index 40873635d80e..760b5327b81b 100644 --- a/drivers/usb/net/usbnet.c +++ b/drivers/usb/net/usbnet.c @@ -669,6 +669,9 @@ done:   * they'll probably want to use this base set.   */ +#if defined(CONFIG_MII) || defined(CONFIG_MII_MODULE) +#define HAVE_MII +  int usbnet_get_settings (struct net_device *net, struct ethtool_cmd *cmd)  {  	struct usbnet *dev = netdev_priv(net); @@ -699,20 +702,6 @@ int usbnet_set_settings (struct net_device *net, struct ethtool_cmd *cmd)  }  EXPORT_SYMBOL_GPL(usbnet_set_settings); - -void usbnet_get_drvinfo (struct net_device *net, struct ethtool_drvinfo *info) -{ -	struct usbnet *dev = netdev_priv(net); - -	/* REVISIT don't always return "usbnet" */ -	strncpy (info->driver, driver_name, sizeof info->driver); -	strncpy (info->version, DRIVER_VERSION, sizeof info->version); -	strncpy (info->fw_version, dev->driver_info->description, -		sizeof info->fw_version); -	usb_make_path (dev->udev, info->bus_info, sizeof info->bus_info); -} -EXPORT_SYMBOL_GPL(usbnet_get_drvinfo); -  u32 usbnet_get_link (struct net_device *net)  {  	struct usbnet *dev = netdev_priv(net); @@ -730,40 +719,57 @@ u32 usbnet_get_link (struct net_device *net)  }  EXPORT_SYMBOL_GPL(usbnet_get_link); -u32 usbnet_get_msglevel (struct net_device *net) +int usbnet_nway_reset(struct net_device *net)  {  	struct usbnet *dev = netdev_priv(net); -	return dev->msg_enable; +	if (!dev->mii.mdio_write) +		return -EOPNOTSUPP; + +	return mii_nway_restart(&dev->mii);  } -EXPORT_SYMBOL_GPL(usbnet_get_msglevel); +EXPORT_SYMBOL_GPL(usbnet_nway_reset); -void usbnet_set_msglevel (struct net_device *net, u32 level) +#endif	/* HAVE_MII */ + +void usbnet_get_drvinfo (struct net_device *net, struct ethtool_drvinfo *info)  {  	struct usbnet *dev = netdev_priv(net); -	dev->msg_enable = level; +	/* REVISIT don't always return "usbnet" */ +	strncpy (info->driver, driver_name, sizeof info->driver); +	strncpy (info->version, DRIVER_VERSION, sizeof info->version); +	strncpy (info->fw_version, dev->driver_info->description, +		sizeof info->fw_version); +	usb_make_path (dev->udev, info->bus_info, sizeof info->bus_info);  } -EXPORT_SYMBOL_GPL(usbnet_set_msglevel); +EXPORT_SYMBOL_GPL(usbnet_get_drvinfo); -int usbnet_nway_reset(struct net_device *net) +u32 usbnet_get_msglevel (struct net_device *net)  {  	struct usbnet *dev = netdev_priv(net); -	if (!dev->mii.mdio_write) -		return -EOPNOTSUPP; +	return dev->msg_enable; +} +EXPORT_SYMBOL_GPL(usbnet_get_msglevel); -	return mii_nway_restart(&dev->mii); +void usbnet_set_msglevel (struct net_device *net, u32 level) +{ +	struct usbnet *dev = netdev_priv(net); + +	dev->msg_enable = level;  } -EXPORT_SYMBOL_GPL(usbnet_nway_reset); +EXPORT_SYMBOL_GPL(usbnet_set_msglevel);  /* drivers may override default ethtool_ops in their bind() routine */  static struct ethtool_ops usbnet_ethtool_ops = { +#ifdef	HAVE_MII  	.get_settings		= usbnet_get_settings,  	.set_settings		= usbnet_set_settings, -	.get_drvinfo		= usbnet_get_drvinfo,  	.get_link		= usbnet_get_link,  	.nway_reset		= usbnet_nway_reset, +#endif +	.get_drvinfo		= usbnet_get_drvinfo,  	.get_msglevel		= usbnet_get_msglevel,  	.set_msglevel		= usbnet_set_msglevel,  }; | 
