09 Feb, 2017

1 commit

  • Add the missing IBSS capability flag during capability init as it needs
    to be inserted into the generated beacon in order for CSA to work.

    Fixes: cd7760e62c2ac ("mac80211: add support for CSA in IBSS mode")
    Signed-off-by: Piotr Gawlowicz
    Signed-off-by: Mikołaj Chwalisz
    Tested-by: Koen Vandeputte
    Signed-off-by: Johannes Berg

    Koen Vandeputte
     

12 Apr, 2016

1 commit

  • This enum is already perfectly aliased to enum nl80211_band, and
    the only reason for it is that we get IEEE80211_NUM_BANDS out of
    it. There's no really good reason to not declare the number of
    bands in nl80211 though, so do that and remove the cfg80211 one.

    Signed-off-by: Johannes Berg

    Johannes Berg
     

06 Apr, 2016

2 commits

  • Instead of touching the rx_stats.last_rx from the status path, introduce
    and use a status_stats.last_ack variable. This will make rx_stats.last_rx
    indicate when the last frame was received, making it available for real
    "last_rx" and statistics gathering; statistics, when done per-CPU, will
    need to figure out which place was updated last for those items where the
    "last" value is exposed.

    Signed-off-by: Johannes Berg

    Johannes Berg
     
  • There's no need to update rx_stats.last_rx after allocating
    a station since it's already updated during allocation.

    Signed-off-by: Johannes Berg

    Johannes Berg
     

02 Mar, 2016

1 commit

  • …inux/kernel/git/jberg/mac80211-next

    Johannes Berg says:

    ====================
    Here's another round of updates for -next:
    * big A-MSDU RX performance improvement (avoid linearize of paged RX)
    * rfkill changes: cleanups, documentation, platform properties
    * basic PBSS support in cfg80211
    * MU-MIMO action frame processing support
    * BlockAck reordering & duplicate detection offload support
    * various cleanups & little fixes
    ====================

    Signed-off-by: David S. Miller <davem@davemloft.net>

    David S. Miller
     

24 Feb, 2016

2 commits

  • When joining IBSS a full scan should be initiated in order to search
    for existing cell, unless the fixed_channel parameter was set.
    A default channel to create the IBSS on if no cell was found is
    provided as well.
    However - a scan is initiated only on the default channel provided
    regardless of whether ifibss->fixed_channel is set or not, with the
    obvious result of the cell not joining existing IBSS cell that is
    on another channel.

    Fixes: 76bed0f43b27 ("mac80211: IBSS fix scan request")
    Signed-off-by: Sara Sharon
    Signed-off-by: Emmanuel Grumbach
    Signed-off-by: Johannes Berg

    Sara Sharon
     
  • The station MLME and IBSS/mesh ones use entirely different
    code for interpreting HT and VHT operation elements. Change
    the code that interprets them a bit - it now modifies an
    existing chandef - and use it also in the MLME code.

    Signed-off-by: Johannes Berg

    Johannes Berg
     

26 Jan, 2016

1 commit

  • During a sw scan ieee80211_iface_work ignores work items for all vifs.
    However after the scan complete work is requeued only for STA, ADHOC
    and MESH iftypes.

    This occasionally results in event processing getting delayed/not
    processed for iftype AP when it coexists with a STA. This can result
    in data halt and eventually disconnection on the AP interface.

    Cc: stable@vger.kernel.org
    Signed-off-by: Sachin Kulkarni
    Signed-off-by: Johannes Berg

    Sachin Kulkarni
     

04 Dec, 2015

1 commit


03 Nov, 2015

2 commits


21 Oct, 2015

1 commit

  • Group station statistics by where they're (mostly) updated
    (TX, RX and TX-status) and group them into sub-structs of
    the struct sta_info.

    Also rename the variables since the grouping now makes it
    obvious where they belong.

    This makes it easier to identify where the statistics are
    updated in the code, and thus easier to think about them.

    Signed-off-by: Johannes Berg

    Johannes Berg
     

13 Oct, 2015

1 commit


10 Jun, 2015

1 commit


11 May, 2015

1 commit


01 Apr, 2015

