30 Jun, 2016

2 commits

  • Previously, the action frames to group address was not encrypted. But
    [1] "Table 8-38 Category values" indicates "Mesh" and "Multihop" category
    action frames should be encrypted (Group addressed privacy == yes). And the
    encyption key should be MGTK ([1] 10.13 Group addressed robust management frame
    procedures). So this patch modifies the code to make it suitable for spec.

    [1] IEEE Std 802.11-2012

    Signed-off-by: Masashi Honma
    Signed-off-by: Johannes Berg

    Masashi Honma
     
  • Use IEEE80211_MIN_ACTION_SIZE macro for robust management frame check.

    Signed-off-by: Masashi Honma
    Signed-off-by: Johannes Berg

    Masashi Honma
     

06 Apr, 2016

2 commits

  • 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: Felix Fietkau
    [fix locking issue]
    Signed-off-by: Johannes Berg

    Felix Fietkau
     
  • 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: Johannes Berg

    Johannes Berg
     

05 Apr, 2016

1 commit


24 Feb, 2016

1 commit

  • In VHT, the specification allows to limit the number of
    MSDUs in an A-MSDU in the Extended Capabilities IE. There
    is also a limitation on the byte size in the VHT IE.
    In HT, the only limitation is on the byte size.
    Parse the capabilities from the peer and make them
    available to the driver.

    In HT, there is another limitation when a BA agreement
    is active: the byte size can't be greater than 4095.
    This is not enforced here.

    Signed-off-by: Emmanuel Grumbach
    Signed-off-by: Johannes Berg

    Emmanuel Grumbach
     

14 Jan, 2016

1 commit

  • The Group ID Management frame is an Action frame of
    category VHT. It is transmitted by the AP to assign
    or change the user position of a STA for one or more
    group IDs.
    Process and save the group membership data. Notify
    underlying driver of changes.

    Signed-off-by: Sara Sharon
    Signed-off-by: Emmanuel Grumbach
    Signed-off-by: Johannes Berg

    Sara Sharon
     

13 Oct, 2015

2 commits


09 Oct, 2015

1 commit


22 Sep, 2015

2 commits


14 Aug, 2015

1 commit


27 Jan, 2015

2 commits


20 Nov, 2014

4 commits


04 Nov, 2014

1 commit


09 Oct, 2014

1 commit


11 Sep, 2014

1 commit

  • 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: Johannes Berg

    Johannes Berg
     

08 Sep, 2014

1 commit

  • 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: Steinar H. Gunderson
    Signed-off-by: Johannes Berg

    Steinar H. Gunderson
     

05 Sep, 2014

1 commit

  • Our legal structure changed at some point (see wikipedia), but
    we forgot to immediately switch over to the new copyright
    notice.

    For files that we have modified in the time since the change,
    add the proper copyright notice now.

    Signed-off-by: Johannes Berg
    Signed-off-by: Emmanuel Grumbach
    Signed-off-by: Johannes Berg

    Johannes Berg
     

26 Aug, 2014

1 commit

  • TPC report element is contained in spectrum management's tpc report
    action frames and in radio measurement's link measurement report
    action frames. Add a function which checks whether an action frame
    contains this element. This may be needed by the drivers in order
    to set the correct tx power value in these frames.

    Signed-off-by: Andrei Otcheretianski
    Signed-off-by: Emmanuel Grumbach
    Signed-off-by: Johannes Berg

    Andrei Otcheretianski
     

21 Jul, 2014

1 commit

  • When TDLS QoS is supported by the the peer and the local card, add
    the WMM parameter IE to the setup-confirm frame. Take the QoS settings
    from the current AP, or if unsupported, use the default values from
    the specification. This behavior is mandated by IEEE802.11-2012 section
    10.22.4.

    Signed-off-by: Arik Nemtsov
    Reviewed-by: Liad Kaufman
    Reviewed-by: Johannes Berg
    Signed-off-by: Johannes Berg

    Arik Nemtsov
     

23 Jun, 2014

1 commit


28 May, 2014

1 commit


20 Mar, 2014

2 commits


01 Mar, 2014

1 commit


05 Feb, 2014

3 commits

  • 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: Johannes Berg

    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: Johannes Berg

    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: Johannes Berg

    Johannes Berg
     

11 Jan, 2014

1 commit


10 Jan, 2014

1 commit


26 Nov, 2013

1 commit


28 Oct, 2013

1 commit

  • 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: Chun-Yeow Yeoh
    Signed-off-by: Johannes Berg

    Chun-Yeow Yeoh
     

01 Oct, 2013

1 commit

  • VHT_CAP_BEAMFORMER_ANTENNAS cap is actually defined in the draft as
    VHT_CAP_BEAMFORMEE_STS_MAX, and its size is 3 bits long.

    VHT_CAP_SOUNDING_DIMENSIONS is also 3 bits long.

    Fix the definitions and change the cap masking accordingly.

    Signed-off-by: Eliad Peller
    Signed-off-by: Johannes Berg

    Eliad Peller
     

30 Aug, 2013

1 commit