On Tuesday 03 May 2005 6:22 pm, Andrea Arcangeli wrote: > The cellphone shows 3 modes, you have to choose between "mass storagae" > or "modem" before you plug in the cable, then if you connect the cable > as "modem" you can as well transform it into a usbnet while the cable is > plugged it (after that you run ifconfig on both sides and you start > inetd so it answers to telnet).
That seems more than a bit convoluted ... :) So it's just like the other Motorola phone that was addressed by the "pseudo-MDLM" support patch I sent a while back ... which IMO wasn't quite ready for Linus' tree, it had only been used with a Motorola phone, and ended up broking some of the more recent Zaurus models. Instead of that patch you sent, can you try this one instead? I've enclosed a version against a GIT snapshot of 2.6.12-rc I took yesterday. - Dave > Bus 002 Device 036: ID 22b8:600c Motorola PCS A768i GSM Phone > Device Descriptor: > bLength 18 > bDescriptorType 1 > bcdUSB 2.00 > bDeviceClass 2 Communications > bDeviceSubClass 2 Abstract (modem) > bDeviceProtocol 0 None > bMaxPacketSize0 16 > idVendor 0x22b8 Motorola PCS > idProduct 0x600c A768i GSM Phone > bcdDevice 0.00 > iManufacturer 3 Motorola > iProduct 4 Motorola USBLAN > iSerial 0 > bNumConfigurations 1 > Configuration Descriptor: > bLength 9 > bDescriptorType 2 > wTotalLength 92 > bNumInterfaces 1 > bConfigurationValue 1 > iConfiguration 5 BLAN Net Cfg > bmAttributes 0x80 > MaxPower 500mA > Interface Descriptor: > bLength 9 > bDescriptorType 4 > bInterfaceNumber 0 > bAlternateSetting 0 > bNumEndpoints 3 > bInterfaceClass 2 Communications > bInterfaceSubClass 10 Mobile Direct Line > bInterfaceProtocol 0 > iInterface 6 Comm/Data Intf > CDC Header: > bcdCDC 1.10 > CDC MDLM: > bcdCDC 1.00 > bGUID 74 f0 3d bd 1e c1 44 70 a3 67 71 34 c9 f5 54 37 > CDC MDLM detail: > bGuidDescriptorType 01 > bDetailData 00 01 00 > CDC Ethernet: > iMacAddress 1 92935fbbc0df > bmEthernetStatistics 0x00000000 > wMaxSegmentSize 1514 > wNumberMCFilters 0x0000 > bNumberPowerFilters 0 > UNRECOGNIZED: 07 24 0a 00 02 00 00 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x01 EP 1 OUT > bmAttributes 2 > Transfer Type Bulk > Synch Type None > Usage Type Data > wMaxPacketSize 0x0040 1x 64 bytes > bInterval 0 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x82 EP 2 IN > bmAttributes 2 > Transfer Type Bulk > Synch Type None > Usage Type Data > wMaxPacketSize 0x0040 1x 64 bytes > bInterval 0 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x83 EP 3 IN > bmAttributes 3 > Transfer Type Interrupt > Synch Type None > Usage Type Data > wMaxPacketSize 0x0010 1x 16 bytes > bInterval 10 >
Updates to the usbnet driver: - Remove a warning when built with Zaurus support but not CDC Ethernet; just moves an #ifdef to cover more code - Two tweaks to the pseudo-MDLM support: * correctly handle _either_ of the two GUIDs * ignore a padding bit that doesn't seem necessary Signed-off-by: David Brownell <[EMAIL PROTECTED]> --- linux-2.6/drivers/usb/net/usbnet.c 2005-05-03 13:49:38.000000000 -0700 +++ gadget-2.6/drivers/usb/net/usbnet.c 2005-05-04 18:20:22.000000000 -0700 @@ -1517,6 +1517,26 @@ } } +#endif /* NEED_GENERIC_CDC */ + + +#ifdef CONFIG_USB_CDCETHER +#define HAVE_HARDWARE + +/*------------------------------------------------------------------------- + * + * Communications Device Class, Ethernet Control model + * + * Takes two interfaces. The DATA interface is inactive till an altsetting + * is selected. Configuration data includes class descriptors. + * + * This should interop with whatever the 2.4 "CDCEther.c" driver + * (by Brad Hards) talked with. + * + *-------------------------------------------------------------------------*/ + +#include <linux/ctype.h> + static void dumpspeed (struct usbnet *dev, __le32 *speeds) { @@ -1567,26 +1587,6 @@ } } -#endif /* NEED_GENERIC_CDC */ - - -#ifdef CONFIG_USB_CDCETHER -#define HAVE_HARDWARE - -/*------------------------------------------------------------------------- - * - * Communications Device Class, Ethernet Control model - * - * Takes two interfaces. The DATA interface is inactive till an altsetting - * is selected. Configuration data includes class descriptors. - * - * This should interop with whatever the 2.4 "CDCEther.c" driver - * (by Brad Hards) talked with. - * - *-------------------------------------------------------------------------*/ - -#include <linux/ctype.h> - static u8 nibble (unsigned char c) { if (likely (isdigit (c))) @@ -2765,7 +2765,7 @@ } /* expect bcdVersion 1.0, ignore */ if (memcmp(&desc->bGUID, blan_guid, 16) - || memcmp(&desc->bGUID, blan_guid, 16) ) { + && memcmp(&desc->bGUID, blan_guid, 16) ) { /* hey, this one might _really_ be MDLM! */ dev_dbg (&intf->dev, "MDLM guid\n"); goto bad_desc; @@ -2797,11 +2797,13 @@ * - bPad (ignored, for PADAFTER -- BLAN-only) * bits are: * - 0x01 -- Zaurus framing (add CRC) - * - 0x02 -- PADBEFORE - * - 0x04 -- PADAFTER + * - 0x02 -- PADBEFORE (CRC includes some padding) + * - 0x04 -- PADAFTER (some padding after CRC) * - 0x08 -- "fermat" packet mangling (for hw bugs) + * the PADBEFORE appears not to matter; we interop + * with devices that use it and those that don't. */ - if (detail->bDetailData[1] != 0x01) { + if ((detail->bDetailData[1] & ~02) != 0x01) { /* bmDataCapabilites == 0 would be fine too, * but framing is minidriver-coupled for now. */