1. 30 3月, 2015 2 次提交
  2. 01 3月, 2015 1 次提交
  3. 29 10月, 2014 1 次提交
  4. 03 8月, 2014 1 次提交
  5. 30 7月, 2014 2 次提交
  6. 28 3月, 2014 1 次提交
    • O
      usbnet: include wait queue head in device structure · 14a0d635
      Oliver Neukum 提交于
      This fixes a race which happens by freeing an object on the stack.
      Quoting Julius:
      > The issue is
      > that it calls usbnet_terminate_urbs() before that, which temporarily
      > installs a waitqueue in dev->wait in order to be able to wait on the
      > tasklet to run and finish up some queues. The waiting itself looks
      > okay, but the access to 'dev->wait' is totally unprotected and can
      > race arbitrarily. I think in this case usbnet_bh() managed to succeed
      > it's dev->wait check just before usbnet_terminate_urbs() sets it back
      > to NULL. The latter then finishes and the waitqueue_t structure on its
      > stack gets overwritten by other functions halfway through the
      > wake_up() call in usbnet_bh().
      
      The fix is to just not allocate the data structure on the stack.
      As dev->wait is abused as a flag it also takes a runtime PM change
      to fix this bug.
      Signed-off-by: NOliver Neukum <oneukum@suse.de>
      Reported-by: NGrant Grundler <grundler@google.com>
      Tested-by: NGrant Grundler <grundler@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      14a0d635
  7. 29 9月, 2013 1 次提交
  8. 13 8月, 2013 1 次提交
  9. 28 7月, 2013 1 次提交
    • M
      USBNET: centralize computing of max rx/tx qlen · a88c32ae
      Ming Lei 提交于
      This patch centralizes computing of max rx/tx qlen, because:
      
      - RX_QLEN()/TX_QLEN() is called in hot path
      - computing depends on device's usb speed, now we have ls/fs, hs, ss,
      so more checks need to be involved
      - in fact, max rx/tx qlen should not only depend on device USB
      speed, but also depend on ethernet link speed, so we need to
      consider that in future.
      - if SG support is done, max tx qlen may need change too
      
      Generally, hard_mtu and rx_urb_size are changed in bind(), reset()
      and link_reset() callback, and change mtu network operation, this
      patches introduces the API of usbnet_update_max_qlen(), and calls
      it in above path.
      Signed-off-by: NMing Lei <ming.lei@canonical.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a88c32ae
  10. 09 5月, 2013 1 次提交
    • D
      usbnet: allow status interrupt URB to always be active · 6eecdc5f
      Dan Williams 提交于
      Some drivers (sierra_net) need the status interrupt URB
      active even when the device is closed, because they receive
      custom indications from firmware.  Add functions to refcount
      the status interrupt URB submit/kill operation so that
      sub-drivers and the generic driver don't fight over whether
      the status interrupt URB is active or not.
      
      A sub-driver can call usbnet_status_start() at any time, but
      the URB is only submitted the first time the function is
      called.  Likewise, when the sub-driver is done with the URB,
      it calls usbnet_status_stop() but the URB is only killed when
      all users have stopped it.  The URB is still killed and
      re-submitted for suspend/resume, as before, with the same
      refcount it had at suspend.
      Signed-off-by: NDan Williams <dcbw@redhat.com>
      Acked-by: NOliver Neukum <oliver@neukum.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      6eecdc5f
  11. 12 4月, 2013 2 次提交
    • M
      usbnet: handle link change · 4b49f58f
      Ming Lei 提交于
      The link change is detected via the interrupt pipe, and bulk
      pipes are responsible for transfering packets, so it is reasonable
      to stop bulk transfer after link is reported as off.
      
      Two adavantages may be obtained with stopping bulk transfer
      after link becomes off:
      
      - USB bus bandwidth is saved(USB bus is shared bus except for
      USB3.0), for example, lots of 'IN' token packets and 'NYET'
      handshake packets is transfered on 2.0 bus.
      
      - probabaly power might be saved for usb host controller since
      cancelling bulk transfer may disable the asynchronous schedule of
      host controller.
      
      With this patch, when link becomes off, about ~10% performance
      boost can be found on bulk transfer of anther usb device which
      is attached to same bus with the usbnet device, see below
      test on next-20130410:
      
      - read from usb mass storage(Sandisk Extreme USB 3.0) on pandaboard
      with below command after unplugging ethernet cable:
      
      	dd if=/dev/sda iflag=direct of=/dev/null bs=1M count=800
      
      - without the patch
      1, 838860800 bytes (839 MB) copied, 36.2216 s, 23.2 MB/s
      2, 838860800 bytes (839 MB) copied, 35.8368 s, 23.4 MB/s
      3, 838860800 bytes (839 MB) copied, 35.823 s, 23.4 MB/s
      4, 838860800 bytes (839 MB) copied, 35.937 s, 23.3 MB/s
      5, 838860800 bytes (839 MB) copied, 35.7365 s, 23.5 MB/s
      average: 23.6MB/s
      
      - with the patch
      1, 838860800 bytes (839 MB) copied, 32.3817 s, 25.9 MB/s
      2, 838860800 bytes (839 MB) copied, 31.7389 s, 26.4 MB/s
      3, 838860800 bytes (839 MB) copied, 32.438 s, 25.9 MB/s
      4, 838860800 bytes (839 MB) copied, 32.5492 s, 25.8 MB/s
      5, 838860800 bytes (839 MB) copied, 31.6178 s, 26.5 MB/s
      average: 26.1MB/s
      Signed-off-by: NMing Lei <ming.lei@canonical.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      4b49f58f
    • M
      usbnet: introduce usbnet_link_change API · ac64995d
      Ming Lei 提交于
      This patch introduces the API of usbnet_link_change, so that
      usbnet can handle link change centrally, which may help to
      implement killing traffic URBs for saving USB bus bandwidth
      and host controller power.
      Signed-off-by: NMing Lei <ming.lei@canonical.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      ac64995d
  12. 08 2月, 2013 1 次提交
  13. 31 1月, 2013 1 次提交
  14. 22 1月, 2013 1 次提交
  15. 20 12月, 2012 2 次提交
  16. 07 11月, 2012 1 次提交
  17. 26 10月, 2012 1 次提交
  18. 12 10月, 2012 1 次提交
  19. 13 6月, 2012 1 次提交
  20. 16 5月, 2012 1 次提交
    • M
      usbnet: fix skb traversing races during unlink(v2) · 5b6e9bcd
      Ming Lei 提交于
      Commit 4231d47e(net/usbnet: avoid
      recursive locking in usbnet_stop()) fixes the recursive locking
      problem by releasing the skb queue lock before unlink, but may
      cause skb traversing races:
      	- after URB is unlinked and the queue lock is released,
      	the refered skb and skb->next may be moved to done queue,
      	even be released
      	- in skb_queue_walk_safe, the next skb is still obtained
      	by next pointer of the last skb
      	- so maybe trigger oops or other problems
      
      This patch extends the usage of entry->state to describe 'start_unlink'
      state, so always holding the queue(rx/tx) lock to change the state if
      the referd skb is in rx or tx queue because we need to know if the
      refered urb has been started unlinking in unlink_urbs.
      
      The other part of this patch is based on Huajun's patch:
      always traverse from head of the tx/rx queue to get skb which is
      to be unlinked but not been started unlinking.
      Signed-off-by: NHuajun Li <huajun.li.lee@gmail.com>
      Signed-off-by: NMing Lei <tom.leiming@gmail.com>
      Cc: Oliver Neukum <oneukum@suse.de>
      Cc: stable@kernel.org
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      5b6e9bcd
  21. 29 4月, 2011 1 次提交
  22. 14 4月, 2011 1 次提交
  23. 02 4月, 2011 1 次提交
    • A
      usbnet: use eth%d name for known ethernet devices · c261344d
      Arnd Bergmann 提交于
      The documentation for the USB ethernet devices suggests that
      only some devices are supposed to use usb0 as the network interface
      name instead of eth0. The logic used there, and documented in
      Kconfig for CDC is that eth0 will be used when the mac address
      is a globally assigned one, but usb0 is used for the locally
      managed range that is typically used on point-to-point links.
      
      Unfortunately, this has caused a lot of pain on the smsc95xx
      device that is used on the popular pandaboard without an
      EEPROM to store the MAC address, which causes the driver to
      call random_ether_address().
      
      Obviously, there should be a proper MAC addressed assigned to
      the device, and discussions are ongoing about how to solve
      this, but this patch at least makes sure that the default
      interface naming gets a little saner and matches what the
      user can expect based on the documentation, including for
      new devices.
      
      The approach taken here is to flag whether a device might be a
      point-to-point link with the new FLAG_POINTTOPOINT setting in
      the usbnet driver_info. A driver can set both FLAG_POINTTOPOINT
      and FLAG_ETHER if it is not sure (e.g. cdc_ether), or just one
      of the two.  The usbnet framework only looks at the MAC address
      for device naming if both flags are set, otherwise it trusts the
      flag.
      Signed-off-by: NArnd Bergmann <arnd.bergmann@linaro.org>
      Tested-by: NAndy Green <andy.green@linaro.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c261344d
  24. 30 3月, 2011 1 次提交
    • A
      net/usb: Ethernet quirks for the LG-VL600 4G modem · 7a635ea9
      Andrzej Zaborowski 提交于
      This adds a driver for the CDC Ethernet part of this modem.  The
      device's ID is blacklisted in cdc_ether.c and is white-listed in
      this new driver because of the quirks needed to make it useful.
      The modem's firmware exposes a CDC ACM port for modem control and a
      CDC Ethernet port for network data.  The descriptors look fine but
      both ports actually are some sort of multiplexers requiring non-
      standard headers added/removed from every packet or they get
      ignored.  All information is based on a usb traffic log from a
      Windows machine.
      
      On the Verizon 4G network I've seen speeds up to 1.1MB/s so far with
      this driver, a speed-o-meter site reports 16.2Mbps/10.5Mbps.
      Userspace scripts are required to talk to the CDC ACM port.
      Signed-off-by: NAndrzej Zaborowski <balrogg@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7a635ea9
  25. 07 12月, 2010 1 次提交
  26. 21 5月, 2010 1 次提交
  27. 18 2月, 2010 1 次提交
  28. 04 12月, 2009 1 次提交
  29. 11 11月, 2009 1 次提交
  30. 05 10月, 2009 1 次提交
  31. 23 9月, 2009 1 次提交
    • S
      smsc95xx: fix transmission where ZLP is expected · ec475623
      Steve Glendinning 提交于
      Usbnet framework assumes USB hardware doesn't handle zero length
      packets, but SMSC LAN95xx requires these to be sent for correct
      operation.
      
      This patch fixes an easily reproducible tx lockup when sending a frame
      that results in exactly 512 bytes in a USB transmission (e.g. a UDP
      frame with 458 data bytes, due to IP headers and our USB headers).  It
      adds an extra flag to usbnet for the hardware driver to indicate that
      it can handle and requires the zero length packets.
      
      This patch should not affect other usbnet users, please also consider
      for -stable.
      Signed-off-by: NSteve Glendinning <steve.glendinning@smsc.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      ec475623
  32. 01 9月, 2009 1 次提交
  33. 14 8月, 2009 1 次提交
  34. 05 8月, 2009 2 次提交
  35. 11 7月, 2009 1 次提交
反馈
建议
客服 返回
顶部