1. 14 9月, 2012 1 次提交
    • B
      net: qmi_wwan: call subdriver with control intf only · 8624dd2a
      Bjørn Mork 提交于
      This fixes a hang on suspend due to calling wdm_suspend on
      the unregistered data interface. The hang should have been
      a NULL pointer reference had it not been for a logic error
      in the cdc_wdm code.
      
        commit 230718bd net: qmi_wwan: bind to both control and data interface
      
      changed qmi_wwan to use cdc_wdm as a subdriver for devices with
      a two-interface QMI/wwan function.  The commit failed to update
      qmi_wwan_suspend and qmi_wwan_resume, which were written to handle
      either a single combined interface function, or no subdriver at all.
      
      The result was that we called into the subdriver both when the
      control interface was suspended and when the data interface was
      suspended.  Calling the subdriver suspend function with an
      unregistered interface is not supported and will make the
      subdriver bug out.
      Signed-off-by: NBjørn Mork <bjorn@mork.no>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      8624dd2a
  2. 11 9月, 2012 1 次提交
  3. 08 9月, 2012 2 次提交
  4. 02 9月, 2012 1 次提交
  5. 01 9月, 2012 1 次提交
  6. 20 8月, 2012 1 次提交
  7. 15 8月, 2012 3 次提交
    • B
      net: qmi_wwan: compress device_id list using macros · 5ea42963
      Bjørn Mork 提交于
      Take advantage of the matching macros to make the device id
      list easier to read and maintain.
      Signed-off-by: NBjørn Mork <bjorn@mork.no>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      5ea42963
    • B
      net: qmi_wwan: add Sierra Wireless devices · 9b469a60
      Bjørn Mork 提交于
      Add 6 new devices and one modified device, based on
      information from laptop vendor Windows drivers.
      
      Sony provides a driver with two new devices using
      a Gobi 2k+ layout (1199:68a5 and 1199:68a9).  The
      Sony driver also adds a non-standard QMI/net
      interface to the already supported 1199:9011
      Gobi device. We do not know whether this is an
      alternate interface number or an additional
      interface which might be present, but that doesn't
      really matter.
      
      Lenovo provides a driver supporting 4 new devices:
       - MC7770 (1199:901b) with standard Gobi 2k+ layout
       - MC7700 (0f3d:68a2) with layout similar to MC7710
       - MC7750 (114f:68a2) with layout similar to MC7710
       - EM7700 (1199:901c) with layout similar to MC7710
      
      Note regaring the three devices similar to MC7710:
      
      The Windows drivers only support interface #8 on these
      devices.  The MC7710 can support QMI/net functions on
      interface #19 and #20 as well, and this driver is
      verified to work on interface #19 (a firmware bug is
      suspected to prevent #20 from working).
      
      We do not enable these additional interfaces until they
      either show up in a Windows driver or are verified to
      work in some other way.  Therefore limiting the new
      devices to interface #8 for now.
      Signed-off-by: NBjørn Mork <bjorn@mork.no>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9b469a60
    • B
      net: qmi_wwan: use fixed interface number matching · 03304bcb
      Bjørn Mork 提交于
      This driver support many composite USB devices where the
      interface class/subclass/protocol provides no information
      about the interface function. Interfaces with different
      functions may all use ff/ff/ff, like this example of
      a device with three serial interfaces and three QMI/wwan
      interfaces:
      
      T:  Bus=02 Lev=01 Prnt=01 Port=03 Cnt=01 Dev#=116 Spd=480  MxCh= 0
      D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
      P:  Vendor=1199 ProdID=68a2 Rev= 0.06
      S:  Manufacturer=Sierra Wireless, Incorporated
      S:  Product=MC7710
      S:  SerialNumber=3581780xxxxxx
      C:* #Ifs= 6 Cfg#= 1 Atr=e0 MxPwr=  0mA
      I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=qcserial
      E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
      I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=qcserial
      E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
      I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qcserial
      E:  Ad=83(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
      E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
      I:* If#= 8 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
      E:  Ad=85(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
      E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
      I:* If#=19 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
      E:  Ad=87(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
      E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
      I:* If#=20 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
      E:  Ad=89(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
      E:  Ad=8a(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
      
      Instead of class/subclass/protocol the vendor use fixed
      interface numbers for each function, and the Windows
      drivers use these numbers to match driver and function.
      
      The driver has had its own interface number whitelisting
      code to simulate this functionality.  Replace this with
      generic interface number matching now that the USB subsystem
      support is there. This
       - removes the need for a driver_info structure per
         interface number,
       - avoids running the probe function for unsupported
         interfaces, and
       - simplifies the code.
      Signed-off-by: NBjørn Mork <bjorn@mork.no>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      03304bcb
  8. 19 7月, 2012 2 次提交
  9. 09 7月, 2012 1 次提交
    • B
      net: qmi_wwan: add ZTE MF60 · 6fecd35d
      Bjørn Mork 提交于
      Adding a device with limited QMI support. It does not support
      normal QMI_WDS commands for connection management. Instead,
      sending a QMI_CTL SET_INSTANCE_ID command is required to
      enable the network interface:
      
        01 0f 00 00 00 00 00 00  20 00 04 00 01 01 00 00
      
      A number of QMI_DMS and QMI_NAS commands are also supported
      for optional device management.
      Signed-off-by: NBjørn Mork <bjorn@mork.no>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      6fecd35d
  10. 29 6月, 2012 1 次提交
    • B
      net: qmi_wwan: fix Oops while disconnecting · d9b87068
      Bjørn Mork 提交于
      usbnet_disconnect() will set intfdata to NULL before calling
      the minidriver unbind function.  The cdc_wdm subdriver cannot
      know that it is disconnecting until the qmi_wwan unbind
      function has called its disconnect function.  This means that
      we must be able to support the cdc_wdm subdriver operating
      normally while usbnet_disconnect() is running, and in
      particular that intfdata may be NULL.
      
      The only place this matters is in qmi_wwan_cdc_wdm_manage_power
      which is called from cdc_wdm.  Simply testing for NULL
      intfdata there is sufficient to allow it to continue working
      at all times.
      
      Fixes this Oops where a cdc-wdm device was closed while the
      USB device was disconnecting, causing wdm_release to call
      qmi_wwan_cdc_wdm_manage_power after intfdata was set to
      NULL by usbnet_disconnect:
      
      [41819.087460] BUG: unable to handle kernel NULL pointer dereference at 00000080
      [41819.087815] IP: [<f8640458>] qmi_wwan_manage_power+0x68/0x90 [qmi_wwan]
      [41819.088028] *pdpt = 000000000314f001 *pde = 0000000000000000
      [41819.088028] Oops: 0002 [#1] SMP
      [41819.088028] Modules linked in: qmi_wwan option usb_wwan usbserial usbnet
      cdc_wdm nls_iso8859_1 nls_cp437 vfat fat usb_storage bnep rfcomm bluetooth
      parport_pc ppdev binfmt_misc iptable_nat nf_nat nf_conntrack_ipv4
      nf_conntrack nf_defrag_ipv4 iptable_mangle iptable_filter ip_tables
      x_tables dm_crypt uvcvideo snd_hda_codec_realtek snd_hda_intel
      videobuf2_core snd_hda_codec joydev videodev videobuf2_vmalloc
      hid_multitouch snd_hwdep arc4 videobuf2_memops snd_pcm snd_seq_midi
      snd_rawmidi snd_seq_midi_event ath9k mac80211 snd_seq ath9k_common ath9k_hw
      ath snd_timer snd_seq_device sparse_keymap dm_multipath scsi_dh coretemp
      mac_hid snd soundcore cfg80211 snd_page_alloc psmouse serio_raw microcode
      lp parport dm_mirror dm_region_hash dm_log usbhid hid i915 drm_kms_helper
      drm r8169 i2c_algo_bit wmi video [last unloaded: qmi_wwan]
      [41819.088028]
      [41819.088028] Pid: 23292, comm: qmicli Not tainted 3.4.0-5-generic #11-Ubuntu GIGABYTE T1005/T1005
      [41819.088028] EIP: 0060:[<f8640458>] EFLAGS: 00010246 CPU: 1
      [41819.088028] EIP is at qmi_wwan_manage_power+0x68/0x90 [qmi_wwan]
      [41819.088028] EAX: 00000000 EBX: 00000000 ECX: 000000c3 EDX: 00000000
      [41819.088028] ESI: c3b27658 EDI: 00000000 EBP: c298bea4 ESP: c298be98
      [41819.088028]  DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
      [41819.088028] CR0: 8005003b CR2: 00000080 CR3: 3605e000 CR4: 000007f0
      [41819.088028] DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000
      [41819.088028] DR6: ffff0ff0 DR7: 00000400
      [41819.088028] Process qmicli (pid: 23292, ti=c298a000 task=f343b280 task.ti=c298a000)
      [41819.088028] Stack:
      [41819.088028]  00000000 c3b27658 e2a80d00 c298beb0 f864051a c3b27600 c298bec0 f9027099
      [41819.088028]  c2fd6000 00000008 c298bef0 c1147f96 00000001 00000000 00000000 f4e54790
      [41819.088028]  ecf43a00 ecf43a00 c2fd6008 c2fd6000 ebbd7600 ffffffb9 c298bf08 c1144474
      [41819.088028] Call Trace:
      [41819.088028]  [<f864051a>] qmi_wwan_cdc_wdm_manage_power+0x1a/0x20 [qmi_wwan]
      [41819.088028]  [<f9027099>] wdm_release+0x69/0x70 [cdc_wdm]
      [41819.088028]  [<c1147f96>] fput+0xe6/0x210
      [41819.088028]  [<c1144474>] filp_close+0x54/0x80
      [41819.088028]  [<c1046a65>] put_files_struct+0x75/0xc0
      [41819.088028]  [<c1046b56>] exit_files+0x46/0x60
      [41819.088028]  [<c1046f81>] do_exit+0x141/0x780
      [41819.088028]  [<c107248f>] ? wake_up_state+0xf/0x20
      [41819.088028]  [<c1053f48>] ? signal_wake_up+0x28/0x40
      [41819.088028]  [<c1054f3b>] ? zap_other_threads+0x6b/0x80
      [41819.088028]  [<c1047864>] do_group_exit+0x34/0xa0
      [41819.088028]  [<c10478e8>] sys_exit_group+0x18/0x20
      [41819.088028]  [<c15bb7df>] sysenter_do_call+0x12/0x28
      [41819.088028] Code: 04 83 e7 01 c1 e7 03 0f b6 42 18 83 e0 f7 09 f8 88 42
      18 8b 43 04 e8 48 9a dd c8 89 f0 8b 5d f4 8b 75 f8 8b 7d fc 89 ec 5d c3 90
      <f0> ff 88 80 00 00 00 0f 94 c0 84 c0 75 b7 31 f6 8b 5d f4 89 f0
      [41819.088028] EIP: [<f8640458>] qmi_wwan_manage_power+0x68/0x90 [qmi_wwan] SS:ESP 0068:c298be98
      [41819.088028] CR2: 0000000000000080
      [41819.149492] ---[ end trace 0944479ff8257f55 ]---
      Reported-by: NMarius Bjørnstad Kotsbak <marius.kotsbak@gmail.com>
      Cc: <stable@vger.kernel.org> # v3.4
      Signed-off-by: NBjørn Mork <bjorn@mork.no>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d9b87068
  11. 27 6月, 2012 1 次提交
  12. 23 6月, 2012 1 次提交
    • B
      net: qmi_wwan: fix Gobi device probing · b9f90eb2
      Bjørn Mork 提交于
      Ignoring interfaces with additional descriptors is not a reliable
      method for locating the correct interface on Gobi devices.  There
      is at least one device where this method fails:
      https://bbs.archlinux.org/viewtopic.php?id=143506
      
      The result is that the AT command port (interface #2) is hidden
      from qcserial, preventing traditional serial modem usage:
      
      [   15.562552] qmi_wwan 4-1.6:1.0: cdc-wdm0: USB WDM device
      [   15.562691] qmi_wwan 4-1.6:1.0: wwan0: register 'qmi_wwan' at usb-0000:00:1d.0-1.6, Qualcomm Gobi wwan/QMI device, 1e:df:3c:3a:4e:3b
      [   15.563383] qmi_wwan: probe of 4-1.6:1.1 failed with error -22
      [   15.564189] qmi_wwan 4-1.6:1.2: cdc-wdm1: USB WDM device
      [   15.564302] qmi_wwan 4-1.6:1.2: wwan1: register 'qmi_wwan' at usb-0000:00:1d.0-1.6, Qualcomm Gobi wwan/QMI device, 1e:df:3c:3a:4e:3b
      [   15.564328] qmi_wwan: probe of 4-1.6:1.3 failed with error -22
      [   15.569376] qcserial 4-1.6:1.1: Qualcomm USB modem converter detected
      [   15.569440] usb 4-1.6: Qualcomm USB modem converter now attached to ttyUSB0
      [   15.570372] qcserial 4-1.6:1.3: Qualcomm USB modem converter detected
      [   15.570430] usb 4-1.6: Qualcomm USB modem converter now attached to ttyUSB1
      
      Use static interface numbers taken from the interface map in
      qcserial for all Gobi devices instead:
      
      	Gobi 1K USB layout:
      	0: serial port (doesn't respond)
      	1: serial port (doesn't respond)
      	2: AT-capable modem port
      	3: QMI/net
      
      	Gobi 2K+ USB layout:
      	0: QMI/net
      	1: DM/DIAG (use libqcdm from ModemManager for communication)
      	2: AT-capable modem port
      	3: NMEA
      
      This should be more reliable over all, and will also prevent the
      noisy "probe failed" messages.  The whitelisting logic is expected
      to be replaced by direct interface number matching in 3.6.
      Reported-by: NHeinrich Siebmanns (Harvey) <H.Siebmanns@t-online.de>
      Cc: <stable@vger.kernel.org> # v3.4: 00001880 USB: qmi_wwan: Make forced int 4 whitelist generic
      Cc: <stable@vger.kernel.org> # v3.4: f7142e6c USB: qmi_wwan: Add ZTE (Vodafone) K3520-Z
      Cc: <stable@vger.kernel.org> # v3.4
      Signed-off-by: NBjørn Mork <bjorn@mork.no>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b9f90eb2
  13. 20 6月, 2012 5 次提交
    • B
      net: qmi_wwan: use module_usb_driver macro · 677a3d60
      Bjørn Mork 提交于
      Signed-off-by: NBjørn Mork <bjorn@mork.no>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      677a3d60
    • B
      net: qmi_wwan: shorten driver description · a40345b5
      Bjørn Mork 提交于
      The description is used in ethtool fixed length fields.  Make
      it shorter to avoid truncation.
      Signed-off-by: NBjørn Mork <bjorn@mork.no>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a40345b5
    • B
      net: qmi_wwan: bind to both control and data interface · 230718bd
      Bjørn Mork 提交于
      Always bind to control interface regardless of whether
      it is a shared interface or not.
      
      A QMI/wwan function is required to provide both a control
      interface (QMI) and a data interface (wwan).  All devices
      supported by this driver do so.  But the vendors may
      choose to use different USB descriptor layouts, and some
      vendors even allow the same device to present different
      layouts.
      
      Most of these devices use a USB descriptor layout with a
      single USB interface for both control and data.  But some
      split control and data into two interfaces, bound together
      by a CDC Union descriptor on the control interface. Before
      the cdc-wdm subdriver support was added, this split was
      used to let cdc-wdm drive the QMI control interface and
      qmi_wwan drive the wwna data interface.
      
      This split driver model has a number of issues:
       - qmi_wwan must match on the data interface descriptor,
         which often are indistiguishable from data interfaces
         belonging to other CDC (like) functions like ACM
       - supporting a single QMI/wwan function requires adding
         the device to two drivers
       - syncronizing the probes among a number of drivers, to
         ensure selecting the correct driver, is difficult unless
         all drivers match on the same interface
      
      This patch resolves these problems by using the same
      probing mechanism as cdc-ether for devices with a two-
      interface USB descriptor layout.  This makes the driver
      behave consistently, supporting both the control and data
      part of the QMI/wwan function, regardless of the USB
      descriptors.
      
      Cc: Thomas Schäfer <tschaefer@t-online.de>
      Signed-off-by: NBjørn Mork <bjorn@mork.no>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      230718bd
    • B
      net: qmi_wwan: rearranging to prepare for code sharing · f47cd136
      Bjørn Mork 提交于
      Most of the subdriver registration code can be reused for devices
      with separate control and data interfaces.  Move the code a bit
      around to prepare for such reuse.
      Signed-off-by: NBjørn Mork <bjorn@mork.no>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f47cd136
    • B
      net: qmi_wwan: define a structure for driver specific state · 853c24f7
      Bjørn Mork 提交于
      usbnet allocates a fixed size array for minidriver specific
      state.  Naming the fields and taking advantage of type checking
      is a bit more failsafe than casting array elements each time
      they are referenced.
      Signed-off-by: NBjørn Mork <bjorn@mork.no>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      853c24f7
  14. 25 5月, 2012 1 次提交
  15. 21 5月, 2012 3 次提交
  16. 20 5月, 2012 1 次提交
  17. 19 5月, 2012 1 次提交
    • S
      USB: Disable hub-initiated LPM for comms devices. · e1f12eb6
      Sarah Sharp 提交于
      Hub-initiated LPM is not good for USB communications devices.  Comms
      devices should be able to tell when their link can go into a lower power
      state, because they know when an incoming transmission is finished.
      Ideally, these devices would slam their links into a lower power state,
      using the device-initiated LPM, after finishing the last packet of their
      data transfer.
      
      If we enable the idle timeouts for the parent hubs to enable
      hub-initiated LPM, we will get a lot of useless LPM packets on the bus
      as the devices reject LPM transitions when they're in the middle of
      receiving data.  Worse, some devices might blindly accept the
      hub-initiated LPM and power down their radios while they're in the
      middle of receiving a transmission.
      
      The Intel Windows folks are disabling hub-initiated LPM for all USB
      communications devices under a xHCI USB 3.0 host.  In order to keep
      the Linux behavior as close as possible to Windows, we need to do the
      same in Linux.
      
      Set the disable_hub_initiated_lpm flag for for all USB communications
      drivers.  I know there aren't currently any USB 3.0 devices that
      implement these class specifications, but we should be ready if they do.
      Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
      Cc: Marcel Holtmann <marcel@holtmann.org>
      Cc: Gustavo Padovan <gustavo@padovan.org>
      Cc: Johan Hedberg <johan.hedberg@gmail.com>
      Cc: Hansjoerg Lipp <hjlipp@web.de>
      Cc: Tilman Schmidt <tilman@imap.cc>
      Cc: Karsten Keil <isdn@linux-pingi.de>
      Cc: Peter Korsgaard <jacmet@sunsite.dk>
      Cc: Jan Dumon <j.dumon@option.com>
      Cc: Petko Manolov <petkan@users.sourceforge.net>
      Cc: Steve Glendinning <steve.glendinning@smsc.com>
      Cc: "John W. Linville" <linville@tuxdriver.com>
      Cc: Kalle Valo <kvalo@qca.qualcomm.com>
      Cc: "Luis R. Rodriguez" <mcgrof@qca.qualcomm.com>
      Cc: Jouni Malinen <jouni@qca.qualcomm.com>
      Cc: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
      Cc: Senthil Balasubramanian <senthilb@qca.qualcomm.com>
      Cc: Christian Lamparter <chunkeey@googlemail.com>
      Cc: Brett Rudley <brudley@broadcom.com>
      Cc: Roland Vossen <rvossen@broadcom.com>
      Cc: Arend van Spriel <arend@broadcom.com>
      Cc: "Franky (Zhenhui) Lin" <frankyl@broadcom.com>
      Cc: Kan Yan <kanyan@broadcom.com>
      Cc: Dan Williams <dcbw@redhat.com>
      Cc: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
      Cc: Ivo van Doorn <IvDoorn@gmail.com>
      Cc: Gertjan van Wingerde <gwingerde@gmail.com>
      Cc: Helmut Schaa <helmut.schaa@googlemail.com>
      Cc: Herton Ronaldo Krzesinski <herton@canonical.com>
      Cc: Hin-Tak Leung <htl10@users.sourceforge.net>
      Cc: Larry Finger <Larry.Finger@lwfinger.net>
      Cc: Chaoming Li <chaoming_li@realsil.com.cn>
      Cc: Daniel Drake <dsd@gentoo.org>
      Cc: Ulrich Kunitz <kune@deine-taler.de>
      Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
      e1f12eb6
  18. 20 4月, 2012 1 次提交
    • B
      net: qmi_wwan: support Sierra Wireless MC77xx devices in QMI mode · 3bc17d10
      Bjørn Mork 提交于
      The MC77xx devices can operate in two modes: "Direct IP" or "QMI",
      switchable using a password protected AT command.  Both product ID
      and USB interface configuration will change when switched.
      
      The "sierra_net" driver supports the "Direct IP" mode.  This driver
      supports the "QMI" mode.
      
      There are also multiple possible USB interface configurations in each
      mode, some providing more than one wwan interface.  Like many other
      devices made for Windows, different interface types are identified
      using a static interface number.  We define a Sierra specific
      interface whitelist to support this.
      Signed-off-by: NBjørn Mork <bjorn@mork.no>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      3bc17d10
  19. 26 3月, 2012 2 次提交
  20. 17 3月, 2012 1 次提交
  21. 10 3月, 2012 3 次提交
    • B
      net: qmi_wwan: add Gobi and Pantech UML290 device IDs · b086cf04
      Bjørn Mork 提交于
      Adding the Pantech UML290 and all non-QDL Gobi device IDs from the
      qcserial driver now that we have support for shared net/QMI USB
      interfaces.  Most of these are not yet tested with this driver, but
      should be mostly identical to tested devices, except for device IDs.
      
      Gobi devices provide several different interfaces (serial/net/other)
      using the exact same class, subclass and protocol values.  This driver
      will only support the net/QMI function while there are other drivers
      supporting other device functions. The net/QMI interface number may
      also differ from device to device.  It has been noted that all the
      other interfaces have additional functional descriptors, so we use that
      to detect the interface supported by this driver.
      Signed-off-by: NBjørn Mork <bjorn@mork.no>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b086cf04
    • B
      net: qmi_wwan: support devices having a shared QMI/wwan interface · c3ecb08a
      Bjørn Mork 提交于
      Use the new cdc-wdm subdriver interface to create a device management
      device even for USB devices having a single combined QMI/wwan USB
      interface with three endpoints (int, bulk in, bulk out) instead of
      separate data and control interfaces.
      
      Some Huawei devices can be switched to a single interface mode for
      use with other operating systems than Linux.  This adds support
      for these devices when they run in such non-Linux modes.
      Signed-off-by: NBjørn Mork <bjorn@mork.no>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      c3ecb08a
    • B
      net: usb: qmi_wwan: New driver for Huawei QMI based WWAN devices · 423ce8ca
      Bjørn Mork 提交于
      Some WWAN LTE/3G devices based on chipsets from Qualcomm provide
      near standard CDC ECM interfaces in addition to the usual serial
      interfaces.   The Huawei E392/E398 are examples of such devices.
      
      These typically cannot be fully configured using AT commands
      over a serial interface.  It is necessary to speak the proprietary
      Qualcomm MSM Interface (QMI) protocol to the device to enable the
      ethernet proxy functionality.
      
      The devices embed the QMI protocol in CDC on the control interface,
      using standard CDC commands and notifications. The do not otherwise
      use CDC commands for the ethernet function.  This driver does
      therefore not need access to any other aspects of the control
      interface than the descriptors attached to it.
      
      Another driver, cdc-wdm, will provide userspace access to the
      QMI protocol independently of this driver.  To facilitate this,
      this driver avoids binding to the control interface, and uses
      only the associated data interface after parsing the common CDC
      functional descriptors on the control interface.
      
      You will want both the cdc-wdm and option drivers as companions to
      this driver, to have full access to all interfaces and protocols
      exported by the device.
      Signed-off-by: NBjørn Mork <bjorn@mork.no>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      423ce8ca
  22. 26 1月, 2012 1 次提交
    • B
      net: usb: qmi_wwan: New driver for Huawei QMI based WWAN devices · 9b28ecd6
      Bjørn Mork 提交于
      Some WWAN LTE/3G devices based on chipsets from Qualcomm provide
      near standard CDC ECM interfaces in addition to the usual serial
      interfaces.   The Huawei E392/E398 are examples of such devices.
      
      These typically cannot be fully configured using AT commands
      over a serial interface.  It is necessary to speak the proprietary
      Qualcomm MSM Interface (QMI) protocol to the device to enable the
      ethernet proxy functionality.
      
      The devices embed the QMI protocol in CDC on the control interface,
      using standard CDC commands and notifications. The do not otherwise
      use CDC commands for the ethernet function.  This driver does
      therefore not need access to any other aspects of the control
      interface than the descriptors attached to it.
      
      Another driver, cdc-wdm, will provide userspace access to the
      QMI protocol independently of this driver.  To facilitate this,
      this driver avoids binding to the control interface, and uses
      only the associated data interface after parsing the common CDC
      functional descriptors on the control interface.
      
      You will want both the cdc-wdm and option drivers as companions to
      this driver, to have full access to all interfaces and protocols
      exported by the device.
      Signed-off-by: NBjørn Mork <bjorn@mork.no>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9b28ecd6