MT7620原生SDK支持HUAWEI 4G dongle


[email protected] junglefly

 

HUAWEI新的4Gdongle不同于老的3G dongle,需要使用3G拨号;由于4G dongle本身就会自动拨号,所以对于linux来说,只需要做到如下两件事情:

加载正确的驱动;

启动DHCP 客户端,从4G dongle获得IP地址。

 

现在HUAWEI的很多4G dongle使用 USB CDC Ethernet devices 或者 USB CDC NCM host driver 作为一个USB口的网络设备来工作。下表是华为的一些3G,4G dongle使用的驱动举例:

型号

使用的驱动

Debug信息

HUAWEI E3531

cdc_ether

T:  Bus=01 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#= 17 Spd=480 MxCh= 0

D:  Ver= 2.00 Cls=02(comm.) Sub=00 Prot=00 MxPS=64 #Cfgs=  1

P:  Vendor=12d1 ProdID=14dc Rev= 1.02

S:  Manufacturer=HUAWEI

S:  Product=HUAWEI Mobile

C:* #Ifs= 3 Cfg#= 1 Atr=80 MxPwr=500mA

I:* If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=06 Prot=00 Driver=cdc_ether

E:  Ad=83(I) Atr=03(Int.) MxPS=  16 Ivl=32ms

I:* If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether

E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

I:* If#= 2 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage

E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=125us

 

网络接口:

usb0      Link encap:Ethernet  HWaddr 3A:EA:AC:1A:1F:75 

          BROADCAST MULTICAST  MTU:1500  Metric:1

          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

HUAWEI E355

cdc_ncm

T:  Bus=01 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#= 19 Spd=480 MxCh= 0

D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1

P:  Vendor=12d1 ProdID=1c1e Rev= 1.02

S:  Manufacturer=HUAWEI

S:  Product=HUAWEI Mobile

C:* #Ifs= 5 Cfg#= 1 Atr=80 MxPwr=500mA

I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)

E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms

I:* If#= 1 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage

E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)

E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms

I:  If#= 3 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=0d Prot=00 Driver=cdc_ncm

E:  Ad=84(I) Atr=03(Int.) MxPS=  64 Ivl=2ms

I:* If#= 3 Alt= 1 #EPs= 3 Cls=02(comm.) Sub=0d Prot=00 Driver=cdc_ncm

E:  Ad=84(I) Atr=03(Int.) MxPS=  64 Ivl=2ms

E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms

I:* If#= 4 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage

E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

 

网络接口:

wwan0     Link encap:Ethernet  HWaddr 58:2C:80:13:92:63 

          BROADCAST MULTICAST  MTU:1500  Metric:1

          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

 

HUAWEI E3131

cdc_ncm

T:  Bus=01 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#= 23 Spd=480 MxCh= 0

D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1

P:  Vendor=12d1 ProdID=1506 Rev= 1.02

S:  Manufacturer=HUAWEI

S:  Product=HUAWEI Mobile

C:* #Ifs= 6 Cfg#= 1 Atr=80 MxPwr=500mA

I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=02 Prot=01 Driver=(none)

E:  Ad=81(I) Atr=03(Int.) MxPS=  64 Ivl=2ms

E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms

I:  If#= 1 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=02 Prot=16 Driver=cdc_ncm

E:  Ad=83(I) Atr=03(Int.) MxPS=  64 Ivl=2ms

I:* If#= 1 Alt= 1 #EPs= 3 Cls=ff(vend.) Sub=02 Prot=16 Driver=cdc_ncm

E:  Ad=83(I) Atr=03(Int.) MxPS=  64 Ivl=2ms

E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms

I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=02 Prot=03 Driver=(none)

E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms

I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=02 Prot=02 Driver=(none)

E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms

I:* If#= 4 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage

E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

I:* If#= 5 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage

E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

 

网络接口:

wwan0     Link encap:Ethernet  HWaddr 58:2C:80:13:92:63 

          BROADCAST MULTICAST  MTU:1500  Metric:1

          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

 

HUAWEI

EC3372-871

cdc_ether

T:  Bus=01 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#= 21 Spd=480 MxCh= 0

