22 Feb, 2019

1 commit

  • This extends the NL80211_CMD_ASSOCIATE event case to report
    NL80211_ATTR_REQ_IE similarly to what is already done with the
    NL80211_CMD_CONNECT events if the driver provides this information. In
    practice, this adds (Re)Association Request frame information element
    reporting to mac80211 drivers for the cases where user space SME is
    used.

    This provides more information for user space to figure out which
    capabilities were negotiated for the association. For example, this can
    be used to determine whether HT, VHT, or HE is used.

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

    Jouni Malinen
     

09 Nov, 2018

1 commit

  • Add a new "peer measurement" API, that can be used to measure
    certain things related to a peer. Right now, only implement
    FTM (flight time measurement) over it, but the idea is that
    it'll be extensible to also support measuring the necessary
    things to calculate e.g. angle-of-arrival for WiGig.

    The API is structured to have a generic list of peers and
    channels to measure with/on, and then for each of those a
    set of measurements (again, only FTM right now) to perform.

    Results are sent to the requesting socket, including a final
    complete message.

    Closing the controlling netlink socket will abort a running
    measurement.

    v3:
    - add a bit to report "final" for partial results
    - remove list keeping etc. and just unicast out the results
    to the requester (big code reduction ...)
    - also send complete message unicast, and as a result
    remove the multicast group
    - separate out struct cfg80211_pmsr_ftm_request_peer
    from struct cfg80211_pmsr_request_peer
    - document timeout == 0 if no timeout
    - disallow setting timeout nl80211 attribute to 0,
    must not include attribute for no timeout
    - make MAC address randomization optional
    - change num bursts exponent default to 0 (1 burst, rather
    rather than the old default of 15==don't care)

    v4:
    - clarify NL80211_ATTR_TIMEOUT documentation

    v5:
    - remove unnecessary nl80211 multicast/family changes
    - remove partial results bit/flag, final is sufficient
    - add max_bursts_exponent, max_ftms_per_burst to capability
    - rename "frames per burst" -> "FTMs per burst"

    v6:
    - rename cfg80211_pmsr_free_wdev() to cfg80211_pmsr_wdev_down()
    and call it in leave, so the device can't go down with any
    pending measurements

    v7:
    - wording fixes (Lior)
    - fix ftm.max_bursts_exponent to allow having the limit of 0 (Lior)

    v8:
    - copyright statements
    - minor coding style fixes
    - fix error path leak

    Signed-off-by: Johannes Berg

    Johannes Berg
     

04 Nov, 2017

1 commit


02 Nov, 2017

1 commit

  • Many source files in the tree are missing licensing information, which
    makes it harder for compliance tools to determine the correct license.

    By default all files without license information are under the default
    license of the kernel, which is GPL version 2.

    Update the files which contain no license information with the 'GPL-2.0'
    SPDX license identifier. The SPDX identifier is a legally binding
    shorthand, which can be used instead of the full boiler plate text.

    This patch is based on work done by Thomas Gleixner and Kate Stewart and
    Philippe Ombredanne.

    How this work was done:

    Patches were generated and checked against linux-4.14-rc6 for a subset of
    the use cases:
    - file had no licensing information it it.
    - file was a */uapi/* one with no licensing information in it,
    - file was a */uapi/* one with existing licensing information,

    Further patches will be generated in subsequent months to fix up cases
    where non-standard license headers were used, and references to license
    had to be inferred by heuristics based on keywords.

    The analysis to determine which SPDX License Identifier to be applied to
    a file was done in a spreadsheet of side by side results from of the
    output of two independent scanners (ScanCode & Windriver) producing SPDX
    tag:value files created by Philippe Ombredanne. Philippe prepared the
    base worksheet, and did an initial spot review of a few 1000 files.

    The 4.13 kernel was the starting point of the analysis with 60,537 files
    assessed. Kate Stewart did a file by file comparison of the scanner
    results in the spreadsheet to determine which SPDX license identifier(s)
    to be applied to the file. She confirmed any determination that was not
    immediately clear with lawyers working with the Linux Foundation.

    Criteria used to select files for SPDX license identifier tagging was:
    - Files considered eligible had to be source code files.
    - Make and config files were included as candidates if they contained >5
    lines of source
    - File already had some variant of a license header in it (even if
    Reviewed-by: Philippe Ombredanne
    Reviewed-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

02 Oct, 2017

1 commit

  • Add an event that indicates that a connection is authorized
    (i.e. the 4 way handshake was performed by the driver). This event
    should be sent by the driver after sending a connect/roamed event.

    This is useful for networks that require 802.1X authentication.
    In cases that the driver supports 4 way handshake offload, but the
    802.1X authentication is managed by user space, the driver needs to
    inform user space right after the 802.11 association was completed
    so user space can initialize its 802.1X state machine etc.
    However, it is also possible that the AP will choose to skip the
    802.1X authentication (e.g. when PMKSA caching is used) and proceed
    with the 4 way handshake immediately. In this case the driver needs
    to inform user space that 802.1X authentication is no longer required
    (e.g. to prevent user space from disconnecting since it did not get
    any EAPOLs from the AP).

    This is also useful for roaming, in which case it is possible that
    the driver used the Fast Transition protocol so 802.1X is not
    required.

    Since there will now be a dedicated notification indicating that the
    connection is authorized, the authorized flag can be removed from the
    roamed event. Drivers can send the new port authorized event right
    after sending the roamed event to indicate the new AP is already
    authorized. This therefore reserves the old PORT_AUTHORIZED attribute.

    Signed-off-by: Avraham Stern
    Signed-off-by: Johannes Berg

    Avraham Stern
     

28 Apr, 2017

1 commit

  • cfg80211_roamed() and cfg80211_roamed_bss() take the same arguments
    except that cfg80211_roamed() requires the BSSID and
    cfg80211_roamed_bss() requires the bss entry.

    Unify the two functions by using a struct for driver initiated
    roaming information so that either the BSSID or the bss entry can be
    passed as an argument to the unified function.

    Signed-off-by: Avraham Stern
    [modified the ath6k, brcm80211, rndis and wlan-ng drivers accordingly]
    Signed-off-by: Luca Coelho
    [modify brcmfmac to remove the useless cast, spotted by Arend]
    Signed-off-by: Johannes Berg

    Avraham Stern
     

18 Apr, 2017

1 commit

  • For multi-scheduled scan support in subsequent patch a request id
    will be added. This patch add this request id to the scheduled
    scan event messages. For now the request id will always be zero.
    With multi-scheduled scan its value will inform user-space to which
    scan the event relates.

    Reviewed-by: Hante Meuleman
    Reviewed-by: Pieter-Paul Giesberts
    Reviewed-by: Franky Lin
    Signed-off-by: Arend van Spriel
    Signed-off-by: Johannes Berg

    Arend Van Spriel
     

31 Mar, 2017

1 commit

  • Currently the connect event from driver takes all the connection
    response parameters as arguments. With support for new features these
    response parameters can grow. Use a structure to pass these parameters
    rather than passing them as function arguments.

    Signed-off-by: Vidyullatha Kanchanapally
    Signed-off-by: Jouni Malinen
    [add to documentation]
    Signed-off-by: Johannes Berg

    Vidyullatha Kanchanapally
     

13 Jan, 2017

1 commit

  • This enhances the connect timeout API to also carry the reason for the
    timeout. These reason codes for the connect time out are represented by
    enum nl80211_timeout_reason and are passed to user space through a new
    attribute NL80211_ATTR_TIMEOUT_REASON (u32).

    Signed-off-by: Purushottam Kushwaha
    Signed-off-by: Jouni Malinen
    [keep gfp_t argument last]
    Signed-off-by: Johannes Berg

    Purushottam Kushwaha
     

16 Dec, 2016

1 commit

  • A couple of functions used with scan events were named with
    term "send" although they were only preparing the the event
    message so renamed those.

    Also remove nl80211_send_sched_scan_results() in favor of
    just calling nl80211_send_sched_scan() with the right value.

    Signed-off-by: Arend van Spriel
    [mention nl80211_send_sched_scan_results() in the commit log]
    Signed-off-by: Johannes Berg

    Arend Van Spriel
     

11 Aug, 2016

1 commit

  • This change alters the semantics of NL80211_CMD_NEW_INTERFACE events
    by always sending this event whenever a new net_device object
    associated with a wdev is registered. Prior to this change, this event
    was only sent as a result of NL80211_CMD_NEW_INTERFACE command sent
    from userspace. This allows userspace to reliably detect new wireless
    interfaces (e.g. due to hardware hot-plug events, etc).

    For wdevs created without an associated net_device object (e.g.
    NL80211_IFTYPE_P2P_DEVICE), the NL80211_CMD_NEW_INTERFACE event is
    still generated inside the relevant nl80211 command handler.

    Signed-off-by: Denis Kenzior
    Signed-off-by: Johannes Berg

    Denis Kenzior
     

31 May, 2016

1 commit

  • Previously, the status parameter to cfg80211_connect_result() was
    documented as using WLAN_STATUS_UNSPECIFIED_FAILURE (1) when the real
    status code for the failure is not known. This value can be used by an
    AP (and often is) and as such, user space cannot distinguish between
    explicitly rejected authentication/association and not being able to
    even try to associate or not receiving a response from the AP.

    Add a new inline function, cfg80211_connect_timeout(), to be used when
    the driver knows that the connection attempt failed due to a reason
    where connection could not be attempt or no response was received from
    the AP. The internal functions now allow a negative status value (-1) to
    be used as an indication of this special case. This results in the
    NL80211_ATTR_TIMED_OUT to be added to the NL80211_CMD_CONNECT event to
    allow user space to determine this case was hit. For backwards
    compatibility, NL80211_STATUS_CODE with the value
    WLAN_STATUS_UNSPECIFIED_FAILURE is still indicated in the event in such
    a case.

    Signed-off-by: Jouni Malinen
    [johannes: fix cfg80211_connect_bss() prototype to use int for status,
    add cfg80211_connect_timeout() to docbook, fix docbook]
    Signed-off-by: Johannes Berg

    Jouni Malinen
     

17 Dec, 2014

1 commit

  • Add a new regulatory flag that allows a driver to manage regdomain
    changes/updates for its own wiphy.
    A self-managed wiphys only employs regulatory information obtained from
    the FW and driver and does not use other cfg80211 sources like
    beacon-hints, country-code IEs and hints from other devices on the same
    system. Conversely, a self-managed wiphy does not share its regulatory
    hints with other devices in the system. If a system contains several
    devices, one or more of which are self-managed, there might be
    contradictory regulatory settings between them. Usage of flag is
    generally discouraged. Only use it if the FW/driver is incompatible
    with non-locally originated hints.

    A new API lets the driver send a complete regdomain, to be applied on
    its wiphy only.

    After a wiphy-specific regdomain change takes place, usermode will get
    a new type of change notification. The regulatory core also takes care
    enforce regulatory restrictions, in case some interfaces are on
    forbidden channels.

    Signed-off-by: Jonathan Doron
    Signed-off-by: Arik Nemtsov
    Reviewed-by: Luis R. Rodriguez
    Signed-off-by: Johannes Berg

    Jonathan Doron
     

11 Sep, 2014

1 commit

  • Userspace might need to know what queues are configured
    for uapsd (e.g. for setting proper default values in tspecs).

    Add this bitmap to the association event (inside wmm
    nested attribute)

    Add additional parameter to cfg80211_rx_assoc_resp,
    and update its callers.

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

    Eliad Peller
     

26 May, 2014

1 commit


14 Feb, 2014

1 commit


06 Feb, 2014

1 commit

  • Due to the previous commit, when a scan finishes, it is in theory
    possible to hit the following sequence:
    1. interface starts being removed
    2. scan is cancelled by driver and cfg80211 is notified
    3. scan done work is scheduled
    4. interface is removed completely, rdev->scan_req is freed,
    event sent to userspace but scan done work remains pending
    5. new scan is requested on another virtual interface
    6. scan done work runs, freeing the still-running scan

    To fix this situation, hang on to the scan done message and block
    new scans while that is the case, and only send the message from
    the work function, regardless of whether the scan_req is already
    freed from interface removal. This makes step 5 above impossible
    and changes step 6 to be
    5. scan done work runs, sending the scan done message

    As this can't work for wext, so we send the message immediately,
    but this shouldn't be an issue since we still return -EBUSY.

    Signed-off-by: Johannes Berg

    Johannes Berg
     

05 Feb, 2014

1 commit

  • There are a few cases, e.g. suspend, where an AP interface is
    stopped by the kernel rather than by userspace request, most
    commonly when suspending. To let userspace know about this,
    send the NL80211_CMD_STOP_AP command as an event every time
    an AP interface is stopped. This also happens when userspace
    did in fact request the AP stop, but that's not a problem.

    For full-MAC drivers this may need to be extended to also
    cover cases where the device stopped the AP operation for
    some reason, this a bit more complicated because then all
    cfg80211 state also needs to be reset; such API is not part
    of this patch.

    Signed-off-by: Johannes Berg

    Johannes Berg
     

26 Nov, 2013

1 commit

  • To report channel width correctly we have
    to send correct channel parameters from
    mac80211 when calling cfg80211_cac_event().

    This is required in case of using channel width
    higher than 20MHz and we have to set correct
    dfs channel state after CAC (NL80211_DFS_AVAILABLE).

    Signed-off-by: Janusz Dziedzic
    Reviewed-by: Luis R. Rodriguez
    Signed-off-by: Johannes Berg

    Janusz Dziedzic
     

23 Aug, 2013

1 commit

  • Add flags intended to report various auxiliary information
    and introduce the NL80211_RXMGMT_FLAG_ANSWERED flag to report
    that the frame was already answered by the device.

    Signed-off-by: Vladimir Kondratiev
    [REPLIED->ANSWERED, reword commit message]
    Signed-off-by: Johannes Berg

    Vladimir Kondratiev
     

16 Jul, 2013

1 commit

  • In most cases, host that receives IPv4 and IPv6 multicast/broadcast
    packets does not do anything with these packets. Therefore the
    reception of these unwanted packets causes unnecessary processing
    and power consumption.

    Packet coalesce feature helps to reduce number of received
    interrupts to host by buffering these packets in firmware/hardware
    for some predefined time. Received interrupt will be generated when
    one of the following events occur.
    a) Expiration of hardware timer whose expiration time is set to
    maximum coalescing delay of matching coalesce rule.
    b) Coalescing buffer in hardware reaches it's limit.
    c) Packet doesn't match any of the configured coalesce rules.

    This patch adds set/get configuration support for packet coalesce.
    User needs to configure following parameters for creating a coalesce
    rule.
    a) Maximum coalescing delay
    b) List of packet patterns which needs to be matched
    c) Condition for coalescence. pattern 'match' or 'no match'
    Multiple such rules can be created.

    This feature needs to be advertised during driver initialization.
    Drivers are supposed to do required firmware/hardware settings based
    on user configuration.

    Signed-off-by: Amitkumar Karwar
    Signed-off-by: Bing Zhao
    [fix kernel-doc, change free function, fix copy/paste error]
    Signed-off-by: Johannes Berg

    Amitkumar Karwar
     

06 Mar, 2013

1 commit

  • This is the sort of thing gcc's LTO could do, but since
    we don't have that yet we can also do it manually. The
    advantage is reduced code, both source and binary, e.g.
    on x86-64

    text data bss dec hex filename
    442825 56230 776 499831 7a077 cfg80211.ko (before)
    441585 56230 776 498591 79b9f cfg80211.ko (after)

    a reduction of ~1k.

    But in order to not complicate the code move only those
    functions that are simple wrappers, not those that have
    functionality of their own.

    Signed-off-by: Johannes Berg

    Johannes Berg
     

15 Feb, 2013

1 commit

  • Add new NL80211_CMD_RADAR_DETECT, which starts the Channel
    Availability Check (CAC). This command will also notify the
    usermode about events (CAC finished, CAC aborted, radar
    detected, NOP finished).
    Once radar detection has started it should continuously
    monitor for radars as long as the channel is active.

    This patch enables DFS for AP mode in nl80211/cfg80211.

    Based on original patch by Victor Goldenshtein

    Signed-off-by: Simon Wunderlich
    [remove WIPHY_FLAG_HAS_RADAR_DETECT again -- my mistake]
    Signed-off-by: Johannes Berg

    Simon Wunderlich
     

26 Nov, 2012

2 commits

  • Instead of passing a channel pointer and channel type
    to all functions and driver methods, pass a new channel
    definition struct. Right now, this struct contains just
    the control channel and channel type, but for VHT this
    will change.

    Also, add a small inline cfg80211_get_chandef_type() so
    that drivers don't need to use the _type field of the
    new structure all the time, which will change.

    Signed-off-by: Johannes Berg

    Johannes Berg
     
  • As mwifiex (and mac80211 in the software case) are the
    only drivers actually implementing remain-on-channel
    with channel type, userspace can't be relying on it.
    This is the case, as it's used only for P2P operations
    right now.

    Rather than adding a flag to tell userspace whether or
    not it can actually rely on it, simplify all the code
    by removing the ability to use different channel types.
    Leave only the validation of the attribute, so that if
    we extend it again later (with the needed capability
    flag), it can't break userspace sending invalid data.

    Signed-off-by: Johannes Berg

    Johannes Berg
     

19 Sep, 2012

1 commit


17 Jul, 2012

1 commit

  • Let the user configure serveral TX error conection quality monitoring
    parameters: % error rate, survey interval, and # of attempted packets.

    On exceeding the TX failure rate over the given interval, the driver
    will send a CQM notify event with the actual TX failure rate and
    packets attempted.

    Signed-off-by: Thomas Pedersen
    Signed-off-by: Johannes Berg

    Thomas Pedersen
     

12 Jul, 2012

1 commit


09 Jul, 2012

1 commit

  • The management frame and remain-on-channel APIs will be
    needed in the P2P device abstraction, so move them over
    to the new wdev-based APIs. Userspace can still use both
    the interface index and wdev identifier for them so it's
    backward compatible, but for the P2P Device wdev it will
    be able to use the wdev identifier only.

    Signed-off-by: Johannes Berg

    Johannes Berg
     

12 Apr, 2012

1 commit

  • The firmware may decide to switch channels while already beaconing, e.g.
    in response to a cfg80211 connect request on a different vif. Add this
    event to notify userspace when an AP or GO interface has successfully
    migrated to a new channel, so it can update its configuration
    accordingly.

    Signed-off-by: Thomas Pedersen
    Signed-off-by: John W. Linville

    Thomas Pedersen
     

07 Mar, 2012

1 commit


10 Nov, 2011

2 commits


20 Sep, 2011

1 commit


07 Jul, 2011

1 commit

  • In certain circumstances, like WoWLAN scenarios,
    devices may implement (partial) GTK rekeying on
    the device to avoid waking up the host for it.

    In order to successfully go through GTK rekeying,
    the KEK, KCK and the replay counter are required.

    Add API to let the supplicant hand the parameters
    to the driver which may store it for future GTK
    rekey operations.

    Note that, of course, if GTK rekeying is done by
    the device, the EAP frame must not be passed up
    to userspace, instead a rekey event needs to be
    sent to let userspace update its replay counter.

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     

12 May, 2011

1 commit

  • Implement new functionality for scheduled scan offload. With this feature we
    can scan automatically at certain intervals.

    The idea is that the hardware can perform scan automatically and filter on
    desired results without waking up the host unnecessarily.

    Add NL80211_CMD_START_SCHED_SCAN and NL80211_CMD_STOP_SCHED_SCAN
    commands to the nl80211 interface. When results are available they are
    reported by NL80211_CMD_SCHED_SCAN_RESULTS events. The userspace is
    informed when the scheduled scan has stopped with a
    NL80211_CMD_SCHED_SCAN_STOPPED event, which can be triggered either by
    the driver or by a call to NL80211_CMD_STOP_SCHED_SCAN.

    Signed-off-by: Luciano Coelho
    Signed-off-by: John W. Linville

    Luciano Coelho
     

13 Apr, 2011

1 commit

  • Notify userspace when a beacon/presp is received from a suitable mesh
    peer candidate for whom no sta information exists. Userspace can then
    decide to create a sta info for the candidate. If userspace is not
    ready to authenticate the peer right away, it can create the sta info
    with the authenticated flag unset and set it later.

    Signed-off-by: Javier Cardona
    Signed-off-by: John W. Linville

    Javier Cardona
     

31 Mar, 2011

1 commit

  • Indicate an NL80211_CMD_DEL_STATION event when a station entry in
    mac80211 is deleted to match with the NL80211_CMD_NEW_STATION event
    that is used when the entry was added. This is needed, e.g., to allow
    user space to remove a peer from RSN IBSS Authenticator state machine
    to avoid re-authentication and re-keying delays when the peer is not
    reachable anymore.

    Signed-off-by: Jouni Malinen
    Reviewed-by: Johannes Berg
    Signed-off-by: John W. Linville

    Jouni Malinen
     

17 Dec, 2010

1 commit

  • Add a new notification to indicate that a received, unprotected
    Deauthentication or Disassociation frame was dropped due to
    management frame protection being in use. This notification is
    needed to allow user space (e.g., wpa_supplicant) to implement
    SA Query procedure to recover from association state mismatch
    between an AP and STA.

    This is needed to avoid getting stuck in non-working state when MFP
    (IEEE 802.11w) is used and a protected Deauthentication or
    Disassociation frame is dropped for any reason. After that, the
    station would silently discard any unprotected Deauthentication or
    Disassociation frame that could be indicating that the AP does not
    have association for the STA (when the Reason Code would be 6 or 7).
    IEEE Std 802.11w-2009, 11.13 describes this recovery mechanism.

    Signed-off-by: Jouni Malinen
    Signed-off-by: John W. Linville

    Jouni Malinen
     

25 Nov, 2010

1 commit

  • This adds the ability for drivers to use CQM events
    to notify about packet loss for specific stations
    (which could be the AP for the managed mode case).
    Since the threshold might be determined by the
    driver (it isn't passed in right now) it will be
    passed out of the driver to userspace in the event.

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg