1. 08 3月, 2012 1 次提交
  2. 07 3月, 2012 1 次提交
    • R
      ath6kl: Check wow state before sending control and data pkt · 390a8c8f
      Raja Mani 提交于
      Below two scenarios are taken care in this patch which helped
      to fix the firmware crash during wow suspend/resume.
      
      * TX operation (ctrl tx and data tx) has to be controlled based
        on suspend state. i.e, with respect to WOW mode, control packets
        are allowed to send from the host until the suspend state goes
        ATH6KL_STATE_WOW and the data packets are allowed until WOW
        suspend operation starts.
      
      * Similarly, wow resume is NOT allowed if WOW suspend is in progress.
      Signed-off-by: NRaja Mani <rmani@qca.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      390a8c8f
  3. 01 3月, 2012 1 次提交
  4. 28 2月, 2012 1 次提交
    • C
      ath6kl: assign Tx packet drop threshold per endpoint based on AC priority · 0ea10f2b
      Chilam Ng 提交于
      Tx packets will begin to drop when there are multiple traffic priorities
      and the current traffic is not the highest priority and the remaining
      cookies drop below a certain number, which is fixed for all AC. It is
      possilbe that lower priority AC have more traffic which will consume
      more cookies and lock out higher priority AC from having any. Assign
      each endpoint (AC) with a different Tx-packet-drop threshold so lower
      priority AC is more likely to drop packets and the cookies become more
      available to higher priority AC.
      Signed-off-by: NChilam Ng <chilamng@qca.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      0ea10f2b
  5. 27 2月, 2012 1 次提交
  6. 08 2月, 2012 1 次提交
  7. 31 1月, 2012 1 次提交
    • V
      ath6kl: Fix kernel panic during rx aggregation · c8651541
      Vasanthakumar Thiagarajan 提交于
      "ath6kl: Define a structure for connection specific aggregation information"
      introduces this. In aggr_conn_init(), vif->aggr_cntxt is assigned to
      aggr_conn->aggr_info, but vif->aggr_cntxt is not initialized at this
      point, this would end up accessing an invalid pointer in aggregation
      receive path. Fix this by passing the correct aggr_info to aggr_conn_init().
      The panic trace would look like.
      
      [<ffffffff8159e02e>] panic+0xa1/0x1c6
      [<ffffffff8103773d>] ? kmsg_dump+0xfd/0x160
      [<ffffffff815a2f6a>] oops_end+0xea/0xf0
      [<ffffffff8102b95d>] no_context+0x11d/0x2d0
      [<ffffffff8102bc5d>] __bad_area_nosemaphore+0x14d/0x230
      [<ffffffff815a5c4d>] ? do_page_fault+0x30d/0x520
      [<ffffffff8102bd53>] bad_area_nosemaphore+0x13/0x20
      [<ffffffff815a5cfd>] do_page_fault+0x3bd/0x520
      [<ffffffff8108bd60>] ? __lock_acquire+0x320/0x1680
      [<ffffffff812e3a9d>] ? trace_hardirqs_off_thunk+0x3a/0x3c
      [<ffffffff815a2385>] page_fault+0x25/0x30
      [<ffffffffa0487a5f>] ? aggr_slice_amsdu+0xdf/0x170 [ath6kl_core]
      [<ffffffffa0487bac>] aggr_deque_frms+0xbc/0x190 [ath6kl_core]
      [<ffffffffa0488404>] ath6kl_rx+0x3e4/0xae0 [ath6kl_core]
      [<ffffffffa047ae77>] ath6kl_htc_rxmsg_pending_handler+0x8b7/0xf10 [ath6kl_core]
      [<ffffffffa00c82f0>] ? mmc_do_release_host+0x70/0x90 [mmc_core]
      [<ffffffffa00c833a>] ? mmc_release_host+0x2a/0x50 [mmc_core]
      [<ffffffffa04865c0>] ? ath6kl_alloc_amsdu_rxbuf+0x140/0x140 [ath6kl_core]
      [<ffffffffa0477772>] ath6kl_hif_intr_bh_handler+0x362/0x510 [ath6kl_core]
      [<ffffffffa01f1000>] ath6kl_sdio_irq_handler+0x60/0xb0 [ath6kl_sdio]
      [<ffffffffa00d30bc>] sdio_irq_thread+0xec/0x320 [mmc_core]
      [<ffffffffa00d2fd0>] ? sdio_claim_irq+0x220/0x220 [mmc_core]
      [<ffffffffa00d2fd0>] ? sdio_claim_irq+0x220/0x220 [mmc_core]
      [<ffffffff8105b21e>] kthread+0xbe/0xd0
      [<ffffffff815ab574>] kernel_thread_helper+0x4/0x10
      [<ffffffff815a2174>] ? retint_restore_args+0x13/0x13
      [<ffffffff8105b160>] ? __init_kthread_worker+0x70/0x70
      [<ffffffff815ab570>] ? gs_change+0x13/0x13
      Signed-off-by: NVasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      c8651541
  8. 24 1月, 2012 4 次提交
  9. 18 1月, 2012 1 次提交
  10. 13 1月, 2012 1 次提交
    • 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
  11. 03 1月, 2012 2 次提交
  12. 16 11月, 2011 1 次提交
  13. 13 11月, 2011 2 次提交
    • V
      ath6kl: Fix packet drop when ath6kl_cookie runs out · 901db39c
      Vasanthakumar Thiagarajan 提交于
      "ath6kl: Maintain virtual interface in a list" mistakenly stops the
      netq only when the mode is ibss. This causes packet drops in sta mode
      when the available cookies (buffer abstraction in ath6kl and also used
      for tx throttling) runs out for the highest priority traffic. This patch
      just fixes this regression though the original code may still need fixes
      which can be addressed in separate patches.
      Reported-by: NKalle Valo <kvalo@qca.qualcomm.com>
      Signed-off-by: NVasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      901db39c
    • V
      ath6kl: Fix accessing wrong skb->data in ath6kl_tx_complete() · f3803eb2
      Vasanthakumar Thiagarajan 提交于
      When buffer alignmnet is applied, the data pointer of skb taken from
      cookie will no longer point to the first byte of the actual data.
      But the skb->data pointer is used in ath6kl_tx_complete() to get
      the index of the virtual interface which will not give the correct
      interface index and sometimes may give the following WARN_ON() message.
      Use packet->buf instead of skb->data to fix this.
      
      WARNING: at drivers/net/wireless/ath/ath6kl/wmi.c:88 ath6kl_get_vif_by_index+0x5b/0x60 [ath6kl]()
      Hardware name: 2842K3U
      Modules linked in: ath6kl mmc_block cfg80211 binfmt_misc ppdev nfs nfsd lockd nfs_acl auth_rpcgss sunrpc exportfs snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_intel
      +snd_hda_codec snd_hwdep snd_pcm_oss snd_mixer_oss snd_pcm snd_seq_dummy thinkpad_acpi snd_seq_oss snd_seq_midi snd_rawmidi joydev fbcon tileblit font bitblit softcursor
      +snd_seq_midi_event snd_seq snd_timer snd_seq_device i915 uvcvideo drm_kms_helper drm psmouse serio_raw snd i2c_algo_bit sdhci_pci videodev intel_agp soundcore intel_gtt jmb38x_ms
      +memstick sdhci snd_page_alloc nvram lp parport agpgart video ahci r8169 mii libahci [last unloaded: ath6kl]
      Pid: 15482, comm: kworker/u:1 Tainted: G        W   3.1.0-rc10-wl+ #2
      Call Trace:
       [<c0144d72>] warn_slowpath_common+0x72/0xa0
       [<fb7c94fb>] ? ath6kl_get_vif_by_index+0x5b/0x60 [ath6kl]
       [<fb7c94fb>] ? ath6kl_get_vif_by_index+0x5b/0x60 [ath6kl]
       [<c0144dc2>] warn_slowpath_null+0x22/0x30
       [<fb7c94fb>] ath6kl_get_vif_by_index+0x5b/0x60 [ath6kl]
       [<fb7c7028>] ath6kl_tx_complete+0x128/0x4d0 [ath6kl]
       [<c04df920>] ? mmc_request_done+0x80/0x80
       [<fb7b9e2e>] htc_tx_complete+0x5e/0x70 [ath6kl]
       [<c05e4cf6>] ? _raw_spin_unlock_bh+0x16/0x20
       [<fb7ce588>] ? ath6kl_sdio_scatter_req_add+0x48/0x60 [ath6kl]
       [<fb7b9f42>] htc_async_tx_scat_complete+0xb2/0x120 [ath6kl]
       [<fb7ce9e7>] ath6kl_sdio_scat_rw+0x87/0x370 [ath6kl]
       [<c0101e12>] ? __switch_to+0xd2/0x190
       [<c01397b5>] ? finish_task_switch+0x45/0xd0
       [<c05e272e>] ? __schedule+0x3ae/0x8b0
       [<fb7cf00a>] ath6kl_sdio_write_async_work+0x4a/0xf0 [ath6kl]
       [<c015d266>] process_one_work+0x116/0x3c0
       [<fb7cefc0>] ? ath6kl_sdio_read_write_sync+0xb0/0xb0 [ath6kl]
       [<c015f5b0>] worker_thread+0x140/0x3b0
       [<c015f470>] ? manage_workers+0x1f0/0x1f0
       [<c0163424>] kthread+0x74/0x80
       [<c01633b0>] ? kthread_worker_fn+0x160/0x160
       [<c05ebdc6>] kernel_thread_helper+0x6/0x10
      Reported-by: NAarthi Thiruvengadam <athiruve@qca.qualcomm.com>
      Signed-off-by: NVasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      f3803eb2
  14. 11 11月, 2011 16 次提交
  15. 29 9月, 2011 1 次提交
    • K
      ath6kl: add prefix parameter to ath6kl_dbg_dump() · ef094103
      Kalle Valo 提交于
      Makes it easier to recognise longs dumps.
      
      Obligatory screenshot using "rx" prefix:
      
      ath6kl: ath6kl_rx
      rx 00000000: 10 10 00 00 00 00 08 30 00 00 00 00 00 00 f9 0b  .......0........
      rx 00000010: 2c 44 08 30 00 00 f9 0b 0c a4 02 00 00 00 73 d2  ,D.0..........s.
      rx 00000020: 94 00 f9 0b 04 8c 01 00 02 00 07 02 02 00 f9 0b  ................
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      ef094103
  16. 28 9月, 2011 1 次提交
    • J
      ath6kl: fix TCP corruption · 00b1edf1
      Jouni Malinen 提交于
      Commit 94e532d1 ("ath6kl: Fix system freeze under heavy data load")
      aligns the skb data without checking if the skb is cloned. Because of
      this ath6kl can corrupt the local TCP stack information that can result
      in TCP retransmission failing and TCP connections stalling.
      
      To avoid the corruption we need to copy the skb. Now the alignment
      in ath6kl_htc_tx_buf_align() doesn't corrupt TCP packets anymore (and is
      not even used for the cloned skb's that got copied since the alignment
      of the data is handled at the copy time).
      Signed-off-by: NJouni Malinen <jouni@qca.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      00b1edf1
  17. 23 9月, 2011 1 次提交
    • K
      ath6kl: pass only unicast frames for aggregation · 5694f962
      Kalle Valo 提交于
      When pinging form ar6003 to the AP RTT was high even when power save was
      disabled:
      
      100 packets transmitted, 97 received, 3% packet loss, time 99125ms
      rtt min/avg/max/mdev = 1.875/46.733/795.506/139.181 ms
      
      After some investigation one reason for this was that received
      multicast traffic confused the aggrecation logic and caused 400 ms
      timeouts when receiving multicast frames from AP.
      
      A simple way to fix is to pass only unicast frames for aggregation. This
      improves RTT:
      
      100 packets transmitted, 99 received, 1% packet loss, time 99144ms
      rtt min/avg/max/mdev = 2.083/13.084/403.390/56.794 ms
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      5694f962
  18. 31 8月, 2011 3 次提交