D:  Ver= 2.10 Cls=02(comm.) Sub=00 Prot=00 MxPS=64 #Cfgs=  1

P:  Vendor=12d1 ProdID=14dc Rev= 1.02

S:  Manufacturer=HUAWEI_MOBILE

S:  Product=HUAWEI_MOBILE

C:* #Ifs= 3 Cfg#= 1 Atr=80 MxPwr=  2mA

I:* If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=06 Prot=00 Driver=cdc_ether

E:  Ad=83(I) Atr=03(Int.) MxPS=  16 Ivl=2ms

I:* If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=06 Prot=00 Driver=cdc_ether

E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

I:* If#= 2 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage

E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=125us

 

网络接口:

eth0      Link encap:Ethernet  HWaddr 0C:5B:8F:27:9A:64 

          BROADCAST MULTICAST  MTU:1500  Metric:1

          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

HUAWEI E303F

cdc_ether

T:  Bus=01 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#= 25 Spd=480 MxCh= 0

D:  Ver= 2.00 Cls=02(comm.) Sub=00 Prot=00 MxPS=64 #Cfgs=  1

P:  Vendor=12d1 ProdID=14db Rev= 1.02

S:  Manufacturer=HUAWEI

S:  Product=HUAWEI HiLink

C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=500mA

I:* If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=06 Prot=00 Driver=cdc_ether

E:  Ad=81(I) Atr=03(Int.) MxPS=  64 Ivl=2ms

I:* If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=06 Prot=00 Driver=cdc_ether

E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms

 

网络接口:

eth0      Link encap:Ethernet  HWaddr 58:2C:80:13:92:63 

          BROADCAST MULTICAST  MTU:1500  Metric:1

          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

 

 

MT7620原生SDK使用的linux内核版本为2.6.36,在该内核版本中,还不支持USB CDC NCM host driv,另外USB CDC Ethernet驱动中也不支持huawei设备。

 

如果是作为USB CDC NCM host driver设备来使用的话,由于从2.6.38开启内核才有该驱动,所以需要从比较新的linux内核中移植过去。

 

 

移植源文件

移植2.6.39内核

首先移植2.6.39内核的linux-2.6.39\drivers\net\usb目录中的相关文件到MT7620的对应目录中;

l  将cdc_ncm.c直接拷贝到MT7620 SDK中;

l  修改“source\linux-2.6.36.x\drivers\net\usb\Kconfig”,添加如下行

 

config USB_NET_CDC_NCM

   tristate "CDC NCM support"

   depends on USB_USBNET

   default y

   help

     This driver provides support for CDC NCM (Network Control Model

     Device USB Class Specification). The CDC NCM specification is

     available from <http://www.usb.org/>.

 

     Say "y" to link the driver statically, or "m" to build a

     dynamically linked module.

 

     This driver should work with at least the following devices:

       * ST-Ericsson M700 LTE FDD/TDD Mobile Broadband Modem (ref. design)

       * ST-Ericsson M5730 HSPA+ Mobile Broadband Modem (reference design)

       * ST-Ericsson M570 HSPA+ Mobile Broadband Modem (reference design)

       * ST-Ericsson M343 HSPA Mobile Broadband Modem (reference design)

       * Ericsson F5521gw Mobile Broadband Module

 

 

l  修改“source\linux-2.6.36.x\drivers\net\usb\Makefile”,添加如下行

 

obj-$(CONFIG_USB_NET_CDC_NCM)   += cdc_ncm.o

 

 

l  编译时,缺少的头文件可以从linux-2.6.39中拷贝过去;

 

 

移植linux-3.10.11部分的驱动

部分修改如下:

l  修改“source\linux-2.6.36.x\drivers\net\usb\cdc_ncm.c”

 

 

/* Same as cdc_ncm_info, but with FLAG_WWAN */

static const struct driver_info wwan_info = {

    .description = "Mobile Broadband Network Device",

    .flags = FLAG_POINTTOPOINT | FLAG_NO_SETINT | FLAG_MULTI_PACKET

            | FLAG_WWAN,

    .bind = cdc_ncm_bind,

    .unbind = cdc_ncm_unbind,

    .check_connect = cdc_ncm_check_connect,

    .manage_power = cdc_ncm_manage_power,

    .status = cdc_ncm_status,

    .rx_fixup = cdc_ncm_rx_fixup,

    .tx_fixup = cdc_ncm_tx_fixup,

};

 

