1. 20 Dec, 2010 15 commits
  2. 16 Dec, 2010 17 commits
    • Larry Finger's avatar
    • Larry Finger's avatar
      3cf0c8ad
    • Bruno Randolf's avatar
      ath5k: Fix survey · f15a4bb2
      Bruno Randolf authored
      The old survey implementation was broken and returned nonsense data.
      
      Clear cycle counters and survey data on reset. Since the cycle counters easily
      overflow it's better to keep a local version of collected survey data (in ms
      resolution, instead of clockrate) and update this every time survey is
      retrieved. If survey is retrieved often enough to avoid cycle counter overflows
      this works fine, otherwise we could update survey more often, like ath9k does.
      Still only the survey for the current channel is kept.
      Signed-off-by: default avatarBruno Randolf <br1@einfach.org>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      f15a4bb2
    • Larry Finger's avatar
      rtl8192ce: Fix build on powerpc · 4aea248d
      Larry Finger authored
      After merge of the rtl8192ce driver, a powerpc build fails with:
      
      drivers/net/wireless/rtlwifi/rtl8192ce/rtl8192c-sw.c: In function 'rtl92c_init_sw_vars':
      drivers/net/wireless/rtlwifi/rtl8192ce/rtl8192c-sw.c:76: error: implicit declaration of function 'vmalloc'
      drivers/net/wireless/rtlwifi/rtl8192ce/rtl8192c-sw.c:76: warning: cast to pointer from integer of different size
      drivers/net/wireless/rtlwifi/rtl8192ce/rtl8192c-sw.c: In function 'rtl92c_deinit_sw_vars':
      drivers/net/wireless/rtlwifi/rtl8192ce/rtl8192c-sw.c:91: error: implicit declaration of function 'vfree'
      
      The problem is fixed by explicitly including the appropriate header.
      Signed-off-by: default avatarLarry Finger <Larry.Finger@lwfinger.net>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      4aea248d
    • Luis R. Rodriguez's avatar
      ath: fix NULL pointer dereference on reg_notifier() · 931299cf
      Luis R. Rodriguez authored
      The reg_notifier() was recently updated as being capable of
      having the request passed as NULL, fix ath to follow this API
      change. Without this we end up oopsing:
      
      BUG: unable to handle kernel NULL pointer dereference at 0000000000000004
      IP: [<ffffffffa02fb8cb>] ath_reg_notifier_apply+0x5b/0xa0 [ath]
      PGD b4c4c067 PUD b4c4d067 PMD 0
      Oops: 0000 [#1] SMP DEBUG_PAGEALLOC
      last sysfs file: /sys/devices/pci0000:00/0000:00:1b.0/uevent
      CPU 1
      Modules linked in: <etc>
      Pid: 436, comm: modprobe Not tainted 2.6.37-rc5-wl+ #36 6460DWU/6460DWU
      RIP: 0010:[<ffffffffa02fb8cb>]  [<ffffffffa02fb8cb>] ath_reg_notifier_apply+0x5b/0xa0 [ath]
      RSP: 0018:ffff8800b6f6baa8  EFLAGS: 00010246
      RAX: ffff8800b527b254 RBX: ffff8800b532c180 RCX: 0000000000000018
      RDX: ffff8800b530c108 RSI: 0000000000000000 RDI: ffff8800b532c180
      RBP: ffff8800b6f6baa8 R08: ffff8800b532f268 R09: 0000000000000235
      R10: 00000000000016ad R11: 0000000000000018 R12: 0000000000000000
      R13: 0000000000000016 R14: ffff8800b532f268 R15: 0000000000000011
      FS:  00007f0c53104700(0000) GS:ffff8800bed00000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
      CR2: 0000000000000004 CR3: 00000000b6531000 CR4: 00000000000006e0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
      Process modprobe (pid: 436, threadinfo ffff8800b6f6a000, task ffff8800b404dc40)
      Stack:
       ffff8800b6f6bac8 ffffffffa03ea651 ffff8800b532c180 ffff8800b527b254
       ffff8800b6f6bb38 ffffffffa01835ca ffffffffa019ed00 00000000a019ed80
       0000000000000002 ffff880000000002 ffffffffa0366140 0000000010aee572
      Call Trace:
       [<ffffffffa03ea651>] ath9k_reg_notifier+0x41/0x50 [ath9k]
       [<ffffffffa01835ca>] wiphy_update_regulatory+0x4ba/0x5a0 [cfg80211]
       [<ffffffffa0366140>] ? ieee80211_register_hw+0xa0/0x5b0 [mac80211]
       [<ffffffffa0366140>] ? ieee80211_register_hw+0xa0/0x5b0 [mac80211]
       [<ffffffffa017f994>] wiphy_register+0x1d4/0x360 [cfg80211]
       [<ffffffff8114b918>] ? __kmalloc+0x108/0x1c0
       [<ffffffffa0366223>] ieee80211_register_hw+0x183/0x5b0 [mac80211]
       [<ffffffffa03eb49b>] ath9k_init_device+0x66b/0x850 [ath9k]
       [<ffffffffa03f9dd6>] ath_pci_probe+0x2f6/0x3c0 [ath9k]
       [<ffffffff81037529>] ? default_spin_lock_flags+0x9/0x10
       [<ffffffff812e19cf>] local_pci_probe+0x5f/0xd0
       [<ffffffff812e2bf1>] pci_device_probe+0x101/0x120
       [<ffffffff81390aca>] ? driver_sysfs_add+0x7a/0xb0
       [<ffffffff81390c26>] driver_probe_device+0x96/0x1c0
       [<ffffffff81390deb>] __driver_attach+0x9b/0xa0
       [<ffffffff81390d50>] ? __driver_attach+0x0/0xa0
       [<ffffffff81390008>] bus_for_each_dev+0x68/0x90
       [<ffffffff81390a4e>] driver_attach+0x1e/0x20
       [<ffffffff81390309>] bus_add_driver+0xe9/0x290
       [<ffffffffa0407000>] ? ath9k_init+0x0/0x4d [ath9k]
       [<ffffffff81391130>] driver_register+0x80/0x150
       [<ffffffffa0407000>] ? ath9k_init+0x0/0x4d [ath9k]
       [<ffffffffa0407000>] ? ath9k_init+0x0/0x4d [ath9k]
       [<ffffffff812e2e76>] __pci_register_driver+0x56/0xd0
       [<ffffffffa03f9ec3>] ath_pci_init+0x23/0x30 [ath9k]
       [<ffffffffa040702b>] ath9k_init+0x2b/0x4d [ath9k]
       [<ffffffff81002053>] do_one_initcall+0x43/0x190
       [<ffffffff8109fb5b>] sys_init_module+0xbb/0x200
       [<ffffffff8100c042>] system_call_fastpath+0x16/0x1b
      Code: <who even reads this anyway? haha, ok you do>
      RIP  [<ffffffffa02fb8cb>] ath_reg_notifier_apply+0x5b/0xa0 [ath]
       RSP <ffff8800b6f6baa8>
      CR2: 0000000000000004
      ---[ end trace 6d03d3c7eda9f06b ]---
      Signed-off-by: default avatarLuis R. Rodriguez <lrodriguez@atheros.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      931299cf
    • Luis R. Rodriguez's avatar
      cfg80211: fix null pointer dereference with a custom regulatory request · 2784fe91
      Luis R. Rodriguez authored
      Once we moved the core regulatory request to the queue and let
      the scheduler process it last_request will have been left NULL
      until the schedular decides to process the first request. When
      this happens and we are loading a driver with a custom regulatory
      request like all Atheros drivers we end up with a NULL pointer
      dereference. We fix this by checking if the request was a
      custom one.
      
      BUG: unable to handle kernel NULL pointer dereference at 0000000000000004
      IP: [<ffffffffa016de87>] freq_reg_info_regd.clone.2+0x27/0x130 [cfg80211]
      PGD 71f91067 PUD 712b2067 PMD 0
      Oops: 0000 [#1] PREEMPT SMP
      last sysfs file: /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-1/firmware/2-1/loading
      CPU 0
      Modules linked in: ath9k_htc(+) ath9k_common ath9k_hw ath <etc>
      Pid: 3094, comm: insmod Tainted: G        W   2.6.37-rc5-wl #16 INVALID/28427ZQ
      RIP: 0010:[<ffffffffa016de87>]  [<ffffffffa016de87>] freq_reg_info_regd.clone.2+0x27/0x130 [cfg80211]
      RSP: 0018:ffff88007045db78  EFLAGS: 00010282
      RAX: 0000000000000000 RBX: ffffffffa047d9a0 RCX: ffff88007045dbd0
      RDX: 0000000000004e20 RSI: 000000000024cde0 RDI: ffff8800700483e0
      RBP: ffff88007045db98 R08: ffffffffa02f5b40 R09: 0000000000000001
      R10: 000000000000000e R11: 0000000000000001 R12: 0000000000000000
      R13: ffff88007004e3b0 R14: 0000000000000000 R15: ffff880070048340
      FS:  00007f635a707700(0000) GS:ffff880077400000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
      CR2: 0000000000000004 CR3: 00000000708a9000 CR4: 00000000000006f0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
      Process insmod (pid: 3094, threadinfo ffff88007045c000, task ffff8800713e3ec0)
      Stack:
       ffffffffa047d9a0 0000000000000000 ffff88007004e3b0 0000000000000000
       ffff88007045dc08 ffffffffa016e147 000000007045dc08 0000000000000002
       ffff8800700483e0 ffffffffa02f5b40 ffff88007045dbd8 0000000000000000
      Call Trace:
       [<ffffffffa016e147>] wiphy_apply_custom_regulatory+0x137/0x1d0 [cfg80211]
       [<ffffffffa047a690>] ? ath9k_reg_notifier+0x0/0x50 [ath9k_htc]
       [<ffffffffa02f47f7>] ath_regd_init+0x347/0x430 [ath]
       [<ffffffffa047b1f5>] ath9k_htc_probe_device+0x6c5/0x960 [ath9k_htc]
       [<ffffffffa0472a2c>] ath9k_htc_hw_init+0xc/0x30 [ath9k_htc]
       [<ffffffffa04747e6>] ath9k_hif_usb_probe+0x216/0x3b0 [ath9k_htc]
       [<ffffffffa03bb6bc>] usb_probe_interface+0x10c/0x210 [usbcore]
       [<ffffffff812aec26>] driver_probe_device+0x96/0x1c0
       [<ffffffff812aedf3>] __driver_attach+0xa3/0xb0
       [<ffffffff812aed50>] ? __driver_attach+0x0/0xb0
       [<ffffffff812adaae>] bus_for_each_dev+0x5e/0x90
       [<ffffffff812ae8c9>] driver_attach+0x19/0x20
       [<ffffffff812ae438>] bus_add_driver+0x168/0x320
       [<ffffffff812af071>] driver_register+0x71/0x140
       [<ffffffff811fc4a8>] ? __raw_spin_lock_init+0x38/0x70
       [<ffffffffa03ba39c>] usb_register_driver+0xdc/0x190 [usbcore]
       [<ffffffffa03a2000>] ? ath9k_htc_init+0x0/0x4f [ath9k_htc]
       [<ffffffffa047499e>] ath9k_hif_usb_init+0x1e/0x20 [ath9k_htc]
       [<ffffffffa03a202b>] ath9k_htc_init+0x2b/0x4f [ath9k_htc]
       [<ffffffff8100212f>] do_one_initcall+0x3f/0x180
       [<ffffffff8109ef5b>] sys_init_module+0xbb/0x200
       [<ffffffff8100bf52>] system_call_fastpath+0x16/0x1b
      Code: <etc, who cares>
      RIP  [<ffffffffa016de87>] freq_reg_info_regd.clone.2+0x27/0x130 [cfg80211]
       RSP <ffff88007045db78>
      CR2: 0000000000000004
      ---[ end trace 79e4193601c8b713 ]---
      Reported-by: default avatarSujith Manoharan <Sujith.Manoharan@atheros.com>
      Signed-off-by: default avatarLuis R. Rodriguez <lrodriguez@atheros.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      2784fe91
    • Vasanthakumar Thiagarajan's avatar
      ath9k_hw: Configure appropriate Tx power when PAPRD fails · 45ef6a0b
      Vasanthakumar Thiagarajan authored
      Target Tx power available in eeprom is for PAPRD. If PAPRD
      fails, paprd scale factor needs to be detected from this
      target tx power.
      Signed-off-by: default avatarVasanthakumar Thiagarajan <vasanth@atheros.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      45ef6a0b
    • Vasanthakumar Thiagarajan's avatar
      ath9k_hw: Disable PAPRD for rates with low Tx power · 7072bf62
      Vasanthakumar Thiagarajan authored
      When the drop in Tx power for a particular mcs rate exceeds
      the paprd scale factor, paprd may not work properly. Disable
      paprd for any such rates.
      Signed-off-by: default avatarVasanthakumar Thiagarajan <vasanth@atheros.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      7072bf62
    • Vasanthakumar Thiagarajan's avatar
    • Vasanthakumar Thiagarajan's avatar
      ath9k_hw: Tx IQ cal changes for AR9003 · 0b2084bc
      Vasanthakumar Thiagarajan authored
      Add multiple Tx IQ cal support to improve EVM accross
      different power levels.
      Signed-off-by: default avatarVasanthakumar Thiagarajan <vasanth@atheros.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      0b2084bc
    • Vasanthakumar Thiagarajan's avatar
      ath9k_hw: Move get_streams() to hw.h · 895ad7eb
      Vasanthakumar Thiagarajan authored
      This helper can be used in multiple places. Also make
      it inline returning u8.
      Signed-off-by: default avatarVasanthakumar Thiagarajan <vasanth@atheros.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      895ad7eb
    • Vasanthakumar Thiagarajan's avatar
    • Vasanthakumar Thiagarajan's avatar
      7e68b746
    • Jouni Malinen's avatar
      nl80211: Add notification for dropped Deauth/Disassoc · cf4e594e
      Jouni Malinen authored
      Add a new notification to indicate that a received, unprotected
      Deauthentication or Disassociation frame was dropped due to
      management frame protection being in use. This notification is
      needed to allow user space (e.g., wpa_supplicant) to implement
      SA Query procedure to recover from association state mismatch
      between an AP and STA.
      
      This is needed to avoid getting stuck in non-working state when MFP
      (IEEE 802.11w) is used and a protected Deauthentication or
      Disassociation frame is dropped for any reason. After that, the
      station would silently discard any unprotected Deauthentication or
      Disassociation frame that could be indicating that the AP does not
      have association for the STA (when the Reason Code would be 6 or 7).
      IEEE Std 802.11w-2009, 11.13 describes this recovery mechanism.
      Signed-off-by: default avatarJouni Malinen <j@w1.fi>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      cf4e594e
    • John W. Linville's avatar
    • Sedat Dilek's avatar
      iwlwifi: Fix error: struct iwl_lq_sta has no member named dbg_fixed_rate · 7d5f01ad
      Sedat Dilek authored
      While compiling linux-next (next-20101216) I fell over this breakage:
      ...
      drivers/net/wireless/iwlwifi/iwl-agn-rs.c: In function ‘iwl_rs_rate_init’:
      drivers/net/wireless/iwlwifi/iwl-agn-rs.c:2876:8: error: ‘struct iwl_lq_sta’ has no member named ‘dbg_fixed_rate’
      
      dbg_fixed_rate is only used when CONFIG_MAC80211_DEBUGFS is set:
      
      [ drivers/net/wireless/iwlwifi/iwl-agn-rs.h ]
      ...
       #ifdef CONFIG_MAC80211_DEBUGFS
             struct dentry *rs_sta_dbgfs_scale_table_file;
             struct dentry *rs_sta_dbgfs_stats_table_file;
             struct dentry *rs_sta_dbgfs_rate_scale_data_file;
             struct dentry *rs_sta_dbgfs_tx_agg_tid_en_file;
             u32 dbg_fixed_rate;
       #endif
      
      The issue was introduced by commit a1da077b:
      "iwlwifi: clear dbg_fixed_rate during init"
      Signed-off-by: default avatarSedat Dilek <sedat.dilek@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      7d5f01ad
    • John W. Linville's avatar
      rtlwifi: convert to __packed notation · e137478b
      John W. Linville authored
      Use "__packed" instead of "__attribute__ ((packed))"...
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      e137478b
  3. 15 Dec, 2010 8 commits