27 Jan, 2015

4 commits

  • This allows mac80211 to configure BIP-GMAC-128 and BIP-GMAC-256 to the
    driver and also use software-implementation within mac80211 when the
    driver does not support this with hardware accelaration.

    Signed-off-by: Jouni Malinen
    Signed-off-by: Johannes Berg

    Jouni Malinen
     
  • This allows mac80211 to configure BIP-CMAC-256 to the driver and also
    use software-implementation within mac80211 when the driver does not
    support this with hardware accelaration.

    Signed-off-by: Jouni Malinen
    Signed-off-by: Johannes Berg

    Jouni Malinen
     
  • This allows mac80211 to configure CCMP-256 to the driver and also use
    software-implementation within mac80211 when the driver does not support
    this with hardware accelaration.

    Signed-off-by: Jouni Malinen
    [squash ccmp256 -> mic_len argument change]
    Signed-off-by: Johannes Berg

    Jouni Malinen
     
  • This allows mac80211 to configure GCMP and GCMP-256 to the driver and
    also use software-implementation within mac80211 when the driver does
    not support this with hardware accelaration.

    Signed-off-by: Jouni Malinen
    [remove a spurious newline]
    Signed-off-by: Johannes Berg

    Jouni Malinen
     

23 Jan, 2015

1 commit

  • 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: Lorenzo Bianconi
    Signed-off-by: Johannes Berg

    Lorenzo Bianconi
     

16 Jan, 2015

1 commit

  • For some reason, we made the bandwidth separate flags, which
    is rather confusing - a single rate cannot have different
    bandwidths at the same time.

    Change this to no longer be flags but use a separate field
    for the bandwidth ('bw') instead.

    While at it, add support for 5 and 10 MHz rates - these are
    reported as regular legacy rates with their real bitrate,
    but tagged as 5/10 now to make it easier to distinguish them.

    In the nl80211 API, the flags are preserved, but the code
    now can also clearly only set a single one of the flags.

    Signed-off-by: Johannes Berg

    Johannes Berg
     

15 Jan, 2015

1 commit


14 Jan, 2015

2 commits

  • local->radar_detect_enabled should tell whether
    radar_detect is enabled on any interface belonging
    to local.

    However, it's not getting updated correctly
    in many cases (actually, when testing with hwsim
    it's never been set, even when the dfs master
    is beaconing).

    Instead of handling all the corner cases
    (e.g. channel switch), simply check whether
    radar detection is enabled only when needed,
    instead of caching the result.

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

    Eliad Peller
     
  • When roaming / suspending, it makes no sense to wait until
    the transmit queues of the device are empty. In extreme
    condition they can be starved (VO saturating the air), but
    even in regular cases, it is pointless to delay the roaming
    because the low level driver is trying to send packets to
    an AP which is far away. We'd rather drop these packets and
    let TCP retransmit if needed. This will allow to speed up
    the roaming.

    For suspend, the explanation is even more trivial.

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

    Emmanuel Grumbach
     

15 Dec, 2014

1 commit

  • The power level might have been set, but as the interface was idle
    it might not have taken effect yet. Ask the driver to check the
    power level when starting up an AP so that in this case the correct
    power level is used in case the device/driver can only set it when
    the interface is actually active.

    Signed-off-by: Johannes Berg

    Johannes Berg
     

20 Nov, 2014

3 commits

  • Implement the cfg80211 TDLS channel switch ops and introduce new mac80211
    ones for low-level drivers.
    Verify low-level driver support for the new ops when using the relevant
    wiphy feature bit. Also verify the peer supports channel switching before
    passing the command down.

    Add a new STA flag to track the off-channel state with the TDLS peer and
    make sure to cancel the channel-switch if the peer STA is unexpectedly
    removed.

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

    Arik Nemtsov
     
  • The AP or peer can prohibit TDLS channel switch via a bit in the
    extended capabilities IE. Parse the IE and track this bit. Set an
    appropriate STA flag if both the AP and peer STA support TDLS
    channel-switching.

    Add the new STA flag and the missing TDLS_INITIATOR to debugfs.

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

    Arik Nemtsov
     
  • Instead of passing the band as a parameter to ieee80211_xmit()
    and ieee80211_tx(), move it outside of the two functions while
    making sure info->band is set up before calling them.

    This removes the parameter and simplifies the follow commit.

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

    Johannes Berg
     

10 Nov, 2014

2 commits


04 Nov, 2014

