1. 14 1月, 2016 1 次提交
  2. 15 12月, 2015 1 次提交
  3. 04 12月, 2015 3 次提交
    • J
      mac80211: rewrite remain-on-channel logic · aaa016cc
      Johannes Berg 提交于
      Jouni found a bug in the remain-on-channel logic: when a short item
      is queued, a long item is combined with it extending the original
      one, and then the long item is deleted, the timeout doesn't go back
      to the short one, and the short item ends up taking a long time. In
      this case, this showed as blocking scan when running two test cases
      back to back - the scan from the second was delayed even though all
      the remain-on-channel items should long have been gone.
      
      Fixing this with the current data structures turns out to be a bit
      complicated, we just remove the long item from the dependents list
      right now and don't recalculate the timeouts.
      
      There's a somewhat similar bug where we delete the short item and
      all the dependents go with it; to fix this we'd have to move them
      from the dependents to the real list.
      
      Instead of trying to do that, rewrite the code to not have all this
      complexity in the data structures: use a single list and allow more
      than one entry in it being marked as started. This makes the code a
      bit more complex, the worker needs to understand that it might need
      to just remove one of the started items, while keeping the device
      off-channel, but that's not more complicated than the nested data
      structures.
      
      This then fixes both issues described, and makes it easier to also
      limit the overall off-channel time when combining.
      
      TODO: as before, with hardware remain-on-channel, deleting an item
      after combining results in cancelling them all - we can keep track
      of the time elapsed and only cancel after that to fix this.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      aaa016cc
    • J
      mac80211: simplify ack_skb handling · 5ee00dbd
      Johannes Berg 提交于
      Since the cookie is assigned inside ieee80211_make_ack_skb()
      now, we no longer need to return the ack_skb as the cookie
      and can simplify the function's return and the callers. Also
      rename it to ieee80211_attach_ack_skb() to more accurately
      reflect its purpose.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      5ee00dbd
    • J
      mac80211: move off-channel/mgmt-tx code to offchannel.c · a2fcfccb
      Johannes Berg 提交于
      This is quite a bit of code that logically depends here since
      it has to deal with all the remain-on-channel logic.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      a2fcfccb
  4. 03 11月, 2015 3 次提交
  5. 21 10月, 2015 1 次提交
  6. 15 10月, 2015 3 次提交
  7. 29 9月, 2015 1 次提交
  8. 22 9月, 2015 4 次提交
  9. 14 8月, 2015 1 次提交
  10. 17 7月, 2015 9 次提交
  11. 20 5月, 2015 1 次提交
  12. 19 5月, 2015 1 次提交
  13. 12 5月, 2015 1 次提交
  14. 05 5月, 2015 3 次提交
    • J
      mac80211: make LED triggering depend on activation · 8d5c2585
      Johannes Berg 提交于
      When LED triggers are compiled in, but not used, mac80211 will still
      call them to update the status. This isn't really a problem for the
      assoc and radio ones, but the TX/RX (and to a certain extend TPT)
      ones can be called very frequently (for every packet.)
      
      In order to avoid that when they're not used, track their activation
      and call the corresponding trigger (and in the TPT case, account for
      throughput) only when the trigger is actually used by an LED.
      
      Additionally, make those trigger functions inlines since theyre only
      used once in the remaining code.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      8d5c2585
    • J
      mac80211: move dot11 counters under MAC80211_DEBUG_COUNTERS · c206ca67
      Johannes Berg 提交于
      Since these counters can only be read through debugfs, there's
      very little point in maintaining them all the time. However,
      even just making them depend on debugfs is pointless - they're
      not normally used. Additionally a number of them aren't even
      concurrency safe.
      
      Move them under MAC80211_DEBUG_COUNTERS so they're normally
      not even compiled in.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      c206ca67
    • J
      mac80211: clean up global debugfs statistics · f1160434
      Johannes Berg 提交于
      The debugfs statistics macros are pointlessly verbose, so change
      that macro to just have a single argument. While at it, remove
      the unused counters and rename rx_expand_skb_head2 to the better
      rx_expand_skb_head_defrag.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      f1160434
  15. 24 4月, 2015 2 次提交
  16. 22 4月, 2015 1 次提交
    • J
      mac80211: add TX fastpath · 17c18bf8
      Johannes Berg 提交于
      In order to speed up mac80211's TX path, add the "fast-xmit" cache
      that will cache the data frame 802.11 header and other data to be
      able to build the frame more quickly. This cache is rebuilt when
      external triggers imply changes, but a lot of the checks done per
      packet today are simplified away to the check for the cache.
      
      There's also a more detailed description in the code.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      17c18bf8
  17. 07 4月, 2015 1 次提交
  18. 02 4月, 2015 1 次提交
    • F
      mac80211: add an intermediate software queue implementation · ba8c3d6f
      Felix Fietkau 提交于
      This allows drivers to request per-vif and per-sta-tid queues from which
      they can pull frames. This makes it easier to keep the hardware queues
      short, and to improve fairness between clients and vifs.
      
      The task of scheduling packet transmission is left up to the driver -
      queueing is controlled by mac80211. Drivers can only dequeue packets by
      calling ieee80211_tx_dequeue. This makes it possible to add active queue
      management later without changing drivers using this code.
      
      This can also be used as a starting point to implement A-MSDU
      aggregation in a way that does not add artificially induced latency.
      Signed-off-by: NFelix Fietkau <nbd@openwrt.org>
      [resolved minor context conflict, minor changes, endian annotations]
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      ba8c3d6f
  19. 01 4月, 2015 1 次提交
    • J
      mac80211: use rhashtable for station table · 7bedd0cf
      Johannes Berg 提交于
      We currently have a hand-rolled table with 256 entries and are
      using the last byte of the MAC address as the hash. This hash
      is obviously very fast, but collisions are easily created and
      we waste a lot of space in the common case of just connecting
      as a client to an AP where we just have a single station. The
      other common case of an AP is also suboptimal due to the size
      of the hash table and the ease of causing collisions.
      
      Convert all of this to use rhashtable with jhash, which gives
      us the advantage of a far better hash function (with random
      perturbation to avoid hash collision attacks) and of course
      that the hash table grows and shrinks dynamically with chain
      length, improving both cases above.
      
      Use a specialised hash function (using jhash, but with fixed
      length) to achieve better compiler optimisation as suggested
      by Sergey Ryazanov.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      7bedd0cf
  20. 30 3月, 2015 1 次提交