1 commit

  • …inux/kernel/git/jberg/mac80211-next

    Johannes Berg says:

    ====================
    Lots of updates for net-next; along with the usual flurry
    of small fixes, cleanups and internal features we have:
    * VHT support for TDLS and IBSS (conditional on drivers though)
    * first TX performance improvements (the biggest will come later)
    * many suspend/resume (race) fixes
    * name_assign_type support from Tom Gundersen
    ====================

    Signed-off-by: David S. Miller <davem@davemloft.net>

    David S. Miller
     

30 Mar, 2015

3 commits


20 Mar, 2015

1 commit

  • This mechanism was historic, and only ever used by IBSS, which
    also doesn't need to have it as it properly manages station's
    802.1X PAE state (or, with WEP, always has a key.)

    Remove the mechanism to clean up the code.

    Signed-off-by: Johannes Berg

    Johannes Berg
     

17 Mar, 2015

1 commit


04 Mar, 2015

1 commit


03 Mar, 2015

1 commit

  • 802.11ad adds new a network type (PBSS) and changes the capability
    field interpretation for the DMG (60G) band.
    The same 2 bits that were interpreted as "ESS" and "IBSS" before are
    re-used as a 2-bit field with 3 valid values (and 1 reserved). Valid
    values are: "IBSS", "PBSS" (new) and "AP".

    In order to get the BSS struct for the new PBSS networks, change the
    cfg80211_get_bss() function to take a new enum ieee80211_bss_type
    argument with the valid network types, as "capa_mask" and "capa_val"
    no longer work correctly (the search must be band-aware now.)

    The remaining bits in "capa_mask" and "capa_val" are used only for
    privacy matching so replace those two with a privacy enum as well.

    Signed-off-by: Dedy Lansky
    [rewrite commit log, tiny fixes]
    Signed-off-by: Johannes Berg

    Dedy Lansky
     

17 Dec, 2014

1 commit


29 Oct, 2014

1 commit

  • 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: Jouni Malinen
    Signed-off-by: Luciano Coelho
    Signed-off-by: Johannes Berg

    Luciano Coelho
     

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
     

15 Aug, 2014

1 commit

  • We currently track the QoS capability twice: for all peer stations
    in the WLAN_STA_WME flag, and for any clients associated to an AP
    interface separately for drivers in the sta->sta.wme field.

    Remove the WLAN_STA_WME flag and track the capability only in the
    driver-visible field, getting rid of the limitation that the field
    is only valid in AP mode.

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

    Johannes Berg
     

21 Jul, 2014

1 commit

  • If QoS is supported by the card, add an appropriate IE to TDLS setup-
    request and setup-response frames.

    Consolidate the setting of the WMM info IE across mac80211.

    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

  • Having csa counters part of beacon and probe_resp
    structures makes it easier to get rid of possible
    races between setting a beacon and updating
    counters on SMP systems by guaranteeing counters
    are always consistent against given beacon struct.

    While at it relax WARN_ON into WARN_ON_ONCE to
    prevent spamming logs and racing.

    Signed-off-by: Michal Kazior
    [remove pointless array check]
    Signed-off-by: Johannes Berg

    Michal Kazior
     

27 May, 2014

1 commit


15 May, 2014

1 commit


09 Apr, 2014

4 commits

  • Now that mac80211 can check the interface combinations itself, move
    the combinations check from cfg80211 to mac80211 when joining an IBSS.

    Signed-off-by: Luciano Coelho
    Signed-off-by: Johannes Berg

    Luciano Coelho
     
  • Some interface types don't require DFS (such as STATION, P2P_CLIENT
    etc). In order to centralize these decisions, make
    cfg80211_chandef_dfs_required() take the iftype into consideration.

    Signed-off-by: Luciano Coelho
    Signed-off-by: Johannes Berg

    Luciano Coelho
     
  • Allow GO operation on a channel marked with IEEE80211_CHAN_GO_CONCURRENT
    iff there is an active station interface that is associated to
    an AP operating on the same channel in the 2 GHz band or the same UNII band
    (in the 5 GHz band). This relaxation is not allowed if the channel is
    marked with IEEE80211_CHAN_RADAR.

    Note that this is a permissive approach to the FCC definitions,
    that require a clear assessment that the device operating the AP is
    an authorized master, i.e., with radar detection and DFS capabilities.

    It is assumed that such restrictions are enforced by user space.
    Furthermore, it is assumed, that if the conditions that allowed for
    the operation of the GO on such a channel change, i.e., the station
    interface disconnected from the AP, it is the responsibility of user
    space to evacuate the GO from the channel.

    Signed-off-by: Ilan Peer
    Signed-off-by: Johannes Berg

    Ilan Peer
     
  • rcu_assign_pointer() ensures that the initialization of a structure is
    carried out before storing a pointer to that structure. However, in the
    case that NULL is assigned there's no structure to initialize so using
    RCU_INIT_POINTER instead is safe and more efficient.

    Signed-off-by: Monam Agarwal
    [squash eight tiny patches, rewrite commit log]
    Signed-off-by: Johannes Berg

    Monam Agarwal
     