3 commits

  • 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: Rostislav Lisovy
    Signed-off-by: Johannes Berg

    Rostislav Lisovy
     
  • This patch adds new iface type (NL80211_IFTYPE_OCB) representing
    the OCB (Outside the Context of a BSS) mode.
    When establishing a connection to the network a cfg80211_join_ocb
    function is called (particular nl80211_command is added as well).
    A mandatory parameters during the ocb_join operation are 'center
    frequency' and 'channel width (5/10 MHz)'.

    Changes done in mac80211 are minimal possible required to avoid
    many warnings (warning: enumeration value 'NL80211_IFTYPE_OCB'
    not handled in switch) during compilation. Full functionality
    (where needed) is added in the following patch.

    Signed-off-by: Rostislav Lisovy
    Signed-off-by: Johannes Berg

    Rostislav Lisovy
     
  • The configured tx power is often limited by hardware capabilities,
    channel settings, antenna configuration, etc.

    Signed-off-by: Felix Fietkau
    [fix tracing compilation]
    Signed-off-by: Johannes Berg

    Felix Fietkau
     

31 Oct, 2014

1 commit


22 Oct, 2014

1 commit

  • 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: Emmanuel Grumbach
    Signed-off-by: Johannes Berg

    Johannes Berg
     

21 Oct, 2014

2 commits


20 Oct, 2014

1 commit


10 Oct, 2014

1 commit


09 Oct, 2014

4 commits


11 Sep, 2014

1 commit


05 Sep, 2014

4 commits

  • Extend mac80211 set_coverage_class API in order to enable ACK timeout
    estimation algorithm (dynack) passing coverage class equals to -1
    to lower drivers. Synchronize set_coverage_class routine signature with
    mac80211 function pointer for p54, ath9k, ath9k_htc and ath5k drivers.

    Signed-off-by: Lorenzo Bianconi
    Signed-off-by: Johannes Berg

    Lorenzo Bianconi
     
  • If the remaining time in the current roc is not long
    enough, mac80211 adds the new roc right after it
    (if they have similar params).

    However, in case of multiple rocs, the "next roc"
    is not considered, resulting in multiple rocs,
    each one with its own duration.

    Refactor the code a bit and consider the next roc,
    so a single max roc will be used instead of
    multiple rocs (which might last much longer).

    Signed-off-by: Eliad Peller
    Reviewed-by: Ilan Peer
    Signed-off-by: Emmanuel Grumbach
    Signed-off-by: Johannes Berg

    Eliad Peller
     
  • The new duration (remaining duration after the current
    ROC ends) was calculated but not used, making the
    optimization worthless.

    Signed-off-by: Eliad Peller
    Reviewed-by: Ilan Peer
    Signed-off-by: Emmanuel Grumbach
    Signed-off-by: Johannes Berg

    Eliad Peller
     
  • 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
     

26 Jun, 2014

1 commit

  • Channel switch finalization is now 2-step. First
    step is when driver calls csa_finish(), the other
    is when reservation is actually finalized (which
    can be deferred for in-place reservation).

    It is now safe to call ieee80211_csa_finish() more
    than once.

    Signed-off-by: Michal Kazior
    Signed-off-by: Johannes Berg

    Michal Kazior
     

23 Jun, 2014

5 commits

  • For TDLS, the AUTHORIZED flag arrives with all other important station
    info (supported rates, HT/VHT caps, ...). Make sure to set the station
    state in the low-level driver after transferring this information to
    the mac80211 STA entry.
    This aligns the STA information during sta_state callbacks with the
    non-TDLS case.

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

    Arik Nemtsov
     
  • Instead of stopping all the hardware queues during channel switch,
    which is especially bad when we have large CSA counts, stop only the
    queues that are assigned to the vif that is performing the channel
    switch.

    Additionally, check for (sdata->csa_block_tx) instead of calling
    ieee80211_csa_needs_block_tx(), which can now be removed.

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

    Luciano Coelho
     
  • Sometimes different vifs may be stopping the queues for the same
    reason (e.g. when several interfaces are performing a channel switch).
    Instead of using a bitmask for the reasons, use an integer that holds
    a refcount instead. In order to keep it backwards compatible,
    introduce a boolean in some functions that tell us whether the queue
    stopping should be refcounted or not. For now, use not refcounted for
    all calls to keep it functionally the same as before.

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

    Luciano Coelho
     
  • 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
     
  • Currently, cfg80211 tries to implement ethtool, but that doesn't
    really scale well, with all the different operations. Make the
    lower-level driver responsible for it, which currently only has
    an effect on mac80211. It will similarly not scale well at that
    level though, since mac80211 also has many drivers.

    To cleanly implement this in mac80211, introduce a new file and
    move some code to appropriate places.

    Signed-off-by: Johannes Berg

    Johannes Berg