1. 01 Mar, 2012 4 commits
  2. 28 Feb, 2012 5 commits
  3. 27 Feb, 2012 4 commits
  4. 08 Feb, 2012 6 commits
  5. 02 Feb, 2012 3 commits
  6. 31 Jan, 2012 1 commit
  7. 30 Jan, 2012 6 commits
    • Raja Mani's avatar
      ath6kl: Return a proper error code when not in connected state · 3c411a43
      Raja Mani authored
      Error code ENOTCONN is more suitable than EINVAL to report
      when the driver is not in connected state in ath6kl_wow_suspend().
      
      I found this during code review.
      Signed-off-by: default avatarRaja Mani <rmani@qca.qualcomm.com>
      Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
      3c411a43
    • Raja Mani's avatar
      ath6kl: Wait for host sleep mode cmd processed event during WOW suspend · 081c7a84
      Raja Mani authored
      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: default avatarRaja Mani <rmani@qca.qualcomm.com>
      Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
      081c7a84
    • Raja Mani's avatar
      ath6kl: Configure WOW patterns while going to wow_suspend · d91e8eee
      Raja Mani authored
      First preference is given to the user configured WOW patterns.
      If the user doesn't configure any patterns (for ex, via iw command),
      the default patterns will be configured based on the current mode
      (vif->nw_type) while going to WOW suspend.
      
      Summary of changes:
      
        * ath6kl_wow_ap() is added to configure the below default
          patterns when the system enters into WOW suspend in AP mode.
            + Unicast IP, EAPOL-like and ARP packet pattern
            + ARP packet pattern
            + mDNS/SSDP/LLMNR pattern
            + DHCP broadcast pattern
      
       * ath6kl_wow_sta() is added to configure the below default
         patterns when the system enters into WOW suspend in STA mode.
            + Unicast packet pattern
            + mDNS/SSDP/LLMNR pattern
      
        * Move the user provided WOW patterns configuration code
          from ath6kl_wow_suspend() to a separate function called
          ath6kl_wow_usr().
      
        * Two argument variable's ('filter' and 'mask) data type in
          ath6kl_wmi_add_wow_pattern_cmd() are changed from 'u8 *' to
          'const u8 *'. This is needed to make all pattern and mask
          arrays to be 'static const u8' in the caller function.
      
        * New conditional check is added to make sure user
          configured pattern count is within the limit (WOW_MAX_FILTERS_PER_LIST).
      Signed-off-by: default avatarRaja Mani <rmani@qca.qualcomm.com>
      Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
      d91e8eee
    • Raja Mani's avatar
      ath6kl: Re-architect suspend mode handling in ath6kl_sdio_suspend · e390af77
      Raja Mani authored
      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: default avatarRaja Mani <rmani@qca.qualcomm.com>
      Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
      e390af77
    • Vasanthakumar Thiagarajan's avatar
      ath6kl: Fix kernel panic during rx aggregation · c8651541
      Vasanthakumar Thiagarajan authored
      "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: default avatarVasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
      Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
      c8651541
    • Kalle Valo's avatar
      ath6kl: fix testmode when fw-2.bin or fw-3.bin is used · 5f1127ff
      Kalle Valo authored
      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: default avatarKalle Valo <kvalo@qca.qualcomm.com>
      5f1127ff
  8. 24 Jan, 2012 6 commits
  9. 18 Jan, 2012 5 commits
    • Kalle Valo's avatar
      ath6kl: add back beginnings of USB support · 241b128b
      Kalle Valo authored
      John Linville had to revert the part of USB support which was already
      in ath6kl due to build problems in commit cb00ec38 ("ath6kl: revert
      USB support"). Now that I fixed the build problems properly by adding
      ath6kl_core.ko kernel module it's possible to add back the
      (incomplete) USB support. This patch is a revert of John's patch and
      adds back the USB code which as already in ath6kl, only difference
      being minor changes in Makefile and adapting usb.c to new core
      function names.
      
      Note that USB support in ath6kl is not complete yet. This code only
      makes it possible to boot firmware but as HTC layer does not yet
      support USB it's not possible to send any WMI commands nor data
      packets to the firmware. That will be added soon.
      Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
      241b128b
    • Kalle Valo's avatar
      ath6kl: create ath6kl_core.ko · d6a434d6
      Kalle Valo authored
      Now ath6kl is ready for splitting core code to ath6kl_core.ko module.
      This also makes it possible to link both sdio and usb code to kernel
      at the same time, which earlier failed miserably.
      Reported-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
      Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
      d6a434d6
    • Kalle Valo's avatar
      ath6kl: convert ath6kl_dbg() and ath6kl_dbg_dump() into functions · 3b1b7d09
      Kalle Valo authored
      That way it's possible to not export debug_mask outside the upcoming
      ath6kl_core.ko and that makes it easier to ath6kl_core.ko in the
      following patch.
      Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
      3b1b7d09
    • Kalle Valo's avatar
      ath6kl: get rid of AR_DBG_LVL_CHECK() · 5afa5aa7
      Kalle Valo authored
      We don't need it as debug calls already have a log level and compiler
      should be smart enough to optimise away the code when ath6kl debug code
      is not enabled. Also it makes it easier to abstract core code to
      ath6kl_core.ko.
      
      In ath6kl_dump_registers() I had to change the debug level from ANY to IRQ
      as I removed the AR_DBG_LVL_CHECK() check before calling the function.
      Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
      5afa5aa7
    • Kalle Valo's avatar
      ath6kl: create core.c · 45eaa78f
      Kalle Valo authored
      Currently core functions are spread between various files, group all
      the functions into file and rename the functions to follow the style
      used elsewhere in the driver. This will make it easier to a separate core
      module.
      
      Also fix a bug where wiphy is freed too early.
      Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
      45eaa78f