20 Mar, 2014

1 commit

  • On 2.4Ghz band, the channels overlap since the delta
    between different channels is 5Mhz while the width of the
    receiver is 20Mhz (at least).

    This means that we can hear beacons or probe responses from
    adjacent channels. These frames will have a significant
    lower RSSI which will feed all kinds of logic with inaccurate
    data. An obvious example is the roaming algorithm that will
    think our AP is getting weak and will try to move to another
    AP.

    In order to avoid this, update the signal only if the frame
    has been heard on the same channel as the one advertised by
    the AP in its DS / HT IEs.
    We refrain from updating the values only if the AP is
    already in the BSS list so that we will still have a valid
    (but inaccurate) value if the AP was heard on an adjacent
    channel only.

    To achieve this, stop taking the channel from DS / HT IEs
    in mac80211. The DS / HT IEs is taken into account to
    discard the frame if it was received on a disabled channel.
    This can happen due to the same phenomenon: the frame is
    sent on channel 12, but heard on channel 11 while channel
    12 can be disabled on certain devices. Since this check
    is done in cfg80211, stop even checking this in mac80211.

    Signed-off-by: Emmanuel Grumbach
    [remove unused rx_freq variable]
    Signed-off-by: Johannes Berg

    Emmanuel Grumbach
     

21 Feb, 2014

1 commit


14 Feb, 2014

1 commit


06 Feb, 2014

1 commit

  • Currently, when a station leaves an IBSS network, the
    corresponding BSS is not dropped from cfg80211 if there are
    other active stations in the network. But, the small
    window that is present when trying to determine a station's
    status based on IEEE80211_IBSS_MERGE_INTERVAL introduces
    a race.

    Instead of trying to keep the BSS, always remove it when
    leaving an IBSS network. There is not much benefit to retain
    the BSS entry since it will be added with a subsequent join
    operation.

    This fixes an issue where a dangling BSS entry causes ath9k
    to wait for a beacon indefinitely.

    Cc:
    Reported-by: Simon Wunderlich
    Signed-off-by: Sujith Manoharan
    Signed-off-by: Johannes Berg

    Sujith Manoharan
     

05 Feb, 2014

1 commit

  • When receiving an IBSS_JOINED event select the BSS object
    based on the {bssid, channel} couple rather than the bssid
    only.
    With the current approach if another cell having the same
    BSSID (but using a different channel) exists then cfg80211
    picks up the wrong BSS object.
    The result is a mismatching channel configuration between
    cfg80211 and the driver, that can lead to any sort of
    problem.

    The issue can be triggered by having an IBSS sitting on
    given channel and then asking the driver to create a new
    cell using the same BSSID but with a different frequency.
    By passing the channel to cfg80211_get_bss() we can solve
    this ambiguity and retrieve/create the correct BSS object.
    All the users of cfg80211_ibss_joined() have been changed
    accordingly.

    Moreover WARN when cfg80211_ibss_joined() gets a NULL
    channel as argument and remove a bogus call of the same
    function in ath6kl (it does not make sense to call
    cfg80211_ibss_joined() with a zero BSSID on ibss-leave).

    Cc: Kalle Valo
    Cc: Arend van Spriel
    Cc: Bing Zhao
    Cc: Jussi Kivilinna
    Cc: libertas-dev@lists.infradead.org
    Acked-by: Kalle Valo
    Signed-off-by: Antonio Quartulli
    [minor code cleanup in ath6kl]
    Signed-off-by: Johannes Berg

    Antonio Quartulli