1. 11 12月, 2012 5 次提交
    • A
      wlcore: don't take mutex before stopping queues · d6037d22
      Arik Nemtsov 提交于
      Protect all functions touching queue_stop_reasons by spin-lock, since
      they are accessed by op_tx. Now there's no need to take the mutex
      before caling wlcore_queue_xxx functions.
      Signed-off-by: NArik Nemtsov <arik@wizery.com>
      Signed-off-by: NLuciano Coelho <coelho@ti.com>
      d6037d22
    • A
      wlcore: use separate HW queue for each AC in each vif · 1c33db78
      Arik Nemtsov 提交于
      Start using the new hw_queue mechanism in mac80211 and give each AC in
      each vif its own hw_queue number. This allows us to stop an AC in a vif
      independently from other vifs.
      
      Change the Tx watermark handling functions to count packets per AC in
      vif. From now on fast links should not be able to hurt the throughput
      of slow links on the same AC but on different vifs.
      
      Change internal queue mgmt functions to operate per vif, to support the
      new Tx watermark granularity. Make the global versions of the queue
      stop/start functions to use the global mac80211 API for queue mgmt. This
      helps in situations where the driver currently doesn't know all the vifs
      that reside in mac80211. Recovery is a good example for such a case.
      
      [Moved hw_base_queue addition into the wlcore_tx_get_mac80211_queue()
      function; changed WARN_ONs to WARN_ON_ONCEs; simplified for loops;
      fixed new checkpatch warnings. -- Luca]
      Signed-off-by: NArik Nemtsov <arik@wizery.com>
      Signed-off-by: NLuciano Coelho <coelho@ti.com>
      1c33db78
    • A
      wlcore: use link count for single-STA-PSM optimization · 9a100968
      Arik Nemtsov 提交于
      Only allow a PSM STA to congest FW memory when it is the single active
      link. Being a single STA doesn't imply a single link - there might be
      other links on other roles.
      
      [Changed WARN_ON to WARN_ON_ONCE -- Luca]
      Signed-off-by: NArik Nemtsov <arik@wizery.com>
      Signed-off-by: NLuciano Coelho <coelho@ti.com>
      9a100968
    • A
      wlcore/wl18xx: change priority calculations for links · f1626fd8
      Arik Nemtsov 提交于
      Update the 18xx FW status private part to include Tx related link
      priorities. Introduce new HW ops to determine link priority per chip
      family.
      
      For 18xx the changes are:
      - Suspended links are at most low priority and Tx for them is stopped
        beyond the suspend threshold.
      - Active links now get their thresholds directly from FW
      - There's a new "stop" threshold for active links, at which point a link
        stops receiving new packets.
      
      Update the min 18xx FW version required to make sure suspended links
      bitmap is advertised by the FW.
      Signed-off-by: NArik Nemtsov <arik@wizery.com>
      Signed-off-by: NLuciano Coelho <coelho@ti.com>
      f1626fd8
    • A
      wlcore: remove support for injected Tx · f4d02007
      Arik Nemtsov 提交于
      Require each incoming packet to have a valid vif. The injected Tx code
      path was buggy (and unused), so disallow it altogether.
      
      Cleanup a few places and add a warning so we can better discover
      anomalies (corrupted skbs?) masquerading as injected Tx.
      Signed-off-by: NArik Nemtsov <arik@wizery.com>
      Signed-off-by: NLuciano Coelho <coelho@ti.com>
      f4d02007
  2. 05 12月, 2012 5 次提交
  3. 04 12月, 2012 1 次提交
  4. 27 11月, 2012 4 次提交
    • E
      wlcore: save session_id per-link · 978cd3a0
      Eliad Peller 提交于
      A new session_id is generated on link allocation.
      it is saved in a global array and used later, on tx.
      
      The new fw api adds new bcast/global_session_id
      fields to start_role(ap) command, and a new session_id
      field to add_peer command. align the driver with it.
      Signed-off-by: NEliad Peller <eliad@wizery.com>
      Signed-off-by: NLuciano Coelho <coelho@ti.com>
      978cd3a0
    • E
      wlcore: split 18xx and 12xx scan mechanism · 78e28062
      Eliad Peller 提交于
      The scan APIs of 12xx and 18xx are totally different.
      Use some common functions as much as possible (e.g.
      for setting scan channels), but split scan.c into
      chip-specific scan.c files, each implementing its
      own scan mechanism.
      
      (in other words - move most of the current wlcore's
      scan.c into wl12xx, and implement a similar mechanism
      in 18xx, according to the new api)
      
      New wlcore ops are introduced in order to call the
      chip-specific scan functions.
      
      The template indices used for each scan (regular/scheduled)
      are also different between the chips, so set the correct
      indices used for each scan type after identifying the chip.
      Signed-off-by: NEliad Peller <eliad@wizery.com>
      Signed-off-by: NLuciano Coelho <coelho@ti.com>
      78e28062
    • E
      wlcore: implement .remain_on_channel() callback · dabf37db
      Eliad Peller 提交于
      implement the reamin_on_channel() callback by starting
      a dev role (already associated with the current vif)
      on the requested channel/band.
      
      This channel is usually different from the channel
      of the sta role, so pass it to wl12xx_roc() as well,
      and notify mac80211 (async) when the fw is ready
      on the new channel.
      
      Now, in case of offchannel tx, we should use the dev
      role hlid, instead of the sta hlid.
      Signed-off-by: NEliad Peller <eliad@wizery.com>
      Reviewed-by: NArik Nemtsov <arik@wizery.com>
      Signed-off-by: NLuciano Coelho <coelho@ti.com>
      dabf37db
    • E
      wlcore: start sta role on CHANGED_BSSID · 3230f35e
      Eliad Peller 提交于
      Make the connection flow simpler by starting
      sta role on bssid change.
      
      Currently, we start dev role when going idle-off,
      and start the sta role only after association
      indication. This complicates the connection
      flow with some possible intermediate states.
      
      Make it simpler by starting sta role on bssid change,
      which now happens *before* auth req get sent.
      
      Update the handling of mac80211's notifications
      and change wl1271_join/unjoin accordingly -
      * Split wl1271_join() into wlcore_join (tuning on
        a channel/bssid) and wlcore_set_assoc (configure
        sta after association).
      * Rename wl1271_unjoin() to wlcore_unset_assoc(), as
        it is no longer the inversion of wl1271_join()
        (now it's only used to disconnect associated sta /
        joined ibss, without stopping the role).
      * Set ssid before starting station role (needed for
        start_role(sta)
      
      While on it, split wl1271_bss_info_changed_sta() into
      some sub-functions.
      
      since we no longer use dev role in the connection flow,
      we now always use the hlid of the sta role.
      Signed-off-by: NEliad Peller <eliad@wizery.com>
      Reviewed-by: NArik Nemtsov <arik@wizery.com>
      Signed-off-by: NLuciano Coelho <coelho@ti.com>
      3230f35e
  5. 27 9月, 2012 5 次提交
  6. 31 7月, 2012 2 次提交
  7. 18 7月, 2012 2 次提交
  8. 27 6月, 2012 1 次提交
    • E
      wlcore: fix broken TX due to wrong queuing of recovery · 7a50bdfb
      Eyal Shapira 提交于
      commit 14bba17b "wl12xx: Propagate errors from wl1271_raw_write32"
      breaks down TX in certain scenarios. wl1271_irq_locked() propagates
      errors from wl1271_tx_work_locked however it may return -EBUSY
      when the FW queues are full which is a legitimate case and not a
      a real error. In this case a recovery is triggered by wl1271_irq
      and this keeps repeating itself so TX is completely broken.
      Fix it by avoiding propagating return values as errors even if they
      aren't. Only bus (SDIO or SPI) ops failures would be progagated
      as only these should trigger recovery.
      Signed-off-by: NEyal Shapira <eyal@wizery.com>
      Signed-off-by: NLuciano Coelho <coelho@ti.com>
      7a50bdfb
  9. 22 6月, 2012 3 次提交
  10. 14 6月, 2012 1 次提交
    • E
      wlcore: send EAPOLs with basic rate policy · 8f1a8684
      Eyal Shapira 提交于
      EAPOLs are sent at high rates as they are considered
      data packets. Some APs like Motorola Symbol AP7131 and AP650
      don't respond well to these rates and don't respond with
      EAPOL 3/4 consistently. When sending EAPOL 2/4 at 54Mbps
      we've seen approx 30% success rate in getting EAPOL 3/4 response
      while using 11Mbps we got 100% success.
      To increase the chances of successful 4-Way handshake with
      such APs, send EAPOLs with basic rate policy in order to avoid
      high rates.
      Signed-off-by: NEyal Shapira <eyal@wizery.com>
      Signed-off-by: NLuciano Coelho <coelho@ti.com>
      8f1a8684
  11. 07 6月, 2012 7 次提交
  12. 05 6月, 2012 4 次提交