by some sample firmware from Epson.
 
 config USB_ZAURUS
-       boolean "Sharp Zaurus (stock ROMs)"
+       boolean "Sharp Zaurus (stock ROMs) and compatible"
        depends on USB_USBNET
        select CRC32
        default y
        help
          Choose this option to support the usb networking links used by
          Zaurus models like the SL-5000D, SL-5500, SL-5600, A-300, B-500.
-
-         If you install an alternate ROM image, you may no longer need
-         to support this protocol.  Only the "eth-fd" driver really needs
-         this non-conformant variant of CDC Ethernet protocol.
+         This also supports some related device firmware, as used in some
+         PDAs from Olympus and some cell phones from Motorola.
+
+         If you install an alternate ROM image, such as the Linux 2.6 based
+         versions of OpenZaurus, you should no longer need to support this
+         protocol.  Only the "eth-fd" or "net_fd" drivers in these devices
+         really need this non-conformant variant of CDC Ethernet (or in
+         some cases CDC MDLM) protocol, not "g_ether".
 
 config USB_CDCETHER
        boolean "CDC Ethernet support (smart devices such as cable modems)"
 
        }
 }
 
+#endif /* NEED_GENERIC_CDC */
+
+\f
+#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)
 {
        }
 }
 
-#endif /* NEED_GENERIC_CDC */
-
-\f
-#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)))
                        }
                        /* 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;
                         *  - 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.
                                 */
 }, {
        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, ...