1. 30 Jun, 2016 2 commits
  2. 06 Apr, 2016 2 commits
    • Felix Fietkau's avatar
      mac80211: add A-MSDU tx support · 6e0456b5
      Felix Fietkau authored
      Requires software tx queueing and fast-xmit support. For good
      performance, drivers need frag_list support as well. This avoids the
      need for copying data of aggregated frames. Running without it is only
      supported for debugging purposes.
      To avoid performance and packet size issues, the rate control module or
      driver needs to limit the maximum A-MSDU size by setting
      max_rc_amsdu_len in struct ieee80211_sta.
      Signed-off-by: default avatarFelix Fietkau <nbd@openwrt.org>
      [fix locking issue]
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    • Johannes Berg's avatar
      mac80211: add fast-rx path · 49ddf8e6
      Johannes Berg authored
      The regular RX path has a lot of code, but with a few
      assumptions on the hardware it's possible to reduce the
      amount of code significantly. Currently the assumptions
      on the driver are the following:
       * hardware/driver reordering buffer (if supporting aggregation)
       * hardware/driver decryption & PN checking (if using encryption)
       * hardware/driver did de-duplication
       * hardware/driver did A-MSDU deaggregation
       * AP_LINK_PS is used (in AP mode)
       * no client powersave handling in mac80211 (in client mode)
      of which some are actually checked per packet:
       * de-duplication
       * PN checking
       * decryption
      and additionally packets must
       * not be A-MSDU (have been deaggregated by driver/device)
       * be data packets
       * not be fragmented
       * be unicast
       * have RFC 1042 header
      Additionally dynamically we assume:
       * no encryption or CCMP/GCMP, TKIP/WEP/other not allowed
       * station must be authorized
       * 4-addr format not enabled
      Some data needed for the RX path is cached in a new per-station
      "fast_rx" structure, so that we only need to look at this and
      the packet, no other memory when processing packets on the fast
      RX path.
      After doing the above per-packet checks, the data path collapses
      down to a pretty simple conversion function taking advantage of
      the data cached in the small fast_rx struct.
      This should speed up the RX processing, and will make it easier
      to reason about parallelizing RX (for which statistics will need
      to be per-CPU still.)
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
  3. 05 Apr, 2016 1 commit
  4. 24 Feb, 2016 1 commit
  5. 14 Jan, 2016 1 commit
  6. 13 Oct, 2015 2 commits
  7. 09 Oct, 2015 1 commit
  8. 22 Sep, 2015 2 commits
  9. 14 Aug, 2015 1 commit
  10. 27 Jan, 2015 2 commits
  11. 19 Nov, 2014 4 commits
  12. 04 Nov, 2014 1 commit
  13. 09 Oct, 2014 1 commit
  14. 11 Sep, 2014 1 commit
    • Johannes Berg's avatar
      cfg80211: add WMM traffic stream API · 960d01ac
      Johannes Berg authored
      Add nl80211 and driver API to validate, add and delete traffic
      streams with appropriate settings.
      The API calls for userspace doing the action frame handshake
      with the peer, and then allows only to set up the parameters
      in the driver. To avoid setting up a session only to tear it
      down again, the validate API is provided, but the real usage
      later can still fail so userspace must be prepared for that.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
  15. 08 Sep, 2014 1 commit
    • Steinar H. Gunderson's avatar
      mac80211: support DTPC IE (from Cisco Client eXtensions) · c8d65917
      Steinar H. Gunderson authored
      Linux already supports 802.11h, where the access point can tell the
      client to reduce its transmission power. However, 802.11h is only
      defined for 5 GHz, where the need for this is much smaller than on
      2.4 GHz.
      Cisco has their own solution, called DTPC (Dynamic Transmit Power
      Control). Cisco APs on a controller sometimes but not always send
      802.11h; they always send DTPC, even on 2.4 GHz. This patch adds support
      for parsing and honoring the DTPC IE in addition to the 802.11h
      element (they do not always contain the same limits, so both must
      be honored); the format is not documented, but very simple.
      Tested (on top of wireless.git and on 3.16.1) against a Cisco Aironet
      1142 joined to a Cisco 2504 WLC, by setting various transmit power
      levels for the given access points and observing the results.
      The Wireshark 802.11 dissector agrees with the interpretation of the
      element, except for negative numbers, which seem to never happen
      Signed-off-by: default avatarSteinar H. Gunderson <sgunderson@bigfoot.com>
      Signed-off-by: default avatarJohannes Berg <johannes@sipsolutions.net>
  16. 05 Sep, 2014 1 commit
  17. 26 Aug, 2014 1 commit
  18. 21 Jul, 2014 1 commit
  19. 23 Jun, 2014 1 commit
  20. 28 May, 2014 1 commit
  21. 19 Mar, 2014 1 commit
  22. 28 Feb, 2014 1 commit
  23. 05 Feb, 2014 1 commit
  24. 04 Feb, 2014 2 commits
    • Johannes Berg's avatar
      mac80211: fix bufferable MMPDU RX handling · b4ba544c
      Johannes Berg authored
      Action, disassoc and deauth frames are bufferable, and as such don't
      have the PM bit in the frame control field reserved which means we
      need to react to the bit when receiving in such a frame.
      Fix this by introducing a new helper ieee80211_is_bufferable_mmpdu()
      and using it for the RX path that currently ignores the PM bit in
      any non-data frames for doze->wake transitions, but listens to it in
      all frames for wake->doze transitions, both of which are wrong.
      Also use the new helper in the TX path to clean up the code.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    • Johannes Berg's avatar
      mac80211: add length check in ieee80211_is_robust_mgmt_frame() · d8ca16db
      Johannes Berg authored
      A few places weren't checking that the frame passed to the
      function actually has enough data even though the function
      clearly documents it must have a payload byte. Make this
      safer by changing the function to take an skb and checking
      the length inside. The old version is preserved for now as
      the rtl* drivers use it and don't have a correct skb.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
  25. 10 Jan, 2014 2 commits
  26. 25 Nov, 2013 1 commit
  27. 28 Oct, 2013 1 commit
    • Chun-Yeow Yeoh's avatar
      mac80211: process the CSA frame for mesh accordingly · 8f2535b9
      Chun-Yeow Yeoh authored
      Process the CSA frame according to the procedures define in IEEE Std
      802.11-2012 section as follow:
      * The mesh channel switch parameters element (MCSP) must be availabe.
      * If the MCSP's TTL is 1, drop the frame but still process the CSA.
      * If the MCSP's precedence value is less than or equal to the current
        precedence value, drop the frame and do not process the CSA.
      * The CSA frame is forwarded after TTL is decremented by 1 and the
        initiator field is set to 0. Transmit restrict field and others
        are maintained as is.
      * No beacon or probe response frame are handled here.
      Also, introduce the debug message used for mesh CSA purpose.
      Signed-off-by: default avatarChun-Yeow Yeoh <yeohchunyeow@cozybit.com>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
  28. 01 Oct, 2013 1 commit
  29. 06 Aug, 2013 1 commit
  30. 02 Aug, 2013 1 commit