1. 08 Nov, 2010 11 commits
    • Rajkumar Manoharan's avatar
      ath9k_htc: Fix probe failure if CONFIG_USB_DEBUG enabled · 490b3f4e
      Rajkumar Manoharan authored
      Since the endpoint descriptors (EP3 & EP4) were changed from Interrupt
      to Bulk type by firmware, the urb submission done on Bulk pipes.
      And the recent commit "check the endpoint type against the pipe type"
      added aditional error checking against pipe types under CONFIG_USB_DEBUG.
      
      So bmAttribute has to be updated for both EP3 & EP4 before submitting
      urbs on that pipe. This patch resolves the following failure.
      
      [ 2215.710936] usb 1-1: usb_probe_device
      [ 2215.710945] usb 1-1: configuration #1 chosen from 1 choice
      [ 2215.711152] usb 1-1: adding 1-1:1.0 (config #1, interface 0)
      [ 2215.711252] ath9k_hif_usb 1-1:1.0: usb_probe_interface
      [ 2215.711255] ath9k_hif_usb 1-1:1.0: usb_probe_interface - got id
      [ 2215.712780] usb 1-1: BOGUS urb xfer, pipe 3 != type 1
      [ 2215.713782] usb 1-1: ath9k_htc: Unable to allocate URBs
      [ 2215.713801] ath9k_hif_usb: probe of 1-1:1.0 failed with error -22
      Reported-by: default avatarMing Lei <tom.leiming@gmail.com>
      Signed-off-by: default avatarRajkumar Manoharan <rmanoharan@atheros.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      490b3f4e
    • Haitao Zhang's avatar
      ath9k_htc: Add support for device ID 3346 · ac618d70
      Haitao Zhang authored
      This patch adds support for USB dongle with device ID 3346 from IMC Networks.
      Signed-off-by: default avatarHaitao Zhang <minipanda@linuxrobot.org>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      ac618d70
    • Vasanthakumar Thiagarajan's avatar
      ath9k_hw: Fix AR9280 surprise removal during frequent idle on/off · f119da30
      Vasanthakumar Thiagarajan authored
      Bit 22 of AR_WA should be set to fix the situation where chip reset
      is asynchronous to clock of analog shift registers, such that when
      reset is released, it could mess up the values of analog shift registers
      and cause some hw issue on AR9280.
      
      This bit is write only, but the driver does a read-modify-write
      on AR_WA without setting bit 22 in ar9002_hw_configpcipowersave()
      during radio disable. This causes surprise removal of hw. It can
      never recover from this state and the hw will become usable only
      after a power on/off cycle, and sometimes only during a cold reboot.
      
      This issue can be triggered by doing frequent roaming with the
      simple/test-roam script available from the wifi-test project [1]
      when roaming between APs quickly. When roaming there is a is a high
      possibility that the device being put into idle (radio disable) state
      by mac80211 during AUTH->ASSOC. A device hardware reset would fail
      and the kernel would output:
      
      [40251.363799] ath: AWAKE -> FULL-SLEEP
      [40251.363815] ieee80211 phy17: device no longer idle - working
      [40251.363817] ath: Marking phy17 as not-idle
      [40251.363819] ath: FULL-SLEEP -> AWAKE
      [40251.415978] pciehp 0000:00:1c.3:pcie04: Card not present on Slot(3)
      [40251.419896] ath: ah->misc_mode 0x4
      [40251.428138] pciehp 0000:00:1c.3:pcie04: Card present on Slot(3)
      [40251.532247] ath: timeout (100000 us) on reg 0x9860: 0xffffffff & 0x00000001 != 0x00000000
      [40251.532250] ath: Unable to reset channel (2462 MHz), reset status -5
      [40251.532422] ath: Set channel: 5745 MHz
      [40251.540639] ath: Failed to stop TX DMA in 100 msec after killing last frame
      [40251.548826] ath: Failed to stop TX DMA in 100 msec after killing last frame
      [40251.557023] ath: Failed to stop TX DMA in 100 msec after killing last frame
      [40251.565211] ath: Failed to stop TX DMA in 100 msec after killing last frame
      [40251.573415] ath: Failed to stop TX DMA in 100 msec after killing last frame
      [40251.581603] ath: Failed to stop TX DMA in 100 msec after killing last frame
      [40251.581606] ath: Failed to stop TX DMA. Resetting hardware!
      [40251.592679] ath: DMA failed to stop in 10 ms AR_CR=0xffffffff AR_DIAG_SW=0xffffffff
      [40251.703330] ath: timeout (100000 us) on reg 0x7000: 0xffffffff & 0x00000003 != 0x00000000
      [40251.703333] ath: RTC stuck in MAC reset
      [40251.703334] ath: Chip reset failed
      [40251.703335] ath: Unable to reset hardware; reset status -22
      
      This is currently only reproducible with some HB92 (Half Mini-PCIE)
      cards but the fix applies to all AR9280 cards. This patch fixes this
      issue by setting bit 22 during radio disable.
      
      This patch has fixes for all kernels that has ath9k.
      
      [1] http://wireless.kernel.org/en/developers/Testing/wifi-test
      
      Cc: kyungwan.nam@atheros.com
      Cc: amod.bodas@atheros.com
      Cc: david.quan@atheros.com
      Cc: stable@kernel.org
      Signed-off-by: default avatarVasanthakumar Thiagarajan <vasanth@atheros.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      f119da30
    • Daniel Drake's avatar
      libertas: terminate scan when stopping interface · 2e30168b
      Daniel Drake authored
      There are currently no provisions in place to ensure that the scanning
      task has been stopped when the interface is stopped or removed.
      
      This can result in a WARNING at net/wireless/core.c:643 and other badness
      when you remove the module while a scan is happening.
      
      Terminate the scanning task during interface stop.
      Signed-off-by: default avatarDaniel Drake <dsd@laptop.org>
      Acked-by: default avatarDan Williams <dcbw@redhat.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      2e30168b
    • Brian Cavagnolo's avatar
      mac80211: unset SDATA_STATE_OFFCHANNEL when cancelling a scan · 352ffad6
      Brian Cavagnolo authored
      For client STA interfaces, ieee80211_do_stop unsets the relevant
      interface's SDATA_STATE_RUNNING state bit prior to cancelling an
      interrupted scan.  When ieee80211_offchannel_return is invoked as
      part of cancelling the scan, it doesn't bother unsetting the
      SDATA_STATE_OFFCHANNEL bit because it sees that the interface is
      down.  Normally this doesn't matter because when the client STA
      interface is brought back up, it will probably issue a scan.  But
      in some cases (e.g., the user changes the interface type while it
      is down), the SDATA_STATE_OFFCHANNEL bit will remain set.  This
      prevents the interface queues from being started.  So we
      cancel the scan before unsetting the SDATA_STATE_RUNNING bit.
      Signed-off-by: default avatarBrian Cavagnolo <brian@cozybit.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      352ffad6
    • Felix Fietkau's avatar
      ath9k: check old power mode before clearing cycle counters · fbb078fc
      Felix Fietkau authored
      ath9k_ps_wakeup() clears the cycle counters after waking up the
      hardware using ath9k_hw_setpower, however if power save is disabled,
      then the counters will contain useful data, which then gets discarded.
      Fix this by checking the old power mode before discarding any data.
      Signed-off-by: default avatarFelix Fietkau <nbd@openwrt.org>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      fbb078fc
    • Felix Fietkau's avatar
      cfg80211: fix a crash in dev lookup on dump commands · 3cc25e51
      Felix Fietkau authored
      IS_ERR and PTR_ERR were called with the wrong pointer, leading to a
      crash when cfg80211_get_dev_from_ifindex fails.
      Signed-off-by: default avatarFelix Fietkau <nbd@openwrt.org>
      Acked-by: default avatarJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      3cc25e51
    • Christian Lamparter's avatar
      carl9170: usbid table updates · 8df86db9
      Christian Lamparter authored
      This patch includes the following updates:
       * add D-Link DWA-130 Rev D
       * Netgear has three WNDA3100 versions.
         the original WNDA3100 is now called WNDA3100v1.
      Signed-off-by: default avatarChristian Lamparter <chunkeey@googlemail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      8df86db9
    • Vivek Natarajan's avatar
      ath9k: Fix a DMA latency issue for Intel Pinetrail platforms. · 10598c12
      Vivek Natarajan authored
      Throughput was severely affected in Intel Pinetrail platforms
      because of a DMA problem in C3 state. This patch fixes this
      issue.
      Signed-off-by: default avatarVivek Natarajan <vnatarajan@atheros.com>
      CC: Johannes Berg <johannes@sipsolutions.net>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      10598c12
    • Rajkumar Manoharan's avatar
      ath9k: Avoid HW opmode overridden on monitor mode changes · 5f841b41
      Rajkumar Manoharan authored
      The HW opmode is blindly set to monitor type on monitor mode
      change notification. This overrides the opmode when one of the
      interfaces is still running as non-monitor iftype. So the monitoring
      information needs to be maintained seperately.
      Signed-off-by: default avatarRajkumar Manoharan <rmanoharan@atheros.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      5f841b41
    • Linus Torvalds's avatar
      libipw: fix proc entry removal · 269e2d77
      Linus Torvalds authored
      This bug seems to be due to commit 27ae60f8 ("ipw2x00: replace
      "ieee80211" with "libipw" where appropriate"), where Pavel did this:
      
      -       libipw_proc = proc_mkdir(DRV_NAME, init_net.proc_net);
      +       libipw_proc = proc_mkdir("ieee80211", init_net.proc_net);
      
      but then the cleanup was kept as
      
              remove_proc_entry(DRV_NAME, init_net.proc_net);
      
      in both places (both in the failure case and in the unload case). The
      error string is also total crap, and says
      
           "Unable to create " DRV_NAME " proc directory\n");
      
      Even though it doesn't actually create a proc directory named DRV_NAME at all.
      
      So that patch looks like total and utter crap to me. The commit message says
      
        "Keep /proc/net/ieee80211 under the original name to avoid breaking user
          interface."
      
      but the thing is, it really didn't fix anything but that one create
      thing. It needs to fix all the other cases too.
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Tested-by: default avatarRandy Dunlap <randy.dunlap@oracle.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      269e2d77
  2. 29 Oct, 2010 4 commits
    • Larry Finger's avatar
      b43: Fix warning at drivers/mmc/core/core.c:237 in mmc_wait_for_cmd · 9f2a0fac
      Larry Finger authored
      On module removal, the sdio version of b43 generates the following warning:
      
      [  851.560519] ------------[ cut here ]------------
      [  851.560531] WARNING: at drivers/mmc/core/core.c:237 mmc_wait_for_cmd+0x88/0x90()
      [  851.560534] Hardware name: 20552PG
      [  851.560536] Modules linked in: b43(-) ssb mmc_block binfmt_misc rfcomm sco bnep ppdev l2cap ipt_MASQUERADE iptable_nat nf_nat nf_conntrack_ipv4 nf_defrag_ipv4 xt_state nf_conntrack ipt_REJECT xt_tcpudp iptable_filter ip_tables x_tables bridge stp kvm_intel kvm arc4 iwlagn snd_hda_codec_conexant snd_hda_intel snd_hda_codec iwlcore snd_hwdep snd_pcm thinkpad_acpi mac80211 snd_seq_midi snd_rawmidi snd_seq_midi_event snd_seq r852 joydev snd_timer sm_common pcmcia nand snd_seq_device cfg80211 sdhci_pci btusb psmouse tpm_tis yenta_socket nand_ids lp snd pcmcia_rsrc nand_ecc bluetooth sdhci tpm pcmcia_core parport mtd snd_page_alloc serio_raw tpm_bios soundcore nvram led_class sha256_generic aes_i586 aes_generic dm_crypt i915 drm_kms_helper drm ahci intel_agp i2c_algo_bit intel_gtt e1000e libahci video agpgart output
      [  851.560620] Pid: 2504, comm: rmmod Not tainted 2.6.36-titan0+ #1
      [  851.560622] Call Trace:
      [  851.560631]  [<c014a102>] warn_slowpath_common+0x72/0xa0
      [  851.560636]  [<c04d94c8>] ? mmc_wait_for_cmd+0x88/0x90
      [  851.560641]  [<c04d94c8>] ? mmc_wait_for_cmd+0x88/0x90
      [  851.560645]  [<c014a152>] warn_slowpath_null+0x22/0x30
      [  851.560649]  [<c04d94c8>] mmc_wait_for_cmd+0x88/0x90
      [  851.560655]  [<c0401585>] ? device_release+0x25/0x80
      [  851.560660]  [<c04df210>] mmc_io_rw_direct_host+0xa0/0x150
      [  851.560665]  [<c04df370>] mmc_io_rw_direct+0x30/0x40
      [  851.560669]  [<c04e06e7>] sdio_disable_func+0x37/0xa0
      [  851.560683]  [<f8dfcb80>] b43_sdio_remove+0x30/0x50 [b43]
      [  851.560687]  [<c04df8cc>] sdio_bus_remove+0x1c/0x60
      [  851.560692]  [<c016d39f>] ? blocking_notifier_call_chain+0x1f/0x30
      [  851.560697]  [<c0404991>] __device_release_driver+0x51/0xb0
      [  851.560701]  [<c0404a7f>] driver_detach+0x8f/0xa0
      [  851.560705]  [<c0403c83>] bus_remove_driver+0x63/0xa0
      [  851.560709]  [<c0405039>] driver_unregister+0x49/0x80
      [  851.560713]  [<c0405039>] ? driver_unregister+0x49/0x80
      [  851.560718]  [<c04dfad7>] sdio_unregister_driver+0x17/0x20
      [  851.560727]  [<f8dfcb42>] b43_sdio_exit+0x12/0x20 [b43]
      [  851.560734]  [<f8dfe76f>] b43_exit+0x17/0x3c [b43]
      [  851.560740]  [<c017fb8d>] sys_delete_module+0x13d/0x200
      [  851.560747]  [<c01fd7d2>] ? do_munmap+0x212/0x300
      [  851.560752]  [<c010311f>] sysenter_do_call+0x12/0x28
      [  851.560757] ---[ end trace 31e14488072d2f7d ]---
      [  851.560759] ------------[ cut here ]------------
      
      The warning is caused by b43 not claiming the device before calling
      sdio_disable_func().
      Signed-off-by: default avatarLarry Finger <Larry.Finger@lwfinger.net>
      Reported-by: default avatarArnd Hannemann <arnd@arndnet.de>
      Tested-by: default avatarArnd Hannemann <arnd@arndnet.de>
      Cc: Stable <stable@kernel.org>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      9f2a0fac
    • Jesper Juhl's avatar
      mac80211: fix failure to check kmalloc return value in key_key_read · 520efd1a
      Jesper Juhl authored
      I noticed two small issues in mac80211/debugfs_key.c::key_key_read while
      reading through the code. Patch below.
      
      The key_key_read() function returns ssize_t and the value that's actually
      returned is the return value of simple_read_from_buffer() which also
      returns ssize_t, so let's hold the return value in a ssize_t local
      variable rather than a int one.
      
      Also, memory is allocated dynamically with kmalloc() which can fail, but
      the return value of kmalloc() is not checked, so we may end up operating
      on a null pointer further on. So check for a NULL return and bail out with
      -ENOMEM in that case.
      Signed-off-by: default avatarJesper Juhl <jj@chaosbits.net>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      520efd1a
    • Paul Fox's avatar
      libertas: Fix sd8686 firmware reload · 731b2034
      Paul Fox authored
      For the SD8686, we cannot rely on the scratch register to read the firmware
      load status, because the same register is used for storing RX packet length.
      Broaden the check to account for this.
      
      The module can now be unloaded/reloaded successfully.
      
      Based on the implementation from libertas_tf.
      Signed-off-by: default avatarDaniel Drake <dsd@laptop.org>
      Acked-by: default avatarDan Williams <dcbw@redhat.com>
      Signed-off-by: default avatarSteve deRosier <steve@cozybit.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      731b2034
    • Mohammed Shafi Shajakhan's avatar
      ath9k: Fix incorrect access of rate flags in RC · 4fc4fbd1
      Mohammed Shafi Shajakhan authored
      The index variable to access the rate flags should be obtained from the
      inner loop counter which corresponds to the rate table structure.This
      fixes the invalid rate selection i.e when the supported basic rate is
      invalid on a particular band and also the following warning message.
      Thanks to Raj for finding this out.
      
      Call Trace:
      
       [<ffffffff8104ee4a>] warn_slowpath_common+0x7a/0xb0
      
       [<ffffffff8104ee95>] warn_slowpath_null+0x15/0x20
      
       [<ffffffffa0583c45>] ath_get_rate+0x595/0x5b0 [ath9k]
      
       [<ffffffff811a0636>] ? cpumask_next_and+0x36/0x50
      
       [<ffffffffa0405186>] rate_control_get_rate+0x86/0x160 [mac80211]
      
       [<ffffffffa040dfac>] invoke_tx_handlers+0x81c/0x12d0 [mac80211]
      
       [<ffffffffa040eae9>] ieee80211_tx+0x89/0x2b0 [mac80211]
      
       [<ffffffff812891bc>] ? pskb_expand_head+0x1cc/0x1f0
      
       [<ffffffffa040edc5>] ieee80211_xmit+0xb5/0x1c0 [mac80211]
      
       [<ffffffffa041026f>] ieee80211_tx_skb+0x4f/0x60 [mac80211]
      
       [<ffffffffa03fe016>] ieee80211_send_nullfunc+0x46/0x60 [mac80211]
      
       [<ffffffffa03f91d7>] ieee80211_offchannel_stop_station+0x107/0x150
      [mac80211]
      
       [<ffffffff812891bc>] ? pskb_expand_head+0x1cc/0x1f0
      
       [<ffffffffa040edc5>] ieee80211_xmit+0xb5/0x1c0 [mac80211]
      
       [<ffffffffa041026f>] ieee80211_tx_skb+0x4f/0x60 [mac80211]
      
       [<ffffffffa03fe016>] ieee80211_send_nullfunc+0x46/0x60 [mac80211]
      
       [<ffffffffa03f91d7>] ieee80211_offchannel_stop_station+0x107/0x150
      [mac80211]
      
       [<ffffffffa03f8896>] ieee80211_scan_work+0x146/0x600 [mac80211]
      
       [<ffffffff8133a375>] ? schedule+0x2f5/0x8e0
      
       [<ffffffffa03f8750>] ? ieee80211_scan_work+0x0/0x600 [mac80211]
      
       [<ffffffff81064fcf>] process_one_work+0x10f/0x380
      
       [<ffffffff81066bc2>] worker_thread+0x162/0x340
      
       [<ffffffff81066a60>] ? worker_thread+0x0/0x340
      
      Cc: stable@kernel.org
      Signed-off-by: default avatarMohammed Shafi Shajakhan <mshajakhan@atheros.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      4fc4fbd1
  3. 27 Oct, 2010 8 commits
  4. 25 Oct, 2010 17 commits
    • Don Fry's avatar
      iwlwifi: quiet a noisy printk · 822395b5
      Don Fry authored
      Timing issues in microcode for some devices can cause a compressed BA to
      be sent to the driver prior to returning any a-MPDU notification.
      Traces show RTS-CTS is exchanged and then the timer fires which causes an
      empty BA to be sent which acknowledges nothing.  This results in a noisy
      printk. Only print the message if the bitmap is non-zero.
      Signed-off-by: default avatarDon Fry <donald.h.fry@intel.com>
      Signed-off-by: default avatarWey-Yi Guy <wey-yi.w.guy@intel.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      822395b5
    • Felix Fietkau's avatar
      ath9k: resume aggregation immediately after a hardware reset · fac6b6a0
      Felix Fietkau authored
      Since aggregation is usually triggered by tx completion, a hardware
      reset (because of beacon stuck, tx hang or baseband hang) can
      significantly delay the transmission of the next AMPDU (until the next
      tx completion event).
      Fix this by rescheduling aggregation after such a reset.
      Signed-off-by: default avatarFelix Fietkau <nbd@openwrt.org>
      Cc: stable@kernel.org
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      fac6b6a0
    • Christian Lamparter's avatar
      carl9170: fix scheduling while atomic · dafeac38
      Christian Lamparter authored
      This patch fixes the following mishap:
      
      BUG: scheduling while atomic: wpa_supplicant/4164/0x00000002
      Modules linked in: carl9170 mac80211 [...]
      Pid: 4164, comm: wpa_supplicant Not tainted 2.6.36-wl+ #119
      Call Trace:
       [<c13779a9>] ? schedule+0x349/0x4c0
       [<c13780d6>] ? schedule_timeout+0x106/0x1e0
       [<c1037f50>] ? process_timeout+0x0/0x10
       [<c1377e8d>] ? wait_for_common+0x9d/0x140
       [<c1029110>] ? default_wake_function+0x0/0x10
       [<f80c6080>] ? carl9170_exec_cmd+0xf0/0x250 [carl9170]
       [<f80c695e>] ? carl9170_set_mac_reg+0x5e/0x70 [carl9170]
       [<f80c3f76>] ? carl9170_op_add_interface+0x176/0x310 [carl9170]
       [...]
      
      rcu_read_unlock() call was erroneously placed after the
      sync. function carl9170_mod_virtual_mac.
      Signed-off-by: default avatarChristian Lamparter <chunkeey@googlemail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      dafeac38
    • Rajkumar Manoharan's avatar
      mac80211: Fix ibss station got expired immediately · c8716d9d
      Rajkumar Manoharan authored
      Station addition in ieee80211_ibss_rx_queued_mgmt is not updating
      sta->last_rx which is causing station expiry in ieee80211_ibss_work
      path. So sta addition and deletion happens repeatedly.
      
      CC: stable@kernel.org
      Signed-off-by: default avatarRajkumar Manoharan <rmanoharan@atheros.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      c8716d9d
    • Rafał Miłecki's avatar
      30115c22
    • Grazvydas Ignotas's avatar
      wl1251: fix module names · 04348f27
      Grazvydas Ignotas authored
      The wl1251 move accidently renamed wl1251_sdio and wl1251_spi
      modules to just sdio and spi. Restore proper module names.
      Signed-off-by: default avatarGrazvydas Ignotas <notasas@gmail.com>
      Acked-by: default avatarKalle Valo <kvalo@adurom.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      04348f27
    • Felix Fietkau's avatar
      ath9k: fix handling of rate control probe frames · 0299a50a
      Felix Fietkau authored
      The ath9k aggregation code was already checking the rate control probe flag
      to prevent starting an aggregate frame with a sampling rate. What was missing
      was closing an aggregate before adding a probing frame to it.
      Without that, rate control cannot have precise control over probing, which
      delays using faster rates when the channel conditions improve.
      Signed-off-by: default avatarFelix Fietkau <nbd@openwrt.org>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      0299a50a
    • Felix Fietkau's avatar
      ath9k: fix crash in ath_update_survey_stats · 0845735e
      Felix Fietkau authored
      If ah->curchan is uninitialized, the channel index is bogus, which leads
      to invalid memory access when the cycle counters are updated.
      Signed-off-by: default avatarFelix Fietkau <nbd@openwrt.org>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      0845735e
    • Senthil Balasubramanian's avatar
      ath9k_hw: Fix divide by zero cases in paprd. · 2d3fca18
      Senthil Balasubramanian authored
      We are not handling all divide by zero cases in paprd.
      Add additional checks for divide by zero cases in papard.
      
      This patch has fixes intended for kernel 2.6.36.
      
      Cc: stable@kernel.org
      Signed-off-by: default avatarSenthil Balasubramanian <senthilkumar@atheros.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      2d3fca18
    • Luis R. Rodriguez's avatar
      ath9k_hw: Fix TX carrier leakage for IEEE compliance on AR9003 2.2 · 0dfa6dbb
      Luis R. Rodriguez authored
      This updates the initvals for the AR9003 2.2 chipsets. The initvals
      are the initial register values we use for our registers upon hardware
      reset. This synchs up the initvals to match what our latest recommendation
      from our systems engineering team.
      
      The description of changes in this update:
      
              Improves ability to support very strong Rx conditions.
              Enhances DFS support for AP-mode.
              Improves performance of Tx carrier leak calibration.
              Adds support for Japan channel 14 Tx filtering requirements.
              Improves Tx power accuracy.
      
      Impact:
      
              Update required to address degraded throughput at very short range.
              Update required for AP-mode DFS certification.
              Update required to comply to IEEE Tx carrier leak specification.
              May not meet expected +/- 2 dB Tx power accuracy without update.
      
      The most important fix here would be the TX carrier leakage required
      to comply with IEEE 802.11 specifications. The group of changes have
      been tested all together in one release.
      
      References:
      
      	Osprey 2.2 header file ver #33
      
      Checksums:
      
      $ ./initvals -f ar9003-2p2
      0x000000004a488fc7        ar9300_2p2_radio_postamble
      0x0000000046cb1300        ar9300Modes_lowest_ob_db_tx_gain_table_2p2
      0x00000000e912711f        ar9300Modes_fast_clock_2p2
      0x0000000037ac0ee8        ar9300_2p2_radio_core
      0x00000000047a7700        ar9300Common_rx_gain_table_merlin_2p2
      0x0000000003f783bb        ar9300_2p2_mac_postamble
      0x00000000301fc841        ar9300_2p2_soc_postamble
      0x000000005ec8075f        ar9200_merlin_2p2_radio_core
      0x0000000083372ffa        ar9300_2p2_baseband_postamble
      0x00000000c4f59974        ar9300_2p2_baseband_core
      0x00000000e20d2e72        ar9300Modes_high_power_tx_gain_table_2p2
      0x000000007fd55c70        ar9300Modes_high_ob_db_tx_gain_table_2p2
      0x0000000029495000        ar9300Common_rx_gain_table_2p2
      0x0000000042cb1300        ar9300Modes_low_ob_db_tx_gain_table_2p2
      0x00000000c4739cd6        ar9300_2p2_mac_core
      0x000000003521a300        ar9300Common_wo_xlna_rx_gain_table_2p2
      0x00000000a15ccf1b        ar9300_2p2_soc_preamble
      0x0000000029734396        ar9300PciePhy_pll_on_clkreq_disable_L1_2p2
      0x000000002d834396        ar9300PciePhy_clkreq_enable_L1_2p2
      0x0000000029834396        ar9300PciePhy_clkreq_disable_L1_2p2
      
      $ ./initvals -f ar9003-2p2 | sha1sum
      0ceddb5cf66737610fb51f04cf3e9ff71870c7b4  -
      
      Cc: stable@kernel.org
      Cc: Yixiang Li <yixiang.li@atheros.com>
      Cc: Don Breslin <don.breslin@atheros.com>
      Signed-off-by: default avatarLuis R. Rodriguez <lrodriguez@atheros.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      0dfa6dbb
    • Luis R. Rodriguez's avatar
      cfg80211: fix regression on processing country IEs · a171fba4
      Luis R. Rodriguez authored
      The patch 4f366c5d:
      
      	wireless: only use alpha2 regulatory information from country IE
      
      removed some complex intersection we were always doing between the AP's
      country IE info and what we got from CRDA. When CRDA sent us back a
      regulatory domain we would do some sanity checks on that regulatory
      domain response we just got. Part of these sanity checks included
      checking that we already had performed an intersection for the
      request of NL80211_REGDOM_SET_BY_COUNTRY_IE type.
      
      This mean that cfg80211 was only processing country IEs for cases
      where we already had an intersection, but since we removed enforcing
      this this is no longer required, we should just apply the country
      IE country hint with the data received from CRDA.
      
      This patch has fixes intended for kernels >= 2.6.36.
      
      Cc: stable@kernel.org
      Reported-by: default avatarEaswar Krishnan <easwar.krishnan@atheros.com>
      Signed-off-by: default avatarLuis R. Rodriguez <lrodriguez@atheros.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      a171fba4
    • Christian Lamparter's avatar
      carl9170: fix memory leak issue in async cmd macro wrappers · 3d2f2cd0
      Christian Lamparter authored
      This patch continues where the previous commit:
      	"carl9170: fix async command buffer leak"
      left off.
      
      Similar to carl9170_reboot/carl9170_powersave, the
      carl9170_async_regwrite* macros would leak the
      temporary command buffer, if __carl9170_exec_cmd
      fails to upload the command to the device.
      Signed-off-by: default avatarChristian Lamparter <chunkeey@googlemail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      3d2f2cd0
    • Christian Lamparter's avatar
      mac80211: don't sanitize invalid rates · 5f4e6b2d
      Christian Lamparter authored
      I found this bug while poking around with a pure-gn AP.
      
      Commit:
      cfg80211/mac80211: Use more generic bitrate mask for rate control
      
      Added some sanity checks to ensure that each tx rate index
      is included in the configured mask and it would change any
      rate indexes if it wasn't.
      
      But, the current implementation doesn't take into account
      that the invalid rate index "-1" has a special meaning
      (= no further attempts) and it should not be "changed".
      Signed-off-by: default avatarChristian Lamparter <chunkeey@googlemail.com>
      Cc: stable@kernel.org
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      5f4e6b2d
    • Christian Lamparter's avatar
      carl9170: fix async command buffer leak · cae7f953
      Christian Lamparter authored
      If __carl9170_exec_cmd fails to upload an asynchronous
      command to the device, the functions: carl9170_reboot
      and carl9170_powersave will leak the temporary command
      assembly buffer.
      Signed-off-by: default avatarChristian Lamparter <chunkeey@googlemail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      cae7f953
    • Ben Greear's avatar
      ath5k: Properly initialize ath_common->cc_lock. · 9192f715
      Ben Greear authored
      Otherwise, lockdep splats, at the least:
      
      INFO: trying to register non-static key.
      the code is fine but needs lockdep annotation.
      turning off the locking correctness validator.
      Pid: 0, comm: swapper Not tainted 2.6.36-rc8-wl+ #32
      Call Trace:
       [<c075d940>] ? printk+0xf/0x17
       [<c045507a>] register_lock_class+0x5a/0x29e
       [<c0456af5>] __lock_acquire+0xa2/0xb8c
       [<c0455be2>] ? mark_lock+0x1e/0x1de
       [<c041a540>] ? acpi_get_override_irq+0x85/0x8c
       [<c0455536>] ? trace_hardirqs_off+0xb/0xd
       [<c0457639>] lock_acquire+0x5a/0x78
       [<f8126835>] ? ath5k_ani_calibration+0x24/0x52b [ath5k]
       [<c075f6ed>] _raw_spin_lock_bh+0x20/0x2f
       [<f8126835>] ? ath5k_ani_calibration+0x24/0x52b [ath5k]
       [<f8126835>] ath5k_ani_calibration+0x24/0x52b [ath5k]
       [<c0438f99>] ? tasklet_action+0x3b/0xc6
       [<f8123c2b>] ath5k_tasklet_ani+0x18/0x22 [ath5k]
       [<c0438fd1>] tasklet_action+0x73/0xc6
       [<c043945f>] __do_softirq+0x86/0x111
       [<c0439520>] do_softirq+0x36/0x5a
       [<c0439659>] irq_exit+0x35/0x69
       [<c0403fb9>] do_IRQ+0x86/0x9a
       [<c04034ee>] common_interrupt+0x2e/0x40
       [<c045007b>] ? do_adjtimex+0x223/0x55e
       [<c0408245>] ? mwait_idle+0x5c/0x6c
       [<c040227f>] cpu_idle+0x4e/0x6b
       [<c074b6e9>] rest_init+0x8d/0x92
       [<c09758ea>] start_kernel+0x320/0x325
       [<c09750d0>] i386_start_kernel+0xd0/0xd7
      Signed-off-by: default avatarBen Greear <greearb@candelatech.com>
      Acked-by: default avatarBruno Randolf <br1@einfach.org>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      9192f715
    • Ben Greear's avatar
      ath9k: Properly initialize ath_common->cc_lock. · 20b25744
      Ben Greear authored
      Otherwise, lockdep splats, at the least:
      
      INFO: trying to register non-static key.
      the code is fine but needs lockdep annotation.
      turning off the locking correctness validator.
      Pid: 2240, comm: ip Not tainted 2.6.36-rc8-wl+ #32
      Call Trace:
       [<c075d940>] ? printk+0xf/0x17
       [<c045507a>] register_lock_class+0x5a/0x29e
       [<c0455be2>] ? mark_lock+0x1e/0x1de
       [<c0456af5>] __lock_acquire+0xa2/0xb8c
       [<c0455be2>] ? mark_lock+0x1e/0x1de
       [<c0457639>] lock_acquire+0x5a/0x78
       [<f8c5115b>] ? ath9k_config+0x274/0x3d8 [ath9k]
       [<c075f602>] _raw_spin_lock_irqsave+0x2f/0x3f
       [<f8c5115b>] ? ath9k_config+0x274/0x3d8 [ath9k]
       [<f8c5115b>] ath9k_config+0x274/0x3d8 [ath9k]
       [<f8c0ba2e>] ieee80211_hw_config+0x11b/0x125 [mac80211]
       [<f8c17edf>] ieee80211_do_open+0x3c5/0x466 [mac80211]
       [<f8c171d6>] ? ieee80211_check_concurrent_iface+0x21/0x13a [mac80211]
       [<f8c17fdb>] ieee80211_open+0x5b/0x5e [mac80211]
       [<c06ce76b>] __dev_open+0x80/0xae
       [<c06cc99b>] __dev_change_flags+0xa0/0x115
       [<c06ce6bf>] dev_change_flags+0x13/0x3f
       [<c06d7e78>] do_setlink+0x23a/0x51b
       [<c0455037>] ? register_lock_class+0x17/0x29e
       [<c06d847c>] rtnl_newlink+0x269/0x431
       [<c06d8291>] ? rtnl_newlink+0x7e/0x431
       [<c0455be2>] ? mark_lock+0x1e/0x1de
       [<c0455de9>] ? mark_held_locks+0x47/0x5f
       [<c075ebcf>] ? __mutex_lock_common+0x2bb/0x2d6
       [<c0456045>] ? trace_hardirqs_on_caller+0x104/0x125
       [<c075ebe0>] ? __mutex_lock_common+0x2cc/0x2d6
       [<c06d8213>] ? rtnl_newlink+0x0/0x431
       [<c06d79e2>] rtnetlink_rcv_msg+0x182/0x198
       [<c06d7860>] ? rtnetlink_rcv_msg+0x0/0x198
       [<c06e503c>] netlink_rcv_skb+0x30/0x77
       [<c06d7859>] rtnetlink_rcv+0x1b/0x22
       [<c06e4e77>] netlink_unicast+0xbe/0x119
       [<c06e5a15>] netlink_sendmsg+0x234/0x24c
       [<c06bf93a>] __sock_sendmsg+0x51/0x5a
       [<c06bfba4>] sock_sendmsg+0x93/0xa7
       [<c04968cf>] ? might_fault+0x47/0x81
       [<c0496904>] ? might_fault+0x7c/0x81
       [<c06c7904>] ? copy_from_user+0x8/0xa
       [<c06c7c2d>] ? verify_iovec+0x3e/0x6d
       [<c06bfd8c>] sys_sendmsg+0x149/0x193
       [<c0455037>] ? register_lock_class+0x17/0x29e
       [<c0455be2>] ? mark_lock+0x1e/0x1de
       [<c0498d7a>] ? __do_fault+0x1fc/0x3a5
       [<c048690a>] ? unlock_page+0x40/0x43
       [<c0498ef7>] ? __do_fault+0x379/0x3a5
       [<c04576dd>] ? lock_release_non_nested+0x86/0x1d8
       [<c04968cf>] ? might_fault+0x47/0x81
       [<c04968cf>] ? might_fault+0x47/0x81
       [<c06c148b>] sys_socketcall+0x15e/0x1a5
       [<c0402f1c>] sysenter_do_call+0x12/0x38
      Signed-off-by: default avatarBen Greear <greearb@candelatech.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      20b25744
    • Tejun Heo's avatar
      mac80211: cancel restart_work explicitly instead of depending on flush_scheduled_work() · 99b88a0e
      Tejun Heo authored
      iee80211_hw->restart_work is the only work which uses the system
      workqueue.  Instead of calling flush_scheduled_work() during
      iee80211_exit(), cancel the work during unregistration.
      
      This is to prepare for the deprecation and removal of
      flush_scheduled_work().
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      99b88a0e