1. 07 3月, 2012 4 次提交
    • R
      ath6kl: Set optimal listen intvl,bmiss,scan params while going to wow suspend · ce0dc0cf
      Raja Mani 提交于
      * In order to save the target power in WOW suspend state,
        configure the best optimal values for the below parameters,
           - listen interval.
           - beacon miss interval.
           - scan parameters.
      
        Default values for above attributes are reverted in
        wow resume operation.
      
      * The default listen interval is set before the host issue
        connect request.
      
      * New function is added to configure beacon miss count.
      
      kvalo: minor changes to fix open parenthesis alignment
      Signed-off-by: NRaja Mani <rmani@qca.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      ce0dc0cf
    • R
      ath6kl: Maintain the listen interval per VIF specific · 8f46fccd
      Raja Mani 提交于
      Firmware has the option to support the listen interval
      per vif specific. Fix this.
      
      Listen interval can be set by the TUs or by the number
      of beacons. Current code enables the user to configure
      the listen interval in the unit of 'number of beacons'
      using debugfs entry "listen_interval". Going forward,
      we need to alter the listen interval in the unit of TUs
      to get good power numbers while going to WOW suspend/resume.
      
      Allowing the user to change the listen interval in
      the unit of "number of beacons"  in debugfs and changing
      listen interval in wow suspend/resume in the unit of
      time (TUs) would lead us to confuse.
      
      This patch make sures the listen interval is changed only
      in the unit of time (TUs).
      Signed-off-by: NRaja Mani <rmani@qca.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      8f46fccd
    • 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
    • R
      ath6kl: Add provision to define suspend policy in disconnected state. · 1e9a905d
      Raja Mani 提交于
      It gives flexibility to the user to define suspend policy
      when the suspend mode is set to WOW and the device is in
      disconnected state at the time of suspend.
      
      New module parameter wow_mode is added to get the choice
      from the user. This parameter is valid only if the module
      parameter suspend_mode is set to WOW.
      
      To force WOW in connected state and cut power
      in disconnected state:
        suspend_mode=0x3 wow_mode=0x1
      
      To force WOW in connected state and deep sleep
      in disconnected state (this is also the default wow_mode):
         suspend_mode=0x3 wow_mode=0x2
      
      If there is no value specified to wow_mode during insmod,
      deep sleep mode will be tried in the disconnected state.
      
      kvalo: clarified commit log
      Signed-off-by: NRaja Mani <rmani@qca.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      1e9a905d
  2. 01 3月, 2012 1 次提交
  3. 28 2月, 2012 1 次提交
  4. 27 2月, 2012 1 次提交
  5. 08 2月, 2012 3 次提交
  6. 31 1月, 2012 4 次提交
    • R
      ath6kl: Wait for host sleep mode cmd processed event during WOW suspend · 081c7a84
      Raja Mani 提交于
      For every WMI_SET_HOST_SLEEP_MODE_CMDID command (send from the host),
      the firmware sends WMI_SET_HOST_SLEEP_MODE_CMD_PROCESSED_EVENTID as
      an acknowledgement to the host.
      
      In order to being sync with the firmware, the host has to wait for
      WMI_SET_HOST_SLEEP_MODE_CMD_PROCESSED_EVENT event before going to
      the suspend state. This patch ensures ath6kl_wow_suspend() waits
      until it gets this event after sending set host sleep mode command.
      
      This patch adds,
       * New command WMI_SET_HOST_SLEEP_MODE_CMD_PROCESSED_EVENTID in
         WMI event table.
       * New WMI function ath6kl_wmi_host_sleep_mode_cmd_prcd_evt_rx()
         to process the event.
       * New flag HOST_SLEEP_MODE_CMD_PROCESSED in VIF flags to record
         the arrival of the event.
      Signed-off-by: NRaja Mani <rmani@qca.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      081c7a84
    • R
      ath6kl: Re-architect suspend mode handling in ath6kl_sdio_suspend · e390af77
      Raja Mani 提交于
      Using this patch, the user can bypass existing auto
      suspend mode selection logic and force ath6kl to enter
      into the suspend mode what he/she wants.
      
      If the user doesn't choose any suspend mode while doing
      insmod of the driver, auto suspend mode selection logic
      will kick in and choose suspend mode based on the host
      SDIO controller capability.
      
      Generic module parameter is required to specify suspend
      mode including Deep Sleep and WOW while doing insmod.
      Renaming existing mod param variable suspend_cutpower
      would be sufficient to meet this requirement.
      
      New module parameter suspend_mode can take any one of
      the below suspend state,
         1. cut power
         2. deep sleep
         3. wow
      Signed-off-by: NRaja Mani <rmani@qca.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      e390af77
    • 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
    • K
      ath6kl: fix testmode when fw-2.bin or fw-3.bin is used · 5f1127ff
      Kalle Valo 提交于
      Testmode (TCMD and ART) was not enabled when fw-2.bin or fw-3.bin files
      were available, fix that by fetching testmode file just after the
      board file but before rest of the firmware files are fetched.
      
      I also added testmode field to struct ath6kl and moved the module parameter
      to core.c. Now all module parameters are grouped in one place.
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      5f1127ff
  7. 24 1月, 2012 2 次提交
  8. 18 1月, 2012 4 次提交
  9. 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
  10. 12 1月, 2012 1 次提交
    • 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
  11. 09 1月, 2012 1 次提交
  12. 23 12月, 2011 2 次提交
    • 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
  13. 15 12月, 2011 2 次提交
    • A
      ath6kl: support for P2P mgmt operations on station interface · 3ca9d1fc
      Aarthi Thiruvengadam 提交于
      This patch enables support for doing P2P management operations like device
      discovery on top of a station interface. After group formation, the station
      interface will become a P2P GO/client interface as the case may be.
      
      This feature requires modifications to a couple of existing WMI structures and
      therefore new command ids and structures have been defined in order to be
      compatible with older firmware versions and other chips. The exception here is
      the wmi_connect_cmd. Adding a new field to the end of the structure will not
      cause any issues with previous firmware versions since firmware only checks for
      minimum length of the command. The other structures are of variable length,
      hence it was not possible to add new fields to the end.
      
      The new command ids have to be added to the end of enum wmi_cmd_id, so it has
      updated to match the firmware.
      
      The driver will support both the 'old' and the 'new' commands for a while by
      checking the firmware capabilities.
      Signed-off-by: NAarthi Thiruvengadam <athiruve@qca.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      3ca9d1fc
    • R
      ath6kl: Support different uart_tx pin and refclk configuration · 39586bf2
      Ryan Hsu 提交于
      AR6003 family use uart_tx=8 and refclk=26Mhz by default, and AR6004 family
      uses different uart_tx pin and could also support various xtal source,
      moves these per hw configuration.
      Signed-off-by: NRyan Hsu <ryanhsu@qca.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      39586bf2
  14. 13 12月, 2011 2 次提交
  15. 24 11月, 2011 1 次提交
  16. 22 11月, 2011 1 次提交
  17. 16 11月, 2011 8 次提交
  18. 13 11月, 2011 1 次提交