/* Same as wwan_info, but with FLAG_NOARP  */

static const struct driver_info wwan_noarp_info = {

    .description = "Mobile Broadband Network Device (NO ARP)",

    .flags = FLAG_POINTTOPOINT | FLAG_NO_SETINT | FLAG_MULTI_PACKET

            | FLAG_WWAN | FLAG_NOARP,

    .bind = cdc_ncm_bind,

    .unbind = cdc_ncm_unbind,

    .check_connect = cdc_ncm_check_connect,

    .manage_power = cdc_ncm_manage_power,

    .status = cdc_ncm_status,

    .rx_fixup = cdc_ncm_rx_fixup,

    .tx_fixup = cdc_ncm_tx_fixup,

};

 

static const struct usb_device_id cdc_devs[] = {

    /* Ericsson MBM devices like F5521gw */

    { .match_flags = USB_DEVICE_ID_MATCH_INT_INFO

        | USB_DEVICE_ID_MATCH_VENDOR,

      .idVendor = 0x0bdb,

      .bInterfaceClass = USB_CLASS_COMM,

      .bInterfaceSubClass = USB_CDC_SUBCLASS_NCM,

      .bInterfaceProtocol = USB_CDC_PROTO_NONE,

      .driver_info = (unsigned long) &wwan_info,

    },

 

    /* Dell branded MBM devices like DW5550 */

    { .match_flags = USB_DEVICE_ID_MATCH_INT_INFO

        | USB_DEVICE_ID_MATCH_VENDOR,

      .idVendor = 0x413c,

      .bInterfaceClass = USB_CLASS_COMM,

      .bInterfaceSubClass = USB_CDC_SUBCLASS_NCM,

      .bInterfaceProtocol = USB_CDC_PROTO_NONE,

      .driver_info = (unsigned long) &wwan_info,

    },

 

    /* Toshiba branded MBM devices */

    { .match_flags = USB_DEVICE_ID_MATCH_INT_INFO

        | USB_DEVICE_ID_MATCH_VENDOR,

      .idVendor = 0x0930,

      .bInterfaceClass = USB_CLASS_COMM,

      .bInterfaceSubClass = USB_CDC_SUBCLASS_NCM,

      .bInterfaceProtocol = USB_CDC_PROTO_NONE,

      .driver_info = (unsigned long) &wwan_info,

    },

 

    /* tag Huawei devices as wwan */

    { USB_VENDOR_AND_INTERFACE_INFO(0x12d1,

                    USB_CLASS_COMM,

                    USB_CDC_SUBCLASS_NCM,

                    USB_CDC_PROTO_NONE),

      .driver_info = (unsigned long)&wwan_info,

    },

 

    /* Huawei NCM devices disguised as vendor specific */

    { USB_VENDOR_AND_INTERFACE_INFO(0x12d1, 0xff, 0x02, 0x16),

      .driver_info = (unsigned long)&wwan_info,

    },

    { USB_VENDOR_AND_INTERFACE_INFO(0x12d1, 0xff, 0x02, 0x46),

      .driver_info = (unsigned long)&wwan_info,

    },

    { USB_VENDOR_AND_INTERFACE_INFO(0x12d1, 0xff, 0x02, 0x76),

      .driver_info = (unsigned long)&wwan_info,

    },

 

    /* Infineon(now Intel) HSPA Modem platform */

    { USB_DEVICE_AND_INTERFACE_INFO(0x1519, 0x0443,

        USB_CLASS_COMM,

        USB_CDC_SUBCLASS_NCM, USB_CDC_PROTO_NONE),

      .driver_info = (unsigned long)&wwan_noarp_info,

    },

 

    /* Generic CDC-NCM devices */

    { USB_INTERFACE_INFO(USB_CLASS_COMM,

        USB_CDC_SUBCLASS_NCM, USB_CDC_PROTO_NONE),

        .driver_info = (unsigned long)&cdc_ncm_info,

    },

    {

    },

};

