1. 24 4月, 2015 2 次提交
  2. 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
  3. 07 4月, 2015 1 次提交
  4. 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
  5. 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
  6. 30 3月, 2015 3 次提交
  7. 20 3月, 2015 2 次提交
  8. 16 3月, 2015 1 次提交
    • J
      mac80211: ignore CSA to same channel · f84eaa10
      Johannes Berg 提交于
      If the AP is confused and starts doing a CSA to the same channel,
      just ignore that request instead of trying to act it out since it
      was likely sent in error anyway.
      
      In the case of the bug I was investigating the GO was misbehaving
      and sending out a beacon with CSA IEs still included after having
      actually done the channel switch.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      f84eaa10
  9. 03 3月, 2015 2 次提交
  10. 01 3月, 2015 1 次提交
    • J
      mac80211: remove TX latency measurement code · abfbc3af
      Johannes Berg 提交于
      Revert commit ad38bfc9 ("mac80211: Tx frame latency statistics")
      (along with some follow-up fixes).
      
      This code turned out not to be as useful in the current form as we
      thought, and we've internally hacked it up more, but that's not
      very suitable for upstream (for now), and we might just do that
      with tracing instead.
      
      Therefore, for now at least, remove this code. We might also need
      to use the skb->tstamp field for the TCP performance issue, which
      is more important than the debugging.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      abfbc3af
  11. 27 1月, 2015 1 次提交
  12. 23 1月, 2015 2 次提交
    • E
      mac80211: avoid races related to suspend flow · 4afaff17
      Emmanuel Grumbach 提交于
      When we go to suspend, there is complex set of states that
      avoids races. The quiescing variable is set whlie
      __ieee80211_suspend is running. Then suspended is set.
      The code makes sure there is no window without any of these
      flags.
      
      The problem is that workers can still be enqueued while we
      are quiescing. This leads to situations where the driver is
      already suspending and other flows like disassociation are
      handled by a worker.
      
      To fix this, we need to check quiescing and suspended flags
      in the worker itself and not only before enqueueing it.
      I also add here extensive documentation to ease the
      understanding of these complex issues.
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      4afaff17
    • L
      mac80211: enable TPC through mac80211 stack · db82d8a9
      Lorenzo Bianconi 提交于
      Control per packet Transmit Power Control (TPC) in lower drivers
      according to TX power settings configured by the user. In particular TPC is
      enabled if value passed in enum nl80211_tx_power_setting is
      NL80211_TX_POWER_LIMITED (allow using less than specified from userspace),
      whereas TPC is disabled if nl80211_tx_power_setting is set to
      NL80211_TX_POWER_FIXED (use value configured from userspace)
      Signed-off-by: NLorenzo Bianconi <lorenzo.bianconi83@gmail.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      db82d8a9
  13. 14 1月, 2015 2 次提交
  14. 17 12月, 2014 1 次提交
  15. 20 11月, 2014 12 次提交
  16. 04 11月, 2014 2 次提交
    • J
      mac80211: handle RIC data element in reassociation request · 8ed28747
      Johannes Berg 提交于
      When the RIC data element (RDE) is included in the IEs coming
      from userspace for an association request, its handling is
      currently broken as any IEs that are contained within it would
      be split off from it and inserted again after all the IEs that
      mac80211 generates (e.g. HT, VHT.)
      
      To fix this, treat the RIC element specially, and stop after
      it only when we find something that doesn't actually belong to
      it. This assumes userspace is actually correctly building it,
      directly after the fast BSS transition IE and before all the
      others like extended capabilities.
      
      This leaves as a potential problem the case where userspace is
      building the following IEs:
      
      [RDE] [vendor resource description] [vendor non-resource IE]
      
      In this case, we'd erroneously consider all three IEs to be
      part of the RIC data together, and not split them between the
      two vendor IEs. Unfortunately, it isn't easily possible to
      distinguish vendor IEs, so this isn't easy to fix. Luckily,
      this case is rare as normally wpa_supplicant will include an
      extended capabilities IE in the IEs, and that certainly will
      break the two vendor IEs apart correctly.
      Reviewed-by: NEliad Peller <eliad@wizery.com>
      Reviewed-by: NBeni Lev <beni.lev@intel.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      8ed28747
    • R
      mac80211: 802.11p OCB mode support · 239281f8
      Rostislav Lisovy 提交于
      This patch adds 802.11p OCB (Outside the Context of a BSS) mode
      support.
      
      When communicating in OCB mode a mandatory wildcard BSSID
      (48 '1' bits) is used.
      
      The EDCA parameters handling function was changed to support
      802.11p specific values.
      
      The insertion of a newly discovered STAs is done in the similar way
      as in the IBSS mode -- through the deferred insertion.
      
      The OCB mode uses a periodic 'housekeeping task' for expiration of
      disconnected STAs (in the similar manner as in the MESH mode).
      
      New Kconfig option for verbose OCB debugging outputs is added.
      Signed-off-by: NRostislav Lisovy <rostislav.lisovy@fel.cvut.cz>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      239281f8
  17. 31 10月, 2014 1 次提交
  18. 29 10月, 2014 1 次提交
    • L
      mac80211: use secondary channel offset IE also beacons during CSA · 84469a45
      Luciano Coelho 提交于
      If we are switching from an HT40+ to an HT40- channel (or vice-versa),
      we need the secondary channel offset IE to specify what is the
      post-CSA offset to be used.  This applies both to beacons and to probe
      responses.
      
      In ieee80211_parse_ch_switch_ie() we were ignoring this IE from
      beacons and using the *current* HT information IE instead.  This was
      causing us to use the same offset as before the switch.
      
      Fix that by using the secondary channel offset IE also for beacons and
      don't ever use the pre-switch offset.  Additionally, remove the
      "beacon" argument from ieee80211_parse_ch_switch_ie(), since it's not
      needed anymore.
      
      Cc: stable@vger.kernel.org
      Reported-by: NJouni Malinen <j@w1.fi>
      Signed-off-by: NLuciano Coelho <luciano.coelho@intel.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      84469a45
  19. 24 10月, 2014 1 次提交
  20. 22 10月, 2014 1 次提交
    • J
      mac80211: add WMM admission control support · 02219b3a
      Johannes Berg 提交于
      Use the currently existing APIs between mac80211 and the low
      level driver to implement WMM admission control.
      
      The low level driver needs to report the media time used by
      each transmitted packet in ieee80211_tx_status. Based on that
      information, mac80211 will modify the QoS parameters of the
      admission controlled Access Category when the limit is
      reached. Once the original QoS parameters can be restored,
      mac80211 will do so.
      
      One issue with this approach is that management frames will
      also erroneously be downgraded, but the upside is that the
      implementation is simple. In the future, it can be extended
      to driver- or device-based implementations that are better.
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      02219b3a
  21. 09 10月, 2014 1 次提交