On Friday 06 May 2005 9:26 am, Andrea Arcangeli wrote: > On Fri, May 06, 2005 at 08:24:56AM -0700, David Brownell wrote: > > Andrea, did you check that patch I sent the other day? > > > > This particular patch sure seems wrong, given the > > descriptor listings you provided. (They show a clear > > intent to use the Belcarra pseudo-MDLM protocol, with > > Zaurus-compatible framing.) > > It rejected heavily on the tree I tried, was it against git mainline or > usb-git? So I couldn't test it yet, I was just going to find what tree > was it supposed to be applied against.
The attached patch should go against current Linus BK. > It's true on the windows side, some folks used the so called belcarra > drivers (I've never tried them, linux just worked by only adding the > new ids). Then it'd seem that Motorola ripped out the most pointless parts of the Belcarra protocol, then. That's a good start, but then I wonder why they didn't rip out the parts that say they _need_ a checksum too? - Dave
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 - Remove ID for one Motorola phone that uses the MDLM stuff. Signed-off-by: David Brownell <[EMAIL PROTECTED]> --- x/drivers/usb/net/usbnet.c 2005-05-04 23:03:13.000000000 -0700 +++ gadget-2.6/drivers/usb/net/usbnet.c 2005-05-06 09:14:07.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. */ @@ -4071,9 +4073,6 @@ USB_DEVICE (0x8086, 0x07d3), // "blob" bootloader .driver_info = (unsigned long) &blob_info, }, { - USB_DEVICE (0x22b8, 0x600c), // USBNET Motorola E680 - .driver_info = (unsigned long) &linuxdev_info, -}, { // Linux Ethernet/RNDIS gadget on pxa210/25x/26x // e.g. Gumstix, current OpenZaurus, ... USB_DEVICE_VER (0x0525, 0xa4a2, 0x0203, 0x0203),