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),