1. 25 9月, 2012 1 次提交
    • M
      wireless: ath9k-htc: fix possible use after free · e962610f
      Ming Lei 提交于
      Inside ath9k_hif_usb_firmware_fail(), the instance of
      'struct struct hif_device_usb' may be freed by
      ath9k_hif_usb_disconnect() after
      
      	complete(&hif_dev->fw_done);
      
      But 'hif_dev' is still accessed after the line code
      above is executed.
      
      This patch fixes the issue by not accessing 'hif_dev'
      after 'complete(&hif_dev->fw_done)' inside
      ath9k_hif_usb_firmware_fail().
      
      Cc: ath9k-devel@lists.ath9k.org
      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: "John W. Linville" <linville@tuxdriver.com>
      Signed-off-by: NMing Lei <ming.lei@canonical.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      e962610f
  2. 08 9月, 2012 1 次提交
    • M
      wireless: ath9k-htc: only load firmware in need · 32e31de5
      Ming Lei 提交于
      It is not necessary to hold the firmware memory during the whole
      driver lifetime, and obviously it does waste memory. Suppose there
      are 4 ath9k-htc usb dongles working, kernel has to consume about
      4*50KBytes RAM to cache firmware for all dongles. After applying the
      patch, kernel only caches one single firmware image in RAM for
      all ath9k-htc devices just during system suspend/resume cycle.
      
      When system is ready for loading firmware, ath9k-htc can request
      the loading from usersapce. During system resume, ath9k-htc still
      can load the firmware which was cached in kernel memory before
      system suspend.
      
      Cc: ath9k-devel@lists.ath9k.org
      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: "John W. Linville" <linville@tuxdriver.com>
      Signed-off-by: NMing Lei <ming.lei@canonical.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      32e31de5
  3. 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
  4. 14 4月, 2012 1 次提交
  5. 07 2月, 2012 1 次提交
  6. 31 1月, 2012 1 次提交
  7. 04 10月, 2011 1 次提交
  8. 19 7月, 2011 2 次提交
  9. 30 6月, 2011 1 次提交
  10. 20 5月, 2011 1 次提交
  11. 15 4月, 2011 1 次提交
    • J
      ath9k: avoid using trinary operator w/ TX_STAT_INC · dfa8fc69
      John W. Linville 提交于
      Otherwise, you get this:
      
        CC [M]  drivers/net/wireless/ath/ath9k/hif_usb.o
      drivers/net/wireless/ath/ath9k/hif_usb.c: In function ‘ath9k_skb_queue_complete’:
      drivers/net/wireless/ath/ath9k/hif_usb.c:230:12: error: expected expression before ‘do’
      make[2]: *** [drivers/net/wireless/ath/ath9k/hif_usb.o] Error 1
      make[1]: *** [drivers/net/wireless/ath/ath9k] Error 2
      make: *** [drivers/net/wireless/ath/] Error 2
      
      The TX_STAT_INC macro should probably be changed to accomodate such
      usage, although using a trinary operator in place of an if-else seems
      questionable to me anyway.
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      Acked-by: NSujith Manoharan <Sujith.Manoharan@Atheros.com>
      dfa8fc69
  12. 14 4月, 2011 8 次提交
  13. 13 4月, 2011 1 次提交
  14. 01 3月, 2011 1 次提交
  15. 24 2月, 2011 2 次提交
  16. 05 1月, 2011 1 次提交
  17. 23 12月, 2010 1 次提交
  18. 14 12月, 2010 1 次提交
  19. 09 12月, 2010 1 次提交
  20. 08 12月, 2010 2 次提交
    • S
      ath9k_htc: Fix panic on FW download failure · caa0a99a
      Sujith Manoharan 提交于
      Use the correct error condition exit in case firmware download
      fails for some reason. Not doing so results in a panic:
      
      usb 1-3: ath9k_htc: Transferred FW: ar9271.fw, size: 51280
      usb 1-3: ath9k_htc: Firmware - ar9271.fw download failed
      usb 1-3: ath9k_htc: Target is unresponsive
      Failed to initialize the device
      INFO: trying to register non-static key.
      the code is fine but needs lockdep annotation.
      turning off the locking correctness validator.
      Pid: 2823, comm: insmod Tainted: G        W   2.6.37-rc4-wl #11
      Call Trace:
      [<ffffffff81090d7e>] __lock_acquire+0xe3e/0x1d00
      [<ffffffff813a9f14>] ? restore_args+0x0/0x30
      [<ffffffff81058af1>] ? vprintk+0x321/0x500
      [<ffffffff81092290>] lock_acquire+0xa0/0x190
      [<ffffffffa02a0eac>] ? usb_kill_anchored_urbs+0x1c/0x80 [usbcore]
      [<ffffffff813a8ea8>] _raw_spin_lock_irq+0x48/0x60
      [<ffffffffa02a0eac>] ? usb_kill_anchored_urbs+0x1c/0x80 [usbcore]
      [<ffffffff813a53fd>] ? printk+0x3c/0x3f
      [<ffffffffa02a0eac>] usb_kill_anchored_urbs+0x1c/0x80 [usbcore]
      [<ffffffffa0055388>] ath9k_hif_usb_dealloc_urbs+0x18/0x40 [ath9k_htc]
      [<ffffffffa00557d7>] ath9k_hif_usb_probe+0x227/0x3d0 [ath9k_htc]
      [<ffffffffa02a56ac>] usb_probe_interface+0x10c/0x210 [usbcore]
      [<ffffffff812ae826>] driver_probe_device+0x96/0x1c0
      [<ffffffff812ae9f3>] __driver_attach+0xa3/0xb0
      [<ffffffff812ae950>] ? __driver_attach+0x0/0xb0
      [<ffffffff812ad6ae>] bus_for_each_dev+0x5e/0x90
      [<ffffffff812ae4c9>] driver_attach+0x19/0x20
      [<ffffffff812ae038>] bus_add_driver+0x168/0x320
      [<ffffffff812aec71>] driver_register+0x71/0x140
      [<ffffffff811fc338>] ? __raw_spin_lock_init+0x38/0x70
      [<ffffffffa02a438c>] usb_register_driver+0xdc/0x190 [usbcore]
      [<ffffffffa0063000>] ? ath9k_htc_init+0x0/0x4f [ath9k_htc]
      [<ffffffffa005599e>] ath9k_hif_usb_init+0x1e/0x20 [ath9k_htc]
      [<ffffffffa006302b>] ath9k_htc_init+0x2b/0x4f [ath9k_htc]
      [<ffffffff8100212f>] do_one_initcall+0x3f/0x180
      [<ffffffff8109ef9b>] sys_init_module+0xbb/0x200
      [<ffffffff8100bf52>] system_call_fastpath+0x16/0x1b
      Signed-off-by: NSujith Manoharan <Sujith.Manoharan@atheros.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      caa0a99a
    • S
      ath9k_htc: Cleanup device identification · 0b5ead91
      Sujith Manoharan 提交于
      ath.ko is a common module shared between ath5k, ar9170usb, ath9k and ath9k_htc.
      Adding driver specific data to the shared structure would impact all the
      drivers. Handling USB device recognition for devices specific to ath9k_htc
      can be handled within the driver itself.
      
      Also, AR7010 refers to the processor used in both AR9280/AR9287 based
      devices. Rename the device enumerations accordingly.
      
      While at it, check properly for the bus type when choosing the EEPROM
      base address for UB95.
      Signed-off-by: NSujith Manoharan <Sujith.Manoharan@atheros.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      0b5ead91
  21. 03 12月, 2010 2 次提交
  22. 25 11月, 2010 2 次提交
  23. 17 11月, 2010 2 次提交
  24. 09 11月, 2010 2 次提交
  25. 28 10月, 2010 1 次提交
  26. 17 9月, 2010 1 次提交