1. 18 1月, 2012 6 次提交
  2. 13 1月, 2012 2 次提交
    • R
      ath6kl: Remove useless initialization in ath6kl_read_fwlogs() · e80ec84d
      Raja Mani 提交于
      ath6kl_read_fwlogs() assigns the value zero to the variable 'ret'
      at the time of declaration. Later, return value of ath6kl_diag_read32()
      repalces the init value. Hence removing useless zero assignment.
      Signed-off-by: NRaja Mani <rmani@qca.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      e80ec84d
    • T
      ath6kl: Add support for uAPSD · c1762a3f
      Thirumalai Pachamuthu 提交于
      * A new APSD power save queue is added in the station structure.
      * When a station has APSD capability and goes to power save, the frame
        designated to the station will be buffered in APSD queue.
      * When the host receives a frame which the firmware marked as trigger,
        host delivers the buffered frame from the APSD power save queue.
        Number of frames to deliver is decided by MAX SP length.
      * When a station moves from sleep to awake state, all frames buffered
        in APSD power save queue are sent to the firmware.
      * When a station is disconnected, all frames bufferes in APSD power save
        queue are dropped.
      * When the host queues the first frame to the APSD queue or removes the
        last frame from the APSD queue, it is indicated to the firmware using
        WMI_AP_APSD_BUFFERED_TRAFFIC_CMD.
      
      kvalo: fix buggy handling of sks queues, made it more obvious
      the user priority when wmm is disabled, remove unneed else block and
      combined some variable declarations
      Signed-off-by: NThirumalai Pachamuthu <tpachamu@qca.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      c1762a3f
  3. 12 1月, 2012 4 次提交
    • S
      ath6kl: Fix listen interval handling · 8232736d
      Sujith Manoharan 提交于
      This patch addresses a few problems with the commit:
      
      "ath6kl: Implement support for listen interval from userspace"
      
      * The debugfs file required for reading/writing the listen interval
        wasn't created. Fix this.
      
      * The interface index was being hardcoded to zero. Fix this.
      
      * Two separate parameters, "listen_interval_time and listen_interval_beacons"
        were being used. This fails to work as expected because the FW assigns
        higher precedence to "listen_interval_beacons" and "listen_interval_time"
        ends up being never used at all.
      
        To handle this, fix the host driver to exclusively use listen interval
        based on units of beacon intervals.
      
      To set the listen interval, a user would now do something like this:
      
      echo "10" > /sys/kernel/debug/ieee80211/*/ath6kl/listen_interval
      
      kvalo: fix two checkpatch warnings
      Signed-off-by: NSujith Manoharan <c_manoha@qca.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      8232736d
    • S
      ath6kl: Initialize a variable properly · cbec267a
      Sujith Manoharan 提交于
      This prevents 'comp_pktq' from being used in an
      incorrect manner.
      Signed-off-by: NSujith Manoharan <c_manoha@qca.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      cbec267a
    • S
      ath6kl: Remove redundant pointer check · 4a8ce2fd
      Sujith Manoharan 提交于
      'params' is already used earlier and there is no point
      in checking for a NULL condition again.
      Signed-off-by: NSujith Manoharan <c_manoha@qca.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      4a8ce2fd
    • S
      ath6kl: Fix SDIO error path · 866dc886
      Sujith Manoharan 提交于
      sdio_release_host() would be called twice if sdio_set_block_size()
      fails for some reason, which would result in the following warning.
      
      WARNING: at /home/sujith/dev/wireless-testing/drivers/mmc/core/core.c:828 mmc_release_host+0x42/0x50 [mmc_core]()
      
      Call Trace:
      [<ffffffff81064fdf>] warn_slowpath_common+0x7f/0xc0
      [<ffffffff8106503a>] warn_slowpath_null+0x1a/0x20
      [<ffffffffa03beb42>] mmc_release_host+0x42/0x50 [mmc_core]
      [<ffffffffa03c917e>] sdio_release_host+0x1e/0x30 [mmc_core]
      [<ffffffffa053fac7>] ath6kl_sdio_config+0xc7/0x110 [ath6kl_sdio]
      [<ffffffffa053fd2c>] ath6kl_sdio_probe+0x21c/0x320 [ath6kl_sdio]
      [<ffffffffa03beb2a>] ? mmc_release_host+0x2a/0x50 [mmc_core]
      [<ffffffffa03c7d2a>] sdio_bus_probe+0xfa/0x130 [mmc_core]
      [<ffffffff813015ae>] driver_probe_device+0x7e/0x1b0
      [<ffffffff8130178b>] __driver_attach+0xab/0xb0
      [<ffffffff813016e0>] ? driver_probe_device+0x1b0/0x1b0
      [<ffffffff813016e0>] ? driver_probe_device+0x1b0/0x1b0
      [<ffffffff81300504>] bus_for_each_dev+0x64/0xa0
      [<ffffffff8130123e>] driver_attach+0x1e/0x20
      [<ffffffff81300e80>] bus_add_driver+0x1b0/0x280
      [<ffffffffa0065000>] ? 0xffffffffa0064fff
      [<ffffffff81301d06>] driver_register+0x76/0x140
      [<ffffffffa0065000>] ? 0xffffffffa0064fff
      [<ffffffffa03c7b71>] sdio_register_driver+0x21/0x30 [mmc_core]
      [<ffffffffa0065012>] ath6kl_sdio_init+0x12/0x35 [ath6kl_sdio]
      [<ffffffff81002042>] do_one_initcall+0x42/0x180
      [<ffffffff810b025f>] sys_init_module+0x8f/0x200
      [<ffffffff81425ac2>] system_call_fastpath+0x16/0x1b
      Signed-off-by: NSujith Manoharan <c_manoha@qca.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      866dc886
  4. 09 1月, 2012 7 次提交
  5. 05 1月, 2012 9 次提交
    • J
      ath6kl: revert USB support · cb00ec38
      John W. Linville 提交于
      The ath6kl driver is causing build failures when the ath6kl bits are
      not built as modules.  A better fix is forthcoming in a future release,
      but for now lets revert the problematic code.
      
      This reverts the following commits:
      
      	fde57764
      	d70385a2
      	59d954ddSigned-off-by: NJohn W. Linville <linville@tuxdriver.com>
      cb00ec38
    • M
      ath9k: tx queue enable is read only for EDMA chipsets · 98f0a5eb
      Mohammed Shafi Shajakhan 提交于
      for EDMA chip AR_Q_TXE (tx enable for each queue) is read only
      Signed-off-by: NMohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      98f0a5eb
    • C
    • R
      ath9k_hw: increase tx status ring buffer size · 016c2177
      Rajkumar Manoharan 提交于
      AR9003 chips read tx status from ring buffer whose max number of
      status descriptor is mininal compared to max number of tx buffers.
      On a stress condition, it can be easily overflown which might cause
      false tx hung detection. Though increasing number of max status
      descriptors consumes more memory, it helps to avoid false positive
      chip resets.
      
      Cc: Paul Stewart <pstew@google.com>
      Signed-off-by: NRajkumar Manoharan <rmanohar@qca.qualcomm.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      016c2177
    • L
      ath9k: make ath_mci_duty_cycle static · 6ec414fd
      Luis R. Rodriguez 提交于
      This fixes this sparse warning:
      
        CHECK   drivers/net/wireless/ath/ath9k/mci.c
      drivers/net/wireless/ath/ath9k/mci.c:23:4: warning: symbol 'ath_mci_duty_cycle' was not declared. Should it be static?
      Signed-off-by: NLuis R. Rodriguez <mcgrof@qca.qualcomm.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      6ec414fd
    • L
      ath9k_hw: fix sparse complaint on ar9003_switch_com_spdt_get() · a98aa7ae
      Luis R. Rodriguez 提交于
      This fixes this sparse complaint:
      
      make C=2 CF="-D__CHECK_ENDIAN__" M=drivers/net/wireless/ath/
      
        CHECK   drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
      drivers/net/wireless/ath/ath9k/ar9003_eeprom.c:3544:21: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/ath/ath9k/ar9003_eeprom.c:3544:21:    expected restricted __le32 [usertype] val
      drivers/net/wireless/ath/ath9k/ar9003_eeprom.c:3544:21:    got restricted __le16 [usertype] switchcomspdt
      drivers/net/wireless/ath/ath9k/ar9003_eeprom.c:3546:21: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/ath/ath9k/ar9003_eeprom.c:3546:21:    expected restricted __le32 [usertype] val
      drivers/net/wireless/ath/ath9k/ar9003_eeprom.c:3546:21:    got restricted __le16 [usertype] switchcomspdt
      
      The eep->modalHeader5G.switchcomspdt is a le16 and we return u16,
      so just return le16_to_cpu().
      
      Cc: Felix Fietkau <nbd@openwrt.org>
      Signed-off-by: NLuis R. Rodriguez <mcgrof@qca.qualcomm.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      a98aa7ae
    • L
      ath5k: avoid sparse warnings on tracing · 76ff9a61
      Luis R. Rodriguez 提交于
      Just skip the sparse checks on tracing.
      
        CHECK   drivers/net/wireless/ath/ath5k/base.c
      include/trace/../../drivers/net/wireless/ath/ath5k/trace.h:19:1: error: incompatible types for operation (<)
      include/trace/../../drivers/net/wireless/ath/ath5k/trace.h:19:1:    left side has type struct ath5k_hw *<noident>
      include/trace/../../drivers/net/wireless/ath/ath5k/trace.h:19:1:    right side has type int
      include/trace/../../drivers/net/wireless/ath/ath5k/trace.h:37:1: error: incompatible types for operation (<)
      include/trace/../../drivers/net/wireless/ath/ath5k/trace.h:37:1:    left side has type struct ath5k_hw *<noident>
      include/trace/../../drivers/net/wireless/ath/ath5k/trace.h:37:1:    right side has type int
      include/trace/../../drivers/net/wireless/ath/ath5k/trace.h:63:1: error: incompatible types for operation (<)
      include/trace/../../drivers/net/wireless/ath/ath5k/trace.h:63:1:    left side has type struct ath5k_hw *<noident>
      include/trace/../../drivers/net/wireless/ath/ath5k/trace.h:63:1:    right side has type int
      /home/mcgrof/wireless-testing/arch/x86/include/asm/jump_label.h:16:9: error: bad asm output
      /home/mcgrof/wireless-testing/arch/x86/include/asm/jump_label.h:16:9: error: bad asm output
      /home/mcgrof/wireless-testing/arch/x86/include/asm/jump_label.h:16:9: error: bad asm output
      /home/mcgrof/wireless-testing/arch/x86/include/asm/jump_label.h:16:9: error: bad asm output
        CC [M]  drivers/net/wireless/ath/ath5k/base.o
      Signed-off-by: NLuis R. Rodriguez <mcgrof@qca.qualcomm.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      76ff9a61
    • L
      ath9k: fix tx queue sparse complaint · 1512a486
      Luis R. Rodriguez 提交于
      This fixes this rant from sparse:
      
        CHECK   drivers/net/wireless/ath/ath9k/xmit.c
      drivers/net/wireless/ath/ath9k/xmit.c:107:13: warning: context imbalance in 'ath_txq_lock' - wrong count at exit
      drivers/net/wireless/ath/ath9k/xmit.c:112:13: warning: context imbalance in 'ath_txq_unlock' - unexpected unlock
      drivers/net/wireless/ath/ath9k/xmit.c:123:30: warning: context imbalance in 'ath_txq_unlock_complete' - unexpected unlock
        CC [M]  drivers/net/wireless/ath/ath9k/xmit.
      Signed-off-by: NLuis R. Rodriguez <mcgrof@qca.qualcomm.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      1512a486
    • L
      ath9k_hw: fix sparse warnings on ar9003_rtt.c · e01ff34e
      Luis R. Rodriguez 提交于
      This fixes these sparse warnings:
      
        CHECK   drivers/net/wireless/ath/ath9k/ar9003_rtt.c
      drivers/net/wireless/ath/ath9k/ar9003_rtt.c:36:6: warning: symbol 'ar9003_hw_rtt_enable' was not declared. Should it be static?
      drivers/net/wireless/ath/ath9k/ar9003_rtt.c:41:6: warning: symbol 'ar9003_hw_rtt_disable' was not declared. Should it be static?
      drivers/net/wireless/ath/ath9k/ar9003_rtt.c:46:6: warning: symbol 'ar9003_hw_rtt_set_mask' was not declared. Should it be static?
      drivers/net/wireless/ath/ath9k/ar9003_rtt.c:52:6: warning: symbol 'ar9003_hw_rtt_force_restore' was not declared. Should it be static?
      drivers/net/wireless/ath/ath9k/ar9003_rtt.c:102:6: warning: symbol 'ar9003_hw_rtt_load_hist' was not declared. Should it be static?
      drivers/net/wireless/ath/ath9k/ar9003_rtt.c:135:6: warning: symbol 'ar9003_hw_rtt_fill_hist' was not declared. Should it be static?
      drivers/net/wireless/ath/ath9k/ar9003_rtt.c:143:6: warning: symbol 'ar9003_hw_rtt_clear_hist' was not declared. Should it be stati
      Signed-off-by: NLuis R. Rodriguez <mcgrof@qca.qualcomm.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      e01ff34e
  6. 04 1月, 2012 1 次提交
    • M
      ath9k: Fix kernel panic in AR2427 in AP mode · b25bfda3
      Mohammed Shafi Shajakhan 提交于
      don't do aggregation related stuff for 'AP mode client power save
      handling' if aggregation is not enabled in the driver, otherwise it
      will lead to panic because those data structures won't be never
      intialized in 'ath_tx_node_init' if aggregation is disabled
      
      	EIP is at ath_tx_aggr_wakeup+0x37/0x80 [ath9k]
      	EAX: e8c09a20 EBX: f2a304e8 ECX: 00000001 EDX: 00000000
      	ESI: e8c085e0 EDI: f2a304ac EBP: f40e1ca4 ESP: f40e1c8c
      	DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
      	Process swapper/1 (pid: 0, ti=f40e0000 task=f408e860
      	task.ti=f40dc000)
      	Stack:
      	0001e966 e8c09a20 00000000 f2a304ac e8c085e0 f2a304ac
      	f40e1cb0 f8186741
      	f8186700 f40e1d2c f922988d f2a304ac 00000202 00000001
      	c0b4ba43 00000000
      	0000000f e8eb75c0 e8c085e0 205b0001 34383220 f2a304ac
      	f2a30000 00010020
      	Call Trace:
      	[<f8186741>] ath9k_sta_notify+0x41/0x50 [ath9k]
      	[<f8186700>] ? ath9k_get_survey+0x110/0x110 [ath9k]
      	[<f922988d>] ieee80211_sta_ps_deliver_wakeup+0x9d/0x350
      	[mac80211]
      	[<c018dc75>] ? __module_address+0x95/0xb0
      	[<f92465b3>] ap_sta_ps_end+0x63/0xa0 [mac80211]
      	[<f9246746>] ieee80211_rx_h_sta_process+0x156/0x2b0
      	[mac80211]
      	[<f9247d1e>] ieee80211_rx_handlers+0xce/0x510 [mac80211]
      	[<c018440b>] ? trace_hardirqs_on+0xb/0x10
      	[<c056936e>] ? skb_queue_tail+0x3e/0x50
      	[<f9248271>] ieee80211_prepare_and_rx_handle+0x111/0x750
      	[mac80211]
      	[<f9248bf9>] ieee80211_rx+0x349/0xb20 [mac80211]
      	[<f9248949>] ? ieee80211_rx+0x99/0xb20 [mac80211]
      	[<f818b0b8>] ath_rx_tasklet+0x818/0x1d00 [ath9k]
      	[<f8187a75>] ? ath9k_tasklet+0x35/0x1c0 [ath9k]
      	[<f8187a75>] ? ath9k_tasklet+0x35/0x1c0 [ath9k]
      	[<f8187b33>] ath9k_tasklet+0xf3/0x1c0 [ath9k]
      	[<c0151b7e>] tasklet_action+0xbe/0x180
      
      Cc: stable@kernel.org
      Cc: Senthil Balasubramanian <senthilb@qca.qualcomm.com>
      Cc: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
      Reported-by: NAshwin Mendonca <ashwinloyal@gmail.com>
      Tested-by: NAshwin Mendonca <ashwinloyal@gmail.com>
      Signed-off-by: NMohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      b25bfda3
  7. 03 1月, 2012 7 次提交
  8. 23 12月, 2011 4 次提交
    • S
      ath6kl: Fix panic when setting a channel · e68f6750
      Sujith Manoharan 提交于
      cfg80211 could pass a NULL net_device to the driver via the
      set_channel() callback, when it receives a request to set the
      device's channel. Not handling this case properly results in this panic:
      
      BUG: unable to handle kernel NULL pointer dereference at 0000000000000cb0
      IP: [<ffffffffa0374e49>] ath6kl_cfg80211_ready+0x9/0x70 [ath6kl_sdio]
      
      Call Trace:
      [<ffffffffa0374ed7>] ath6kl_set_channel+0x27/0x90 [ath6kl_sdio]
      [<ffffffffa04dfd5f>] cfg80211_set_freq+0xff/0x1d0 [cfg80211]
      [<ffffffffa04d3275>] ? nl80211_set_wiphy+0x85/0x660 [cfg80211]
      [<ffffffffa04d3198>] __nl80211_set_channel.isra.39+0x118/0x140 [cfg80211]
      [<ffffffffa04d34f3>] nl80211_set_wiphy+0x303/0x660 [cfg80211]
      [<ffffffff813678d7>] ? rtnl_lock+0x17/0x20
      [<ffffffffa04ca165>] ? nl80211_pre_doit+0xb5/0x150 [cfg80211]
      [<ffffffff81382a45>] genl_rcv_msg+0x1d5/0x250
      [<ffffffff81382870>] ? genl_rcv+0x40/0x40
      [<ffffffff81381be9>] netlink_rcv_skb+0xa9/0xd0
      [<ffffffff81382855>] genl_rcv+0x25/0x40
      [<ffffffff811354f0>] ? might_fault+0x40/0x90
      [<ffffffff81381519>] netlink_unicast+0x2d9/0x320
      [<ffffffff813818e6>] netlink_sendmsg+0x2c6/0x320
      [<ffffffff81343800>] ? sock_update_classid+0xb0/0x110
      [<ffffffff8133f52e>] sock_sendmsg+0x10e/0x130
      [<ffffffff81169933>] ? mem_cgroup_update_page_stat+0x193/0x250
      [<ffffffff811354f0>] ? might_fault+0x40/0x90
      [<ffffffff811354f0>] ? might_fault+0x40/0x90
      [<ffffffff81135539>] ? might_fault+0x89/0x90
      [<ffffffff811354f0>] ? might_fault+0x40/0x90
      [<ffffffff8134d126>] ? verify_iovec+0x56/0xd0
      [<ffffffff8133f9e6>] __sys_sendmsg+0x396/0x3b0
      [<ffffffff8108e823>] ? up_read+0x23/0x40
      [<ffffffff81040e68>] ? do_page_fault+0x208/0x4e0
      [<ffffffff81193151>] ? vfsmount_lock_local_unlock+0x21/0x60
      [<ffffffff811947d0>] ? mntput_no_expire+0x30/0xe0
      [<ffffffff8119489f>] ? mntput+0x1f/0x30
      [<ffffffff81342149>] sys_sendmsg+0x49/0x90
      [<ffffffff81425482>] system_call_fastpath+0x16/0x1b
      Signed-off-by: NSujith Manoharan <c_manoha@qca.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      e68f6750
    • K
      ath6kl: add support for FW API 3 · 65a8b4cc
      Kalle Valo 提交于
      As firmware starting from 3.2.0.12 has some API changes and doesn't work
      with older versions of ath6kl we need to bump up the API version. This
      way we don't break anything.
      
      Also store which version of API is used and print that during boot:
      
      ath6kl: ar6003 hw 2.1.1 sdio fw 3.2.0.13 api 3
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      65a8b4cc
    • K
      ath6kl: handle firmware names more dynamically · c0038972
      Kalle Valo 提交于
      Currently ath6kl has just hardcoded paths to each firmware file. Change
      this more dynamic by separating the the directory and file name from each
      other. That way it's easier to dynamically create full paths to firmware and
      code looks better. And now it's possible to remove a function needed by
      devicetree code.
      
      While at it add a structure inside struct ath6kl_hw to contain all
      firmware names. I deliberately omitted board file support as
      those will be handled later.
      
      This is needed for firmware API 3.
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      c0038972
    • R
      ath6kl: Send own IP addr to the firmware during WOW suspend · c08631c6
      Raja Mani 提交于
      Firmware ARP module requires own IP addr in order to respond
      to the outside world when the target is in WOW suspend state.
      
      At present, firmware ARP module has capability to hold 2 IP addr.
      So, WOW mode will be disabled if the total IP addr configured in
      net_dev for our device is greater than firmware limit (MAX_IP_ADDRS)
      which is 2 at this moment.
      Signed-off-by: NRaja Mani <rmani@qca.qualcomm.com>
      Signed-off-by: NThirumalai Pachamuthu <tpachamu@qca.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      c08631c6