Hi,
Here is a patch against linux-2.6.8.1 to make usbnet works with freebox. This device is an ADSL modem which does not return a valid MAC address. CDCEther was working with it in linux-2.4 because it was not checking the MAC address.
Regards,
Guilhem Lavaux.
diff -ur -x '*.o' -x '.*.cmd' -x '*.ko' -x '*.mod.c'
linux-2.6.8.1/drivers/usb/net/Kconfig linux-2.6.8.1.new/drivers/usb/net/Kconfig
--- linux-2.6.8.1/drivers/usb/net/Kconfig 2004-08-14 12:55:48.000000000 +0200
+++ linux-2.6.8.1.new/drivers/usb/net/Kconfig 2004-09-05 09:17:05.000000000 +0200
@@ -223,6 +223,14 @@
to support this protocol. Only the "eth-fd" driver really needs
this non-conformant variant of CDC Ethernet protocol.
+config USB_FREEBOX
+ boolean "FreeBox USB connection support"
+ depends on USB_USBNET
+ default y
+ help
+ Choose this option to support the usb networking links used
+ by the FreeBox ADSL modem.
+
config USB_CDCETHER
boolean "CDC Ethernet support (smart devices such as cable modems)"
depends on USB_USBNET
diff -ur -x '*.o' -x '.*.cmd' -x '*.ko' -x '*.mod.c'
linux-2.6.8.1/drivers/usb/net/usbnet.c linux-2.6.8.1.new/drivers/usb/net/usbnet.c
--- linux-2.6.8.1/drivers/usb/net/usbnet.c 2004-08-14 12:55:33.000000000 +0200
+++ linux-2.6.8.1.new/drivers/usb/net/usbnet.c 2004-09-15 07:34:50.000000000 +0200
@@ -906,6 +906,11 @@
#define NEED_GENERIC_CDC
#endif
+#ifdef CONFIG_USB_FREEBOX
+/* Ethernet variant which does not have any MAC address */
+#define NEED_GENERIC_CDC
+#endif
+
#ifdef NEED_GENERIC_CDC
@@ -1215,8 +1220,21 @@
.bind = cdc_bind,
.unbind = cdc_unbind,
};
-
#endif /* CONFIG_USB_CDCETHER */
+
+
+
+#ifdef CONFIG_USB_FREEBOX
+#define HAVE_HARDWARE
+
+static const struct driver_info freebox_info = {
+ .description = "FreeBox Device",
+ .flags = FLAG_ETHER,
+ .bind = generic_cdc_bind,
+ .unbind = cdc_unbind,
+};
+
+#endif /* CONFIG_USB_FREEBOX */
@@ -3416,6 +3434,19 @@
// FIXME blacklist the other Zaurus models too, sigh
#endif
+#ifdef CONFIG_USB_FREEBOX
+{
+ .match_flags = USB_DEVICE_ID_MATCH_INT_INFO
+ | USB_DEVICE_ID_MATCH_DEVICE,
+ .idVendor = 0x10eb,
+ .idProduct = 0x0001,
+ .bInterfaceClass = USB_CLASS_COMM,
+ .bInterfaceSubClass = 6,
+ .bInterfaceProtocol = 0,
+ .driver_info = (unsigned long) &freebox_info,
+},
+#endif
+
{
/* CDC Ether uses two interfaces, not necessarily consecutive.
* We match the main interface, ignoring the optional device
