Hi!

The diff below makes cdce(4) to recognize cdce part of my Dell 5540 mini-pcie
card.

cdce port must be enabled before use by sending following to one
of the serial ports(should it be somehow documented in the manpage?):

AT+CFUN=1 # enable radio
AT+CGDCONT=1,"IP","internet" # configure apn
AT*ENAP=1,1 # enable cdce port

umodem0 at uhub5 port 6 configuration 1 interface 1 "<ADell Wireless 5540 Dell 
Wireless 5540" rev 2.00/0.00 addr 3
umodem0: data interface 2, has CM over data, has break
umodem0: status change notification available
ucom0 at umodem0
umodem1 at uhub5 port 6 configuration 1 interface 3 "<ADell Wireless 5540 Dell 
Wireless 5540" rev 2.00/0.00 addr 3
umodem1: data interface 4, has CM over data, has break
umodem1: status change notification available
ucom1 at umodem1
cdce0 at uhub5 port 6 configuration 1 interface 6 "<ADell Wireless 5540 Dell 
Wireless 5540" rev 2.00/0.00 addr 3
cdce0: address 02:80:37:ec:02:00
umodem2 at uhub5 port 6 configuration 1 interface 9 "<ADell Wireless 5540 Dell 
Wireless 5540" rev 2.00/0.00 addr 3
umodem2: data interface 10, has CM over data, has break
umodem2: status change notification available
ucom2 at umodem2
ugen0 at uhub5 port 6 configuration 1 "<ADell Wireless 5540 Dell Wireless 5540" 
rev 2.00/0.00 addr 3

Diff:

Index: sys/dev/usb/if_cdce.c
===================================================================
RCS file: /OpenBSD/src/sys/dev/usb/if_cdce.c,v
retrieving revision 1.50
diff -u -p -r1.50 if_cdce.c
--- sys/dev/usb/if_cdce.c       3 Jul 2011 15:47:17 -0000       1.50
+++ sys/dev/usb/if_cdce.c       20 Oct 2011 10:03:40 -0000
@@ -146,8 +146,9 @@ cdce_match(struct device *parent, void *
        if (cdce_lookup(uaa->vendor, uaa->product) != NULL)
                return (UMATCH_VENDOR_PRODUCT);
 
-       if (id->bInterfaceClass == UICLASS_CDC && id->bInterfaceSubClass ==
-           UISUBCLASS_ETHERNET_NETWORKING_CONTROL_MODEL)
+       if (id->bInterfaceClass == UICLASS_CDC && (
+           id->bInterfaceSubClass == 
UISUBCLASS_ETHERNET_NETWORKING_CONTROL_MODEL ||
+           id->bInterfaceSubClass == UISUBCLASS_MOBILE_DIRECT_LINE_MODEL))
                return (UMATCH_IFACECLASS_GENERIC);
 
        return (UMATCH_NONE);
Index: sys/dev/usb/usb.h
===================================================================
RCS file: /OpenBSD/src/sys/dev/usb/usb.h,v
retrieving revision 1.37
diff -u -p -r1.37 usb.h
--- sys/dev/usb/usb.h   4 Mar 2011 23:55:32 -0000       1.37
+++ sys/dev/usb/usb.h   20 Oct 2011 10:03:40 -0000
@@ -412,6 +412,7 @@ typedef struct {
 #define         UISUBCLASS_CAPI_CONTROLMODEL           5
 #define         UISUBCLASS_ETHERNET_NETWORKING_CONTROL_MODEL 6
 #define         UISUBCLASS_ATM_NETWORKING_CONTROL_MODEL 7
+#define         UISUBCLASS_MOBILE_DIRECT_LINE_MODEL    10
 #define   UIPROTO_CDC_AT                       1
 
 #define UICLASS_HID            0x03
Index: share/man/man4/cdce.4
===================================================================
RCS file: /OpenBSD/src/share/man/man4/cdce.4,v
retrieving revision 1.14
diff -u -p -r1.14 cdce.4
--- share/man/man4/cdce.4       14 Mar 2008 15:19:52 -0000      1.14
+++ share/man/man4/cdce.4       20 Oct 2011 10:03:40 -0000
@@ -46,6 +46,8 @@ including the following:
 .It
 Acer Labs USB 2.0 Data Link
 .It
+Dell Wireless 5540
+.It
 FRITZ!Box Fon ata 1020
 .It
 G.Mate YP3X00


-- 
rivo

Reply via email to