1. 28 Feb, 2012 4 commits
    • Arik Nemtsov's avatar
      wl12xx: avoid starving the system hlid · 49c9cd26
      Arik Nemtsov authored
      Re-factor the Tx scheduler so that the system_hlid is taken into account
      before restarting an iteration over the wlvifs. Previously this
      hlid had a lower priority and would starve if some wlvif had many
      packets.
      In addition avoid iterating over wlvifs past last_wlvif when performing
      the a second pass. If we had packets in those wlvifs they would have
      been found earlier.
      Signed-off-by: default avatarArik Nemtsov <arik@wizery.com>
      Signed-off-by: default avatarLuciano Coelho <coelho@ti.com>
      49c9cd26
    • Arik Nemtsov's avatar
      wl12xx: reset link Tx queues when freeing it · 6246ca00
      Arik Nemtsov authored
      Before, the link was first freed (invalidating it in the map), and later
      on vif removal, all valid wlvif-related links were reset. Since these
      links were already invalid, we failed to reset them.
      The bug was made worse by op_stop, which set the tx_queue_count to 0
      arbitrarily. This resulted in a negative tx_queue_count in some scenarios.
      
      Fix this by resetting the Tx-queues of a link when freeing it. Add a
      WARN_ON and reset all link Tx-queues in op_stop, to avoid a negative
      tx_queue_count.
      
      [changed WARN_ON to WARN_ON_ONCE -- Luca]
      Signed-off-by: default avatarArik Nemtsov <arik@wizery.com>
      Signed-off-by: default avatarLuciano Coelho <coelho@ti.com>
      6246ca00
    • Arik Nemtsov's avatar
      wl12xx: change bits in the link_map under spin lock · 0b0e32b7
      Arik Nemtsov authored
      These bits are used in op_tx to determine if a packet should be dropped.
      As such we should use the spin lock to sync the state.
      Signed-off-by: default avatarArik Nemtsov <arik@wizery.com>
      Signed-off-by: default avatarLuciano Coelho <coelho@ti.com>
      0b0e32b7
    • Arik Nemtsov's avatar
      wl12xx: set the ELP entry delay to the FW dyn-ps timeout · 5af70c86
      Arik Nemtsov authored
      With PSM handled in FW, the checks in wl1271_elp_work() are always true.
      Thus during active traffic we constantly enter and exit ELP (many times
      per second). As each ELP exit takes ~10ms, this can have an adverse
      effect on throughput and interactivity.
      Set the ELP timeout to the dyn-ps timeout. This period is longer and
      avoids the above problem. It also makes sense to stay out of ELP while
      we are awake on the network, to minimize delays in Tx/Rx. The same thing
      was done by the mac80211 dynamic-ps mechanism before the FW DPS changes.
      Signed-off-by: default avatarArik Nemtsov <arik@wizery.com>
      Signed-off-by: default avatarLuciano Coelho <coelho@ti.com>
      5af70c86
  2. 27 Feb, 2012 36 commits