Re: [PATCH 2/2] usbnet: use MII hooks only if CONFIG_MII is enabled
From: Christoph Hellwig <hch@infradead.org>
Date: 2006-10-28 11:21:29
Also in:
lkml
On Wed, Oct 25, 2006 at 04:58:58PM -0700, Randy Dunlap wrote:
On Wed, 25 Oct 2006 15:27:09 -0700 David Brownell wrote:quoted
Instead, "usbnet.c" should #ifdef the relevant ethtool hooks according to CONFIG_MII ... since it's completely legit to use usbnet with peripherals that don't need MII.--- From: Randy Dunlap <redacted> usbnet driver should use mii_*() interfaces if they are available in the kernel (config enabled) but usbnet does not require or depend on these interfaces. Build tested with CONFIG_MII=y, m, n.
This is really awkward and against what we do in any other driver. Lots of PCI ethernet drivers use the MII code but have non-MII variants, and I'd expect usb code to do the same. If you really need to squeeze the last bytes out of usbnet for some embedded thing add a CONFIG_USB_NET_MII opention and explain in the help text which devices require it. Otherwise a normal user has no way to find out why his mii-requiring usb device randomly stopped working.
quoted hunk ↗ jump to hunk
Signed-off-by: Randy Dunlap <redacted> --- drivers/usb/net/usbnet.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+)--- linux-2619-rc3-pv.orig/drivers/usb/net/usbnet.c +++ linux-2619-rc3-pv/drivers/usb/net/usbnet.c@@ -47,6 +47,12 @@ #define DRIVER_VERSION "22-Aug-2005" +#if defined(CONFIG_MII) || defined(CONFIG_MII_MODULE) +#define HAVE_MII 1 +#else +#define HAVE_MII 0 +#endif + /*-------------------------------------------------------------------------*/@@ -676,7 +682,10 @@ int usbnet_get_settings (struct net_devi if (!dev->mii.mdio_read) return -EOPNOTSUPP; +#if HAVE_MII return mii_ethtool_gset(&dev->mii, cmd); +#endif + return -EOPNOTSUPP; } EXPORT_SYMBOL_GPL(usbnet_get_settings);@@ -688,7 +697,11 @@ int usbnet_set_settings (struct net_devi if (!dev->mii.mdio_write) return -EOPNOTSUPP; +#if HAVE_MII retval = mii_ethtool_sset(&dev->mii, cmd); +#else + retval = -EOPNOTSUPP; +#endif /* link speed/duplex might have changed */ if (dev->driver_info->link_reset)@@ -721,9 +734,11 @@ u32 usbnet_get_link (struct net_device * if (dev->driver_info->check_connect) return dev->driver_info->check_connect (dev) == 0; +#if HAVE_MII /* if the device has mii operations, use those */ if (dev->mii.mdio_read) return mii_link_ok(&dev->mii); +#endif /* Otherwise, say we're up (to avoid breaking scripts) */ return 1;@@ -753,7 +768,10 @@ int usbnet_nway_reset(struct net_device if (!dev->mii.mdio_write) return -EOPNOTSUPP; +#if HAVE_MII return mii_nway_restart(&dev->mii); +#endif + return -EOPNOTSUPP; } EXPORT_SYMBOL_GPL(usbnet_nway_reset); -To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
---end quoted text---