MODULE_DEVICE_TABLE(usb, cdc_devs);

 

static struct usb_driver cdc_ncm_driver = {

    .name = "cdc_ncm",

    .id_table = cdc_devs,

    .probe = cdc_ncm_probe,

    .disconnect = cdc_ncm_disconnect,

    .suspend = usbnet_suspend,

    .resume = usbnet_resume,

    .supports_autosuspend = 1,

};

 

 

l  修改“source\linux-2.6.36.x\drivers\net\usb\cdc_ether.c”

 

#define HUAWEI_VENDOR_ID  0x12D1

#define NOVATEL_VENDOR_ID   0x1410

#define ZTE_VENDOR_ID       0x19D2

#define DELL_VENDOR_ID      0x413C

#define REALTEK_VENDOR_ID   0x0bda

 

 

/* LG Electronics VL600 wants additional headers on every frame */

{

    USB_DEVICE_AND_INTERFACE_INFO(0x1004, 0x61aa, USB_CLASS_COMM,

           USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE),

    .driver_info = 0,

},

 

/* Logitech Harmony 900 - uses the pseudo-MDLM (BLAN) driver */

{

    USB_DEVICE_AND_INTERFACE_INFO(0x046d, 0xc11f, USB_CLASS_COMM,

           USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE),

    .driver_info      = 0,

},

 

/* Novatel USB551L and MC551 - handled by qmi_wwan */

{

    USB_DEVICE_AND_INTERFACE_INFO(NOVATEL_VENDOR_ID, 0xB001, USB_CLASS_COMM,

           USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE),

    .driver_info = 0,

},

 

/* Novatel E362 - handled by qmi_wwan */

{

    USB_DEVICE_AND_INTERFACE_INFO(NOVATEL_VENDOR_ID, 0x9010, USB_CLASS_COMM,

           USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE),

    .driver_info = 0,

},

 

/* Dell Wireless 5800 (Novatel E362) - handled by qmi_wwan */

{

    USB_DEVICE_AND_INTERFACE_INFO(DELL_VENDOR_ID, 0x8195, USB_CLASS_COMM,

           USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE),

    .driver_info = 0,

},

 

/* Dell Wireless 5800 (Novatel E362) - handled by qmi_wwan */

{

    USB_DEVICE_AND_INTERFACE_INFO(DELL_VENDOR_ID, 0x8196, USB_CLASS_COMM,

           USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE),

    .driver_info = 0,

},

 

/* Dell Wireless 5804 (Novatel E371) - handled by qmi_wwan */

{

    USB_DEVICE_AND_INTERFACE_INFO(DELL_VENDOR_ID, 0x819b, USB_CLASS_COMM,

           USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE),

    .driver_info = 0,

},

 

/* AnyDATA ADU960S - handled by qmi_wwan */

{

    USB_DEVICE_AND_INTERFACE_INFO(0x16d5, 0x650a, USB_CLASS_COMM,

           USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE),

    .driver_info = 0,

},

#if 0

/* Huawei E1820 - handled by qmi_wwan */

{

    USB_DEVICE_INTERFACE_NUMBER(HUAWEI_VENDOR_ID, 0x14ac, 1),

    .driver_info = 0,

},

#endif

 

/* Realtek RTL8152 Based USB 2.0 Ethernet Adapters */

#if defined(CONFIG_USB_RTL8152) || defined(CONFIG_USB_RTL8152_MODULE)

{

    USB_DEVICE_AND_INTERFACE_INFO(REALTEK_VENDOR_ID, 0x8152, USB_CLASS_COMM,

           USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE),

    .driver_info = 0,

},

#endif

 

 

/*

 * WHITELIST!!!

 *

 * CDC Ether uses two interfaces, not necessarily consecutive.

 * We match the main interface, ignoring the optional device

 * class so we could handle devices that aren't exclusively

 * CDC ether.

 *

 * NOTE:  this match must come AFTER entries blacklisting devices

 * because of bugs/quirks in a given product (like Zaurus, above).

 */

