1. 06 4月, 2016 2 次提交
    • F
      mac80211: add A-MSDU tx support · 6e0456b5
      Felix Fietkau 提交于
      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: NFelix Fietkau <nbd@openwrt.org>
      [fix locking issue]
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      6e0456b5
    • J
      mac80211: add fast-rx path · 49ddf8e6
      Johannes Berg 提交于
      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: NJohannes Berg <johannes.berg@intel.com>
      49ddf8e6
  2. 05 4月, 2016 1 次提交
  3. 24 2月, 2016 1 次提交
  4. 14 1月, 2016 1 次提交
  5. 13 10月, 2015 2 次提交
  6. 09 10月, 2015 1 次提交
  7. 22 9月, 2015 2 次提交
  8. 14 8月, 2015 1 次提交
  9. 27 1月, 2015 2 次提交
  10. 20 11月, 2014 4 次提交
  11. 04 11月, 2014 1 次提交
  12. 09 10月, 2014 1 次提交
  13. 11 9月, 2014 1 次提交
    • J
      cfg80211: add WMM traffic stream API · 960d01ac
      Johannes Berg 提交于
      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: NJohannes Berg <johannes.berg@intel.com>
      960d01ac
  14. 08 9月, 2014 1 次提交
    • S
      mac80211: support DTPC IE (from Cisco Client eXtensions) · c8d65917
      Steinar H. Gunderson 提交于
      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
      anyway.
      Signed-off-by: NSteinar H. Gunderson <sgunderson@bigfoot.com>
      Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
      c8d65917
  15. 05 9月, 2014 1 次提交
  16. 26 8月, 2014 1 次提交
  17. 21 7月, 2014 1 次提交
  18. 23 6月, 2014 1 次提交
  19. 28 5月, 2014 1 次提交
  20. 20 3月, 2014 1 次提交
  21. 01 3月, 2014 1 次提交
  22. 05 2月, 2014 3 次提交
    • J
      wireless: sort and extend element ID list · 8c78e380
      Johannes Berg 提交于
      The element ID list is currently almost sorted by amendment
      or similar topic, but the order is difficult to maintain and
      not very transparent. Sort the list by ID instead, and add
      a lot of missing IDs.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      8c78e380
    • J
      mac80211: fix bufferable MMPDU RX handling · b4ba544c
      Johannes Berg 提交于
      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: NJohannes Berg <johannes.berg@intel.com>
      b4ba544c
    • J
      mac80211: add length check in ieee80211_is_robust_mgmt_frame() · d8ca16db
      Johannes Berg 提交于
      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: NJohannes Berg <johannes.berg@intel.com>
      d8ca16db
  23. 11 1月, 2014 1 次提交
  24. 10 1月, 2014 1 次提交
  25. 26 11月, 2013 1 次提交
  26. 28 10月, 2013 1 次提交
    • C
      mac80211: process the CSA frame for mesh accordingly · 8f2535b9
      Chun-Yeow Yeoh 提交于
      Process the CSA frame according to the procedures define in IEEE Std
      802.11-2012 section 10.9.8.4.3 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: NChun-Yeow Yeoh <yeohchunyeow@cozybit.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      8f2535b9
  27. 01 10月, 2013 1 次提交
  28. 06 8月, 2013 1 次提交
  29. 03 8月, 2013 1 次提交
  30. 01 8月, 2013 2 次提交