1. 03 Dec, 2013 5 commits
  2. 02 Dec, 2013 7 commits
    • Thomas Pugliese's avatar
      usb: wusbcore: fix deadlock in wusbhc_gtk_rekey · 471e42ad
      Thomas Pugliese authored
      When multiple wireless USB devices are connected and one of the devices
      disconnects, the host will distribute a new group key to the remaining
      devicese using wusbhc_gtk_rekey.  wusbhc_gtk_rekey takes the
      wusbhc->mutex and holds it while it submits a URB to set the new key.
      This causes a deadlock in wa_urb_enqueue when it calls a device lookup
      helper function that takes the same lock.
      
      This patch changes wusbhc_gtk_rekey to submit a work item to set the GTK
      so that the URB is submitted without holding wusbhc->mutex.
      Signed-off-by: default avatarThomas Pugliese <thomas.pugliese@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      471e42ad
    • Thomas Pugliese's avatar
      usb: wusbcore: do device lookup while holding the hc mutex · 6161ae5f
      Thomas Pugliese authored
      This patch modifies the device notification handler to not look up the
      wusb_dev object before it calls the lower-level handler routines since
      the wusbhc mutex is not held when calling those routines and the device
      could go away in the meantime.  Instead, let the individual notification
      handlers get the device ptr if they need to after they have taken the
      mutex.
      Signed-off-by: default avatarThomas Pugliese <thomas.pugliese@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      6161ae5f
    • Thomas Pugliese's avatar
      usb: wusbcore: send keepalives to unauthenticated devices · f4042c06
      Thomas Pugliese authored
      This patch modifies the WUSB device disconnect timer code to send
      keepalives to all connected devices even if they are not authenticated.
      This fixes a problem where unauthenticated devices that lose their
      connection before they are authenticated will stay in the device tree
      forever.  More importantly, devices in this situation will never
      relinquish their port on the root hub so eventually all root ports will
      be taken up and no other devices can connect.
      
      A comment in the existing code states that there are some devices that
      may not respond to keepalives if they have not been authenticated.  That
      comment is about 5 years old and I don't know of any WUSB devices that
      act that way.  Either way, any buggy devices that may still be around
      will continue to work as long as they can transition to the
      authenticated state within the WUSB LOA timeout of 4s, which is not
      unreasonable to expect.
      Signed-off-by: default avatarThomas Pugliese <thomas.pugliese@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f4042c06
    • Fangxiaozhi (Franko)'s avatar
      USB: option: support new huawei devices · 2bf308d7
      Fangxiaozhi (Franko) authored
      Add new supporting declarations to option.c, to support Huawei new
      devices with new bInterfaceProtocol value.
      Signed-off-by: default avatarfangxiaozhi <huananhu@huawei.com>
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      2bf308d7
    • Gustavo Zacarias's avatar
      USB: serial: option: blacklist interface 1 for Huawei E173s-6 · 8f173e22
      Gustavo Zacarias authored
      Interface 1 on this device isn't for option to bind to otherwise an oops
      on usb_wwan with log flooding will happen when accessing the port:
      
      tty_release: ttyUSB1: read/write wait queue active!
      
      It doesn't seem to respond to QMI if it's added to qmi_wwan so don't add
      it there - it's likely used by the card reader.
      Signed-off-by: default avatarGustavo Zacarias <gustavo@zacarias.com.ar>
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      8f173e22
    • Greg Kroah-Hartman's avatar
      Merge tag 'for-usb-linus-2013-12-02' of... · d63e502d
      Greg Kroah-Hartman authored
      Merge tag 'for-usb-linus-2013-12-02' of git://git.kernel.org/pub/scm/linux/kernel/git/sarah/xhci into usb-linus
      
      Sarah writes:
      
      xhci: Regression fix for 3.13.
      
      Hi Greg,
      
      Here's one bug fix for 3.13.
      
      usb-net added support for bulk scatter-gather in 3.12, and it triggered a
      bug in the xHCI driver.  This bug causes xHCI hosts to send an unexpected
      short transfer, which will cause the USB ethernet device to stop sending
      packets.
      
      The patch is marked for the 3.12 stable kernel.  It's a long standing bug,
      but the usb-net drivers are the first to trigger it.  The only other
      driver that does bulk scatter-gather (usb-storage) will not trigger this
      bug.
      
      I'm not sure what the effect of the no-op TRBs will be on various xHCI
      host controllers, so I would only like to be conservative and only queue
      it for 3.13 and 3.12 stable.
      
      Please queue this for 3.13.
      
      Sarah Sharp
      d63e502d
    • David Laight's avatar
      usb: xhci: Link TRB must not occur within a USB payload burst · 35773dac
      David Laight authored
      Section 4.11.7.1 of rev 1.0 of the xhci specification states that a link TRB
      can only occur at a boundary between underlying USB frames (512 bytes for
      high speed devices).
      
      If this isn't done the USB frames aren't formatted correctly and, for example,
      the USB3 ethernet ax88179_178a card will stop sending (while still receiving)
      when running a netperf tcp transmit test with (say) and 8k buffer.
      
      This should be a candidate for stable, the ax88179_178a driver defaults to
      gso and tso enabled so it passes a lot of fragmented skb to the USB stack.
      
      Notes from Sarah:
      
      Discussion: http://marc.info/?l=linux-usb&m=138384509604981&w=2
      
      This patch fixes a long-standing xHCI driver bug that was revealed by a
      change in 3.12 in the usb-net driver.  Commit
      638c5115 "USBNET: support DMA SG" added
      support to use bulk endpoint scatter-gather (urb->sg).  Only the USB
      ethernet drivers trigger this bug, because the mass storage driver sends
      sg list entries in page-sized chunks.
      
      This patch only fixes the issue for bulk endpoint scatter-gather.  The
      problem will still occur for periodic endpoints, because hosts will
      interpret no-op transfers as a request to skip a service interval, which
      is not what we want.
      
      Luckily, the USB core isn't set up for scatter-gather on isochronous
      endpoints, and no USB drivers use scatter-gather for interrupt
      endpoints.  Document this known limitation so that developers won't try
      to use urb->sg for interrupt endpoints until this issue is fixed.  The
      more comprehensive fix would be to allow link TRBs in the middle of the
      endpoint ring and revert this patch, but that fix would touch too much
      code to be allowed in for stable.
      
      This patch should be backported to kernels as old as 3.12, that contain
      the commit 638c5115 "USBNET: support DMA
      SG".  Without this patch, the USB network device gets wedged, and stops
      sending packets.  Mark Lord confirms this patch fixes the regression:
      
      http://marc.info/?l=linux-netdev&m=138487107625966&w=2Signed-off-by: default avatarDavid Laight <david.laight@aculab.com>
      Signed-off-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
      Tested-by: default avatarMark Lord <mlord@pobox.com>
      Cc: stable@vger.kernel.org
      35773dac
  3. 27 Nov, 2013 1 commit
  4. 25 Nov, 2013 25 commits
  5. 22 Nov, 2013 2 commits