{

    /* ZTE (Vodafone) K3805-Z */

    .match_flags    =   USB_DEVICE_ID_MATCH_VENDOR

        | USB_DEVICE_ID_MATCH_PRODUCT

        | USB_DEVICE_ID_MATCH_INT_INFO,

    .idVendor               = ZTE_VENDOR_ID,

    .idProduct    = 0x1003,

    .bInterfaceClass  = USB_CLASS_COMM,

    .bInterfaceSubClass  = USB_CDC_SUBCLASS_ETHERNET,

    .bInterfaceProtocol  = USB_CDC_PROTO_NONE,

    .driver_info = (unsigned long)&wwan_info,

}, {

    /* ZTE (Vodafone) K3806-Z */

    .match_flags    =   USB_DEVICE_ID_MATCH_VENDOR

        | USB_DEVICE_ID_MATCH_PRODUCT

        | USB_DEVICE_ID_MATCH_INT_INFO,

    .idVendor               = ZTE_VENDOR_ID,

    .idProduct    = 0x1015,

    .bInterfaceClass  = USB_CLASS_COMM,

    .bInterfaceSubClass  = USB_CDC_SUBCLASS_ETHERNET,

    .bInterfaceProtocol  = USB_CDC_PROTO_NONE,

    .driver_info = (unsigned long)&wwan_info,

}, {

    /* ZTE (Vodafone) K4510-Z */

    .match_flags    =   USB_DEVICE_ID_MATCH_VENDOR

        | USB_DEVICE_ID_MATCH_PRODUCT

        | USB_DEVICE_ID_MATCH_INT_INFO,

    .idVendor               = ZTE_VENDOR_ID,

    .idProduct    = 0x1173,

    .bInterfaceClass  = USB_CLASS_COMM,

    .bInterfaceSubClass  = USB_CDC_SUBCLASS_ETHERNET,

    .bInterfaceProtocol  = USB_CDC_PROTO_NONE,

    .driver_info = (unsigned long)&wwan_info,

}, {

    /* ZTE (Vodafone) K3770-Z */

    .match_flags    =   USB_DEVICE_ID_MATCH_VENDOR

        | USB_DEVICE_ID_MATCH_PRODUCT

        | USB_DEVICE_ID_MATCH_INT_INFO,

    .idVendor               = ZTE_VENDOR_ID,

    .idProduct    = 0x1177,

    .bInterfaceClass  = USB_CLASS_COMM,

    .bInterfaceSubClass  = USB_CDC_SUBCLASS_ETHERNET,

    .bInterfaceProtocol  = USB_CDC_PROTO_NONE,

    .driver_info = (unsigned long)&wwan_info,

}, {

    /* ZTE (Vodafone) K3772-Z */

    .match_flags    =   USB_DEVICE_ID_MATCH_VENDOR

        | USB_DEVICE_ID_MATCH_PRODUCT

        | USB_DEVICE_ID_MATCH_INT_INFO,

    .idVendor               = ZTE_VENDOR_ID,

    .idProduct    = 0x1181,

    .bInterfaceClass  = USB_CLASS_COMM,

    .bInterfaceSubClass  = USB_CDC_SUBCLASS_ETHERNET,

    .bInterfaceProtocol  = USB_CDC_PROTO_NONE,

    .driver_info = (unsigned long)&wwan_info,

}, {

    USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_ETHERNET,

           USB_CDC_PROTO_NONE),

    .driver_info = (unsigned long) &cdc_info,

}, {

    USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_MDLM,

           USB_CDC_PROTO_NONE),

    .driver_info = (unsigned long)&wwan_info,

 

}, {

    /* Various Huawei modems with a network port like the UMG1831 */

    .match_flags    =   USB_DEVICE_ID_MATCH_VENDOR

        | USB_DEVICE_ID_MATCH_INT_INFO,

    .idVendor               = HUAWEI_VENDOR_ID,

    .bInterfaceClass  = USB_CLASS_COMM,

    .bInterfaceSubClass  = USB_CDC_SUBCLASS_ETHERNET,

    .bInterfaceProtocol  = 255,

    .driver_info = (unsigned long)&wwan_info,

},

    { },       // END

};

MODULE_DEVICE_TABLE(usb, products);

 

 

 

启动DHCP客户端获得IP

 待续......

 

 


你可能感兴趣的:(wifi,4g,HUAWEI,Ralink)