Skip to content
Snippets Groups Projects
  1. Nov 09, 2018
    • Johannes Berg's avatar
      cfg80211: add peer measurement with FTM initiator API · 9bb7e0f2
      Johannes Berg authored
      
      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: default avatarJohannes Berg <johannes.berg@intel.com>
      9bb7e0f2
  2. Oct 02, 2018
  3. Jun 15, 2018
  4. May 23, 2018
  5. Apr 19, 2018
  6. Mar 27, 2018
  7. Feb 19, 2018
    • Kirill Tkhai's avatar
      net: Convert cfg80211_pernet_ops · 9c537ca1
      Kirill Tkhai authored
      
      This patch finishes converting pernet_operations
      registered in net/wireless directory.
      
      These pernet_operations have only exit method,
      which moves devices to init_net. This action
      is not pernet_operations-specific, and function
      cfg80211_switch_netns() may be called all time
      during the system life. All necessary protection
      against concurrent cfg80211_pernet_exit() is made
      by rtnl_lock(). So, cfg80211_pernet_ops is able
      to be marked as async.
      
      Signed-off-by: default avatarKirill Tkhai <ktkhai@virtuozzo.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9c537ca1
  8. Jan 15, 2018
  9. Oct 11, 2017
    • Johannes Berg's avatar
      cfg80211: support loading regulatory database as firmware file · 007f6c5e
      Johannes Berg authored
      
      As the current regulatory database is only about 4k big, and already
      difficult to extend, we decided that overall it would be better to
      get rid of the complications with CRDA and load the database into the
      kernel directly, but in a new format that is extensible.
      
      The new file format can be extended since it carries a length field
      on all the structs that need to be extensible.
      
      In order to be able to request firmware when the module initializes,
      move cfg80211 from subsys_initcall() to the later fs_initcall(); the
      firmware loader is at the same level but linked earlier, so it can
      be called from there. Otherwise, when both the firmware loader and
      cfg80211 are built-in, the request will crash the kernel. We also
      need to be before device_initcall() so that cfg80211 is available
      for devices when they initialize.
      
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      007f6c5e
  10. Jun 13, 2017
  11. Apr 28, 2017
  12. Apr 26, 2017
  13. Mar 17, 2017
  14. Mar 06, 2017
    • Vasanthakumar Thiagarajan's avatar
      cfg80211: Share Channel DFS state across wiphys of same DFS domain · 89766727
      Vasanthakumar Thiagarajan authored
      
      Sharing DFS channel state across multiple wiphys (radios) could
      be useful with multiple radios on the system. When one radio
      completes CAC and markes the channel available another radio
      can use this information and start beaconing without really doing
      CAC.
      
      Whenever there is a state change in dfs channel associated to
      a particular wiphy the the same state change is propagated to
      other wiphys having the same DFS reg domain configuration.
      Also when a new wiphy is created the dfs channel state of
      other existing wiphys of same DFS domain is copied.
      
      Signed-off-by: default avatarVasanthakumar Thiagarajan <vthiagar@qti.qualcomm.com>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      89766727
    • Johannes Berg's avatar
      cfg80211: combine two nested ifs into a single condition · d4f29978
      Johannes Berg authored
      
      Combine two instances of having two nested if statements
      into a single one with a combined condition to reduce the
      indentation.
      
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      d4f29978
    • Andrew Zaborowski's avatar
      cfg80211: Accept multiple RSSI thresholds for CQM · 4a4b8169
      Andrew Zaborowski authored
      
      Change the SET CQM command's RSSI threshold attribute to accept any
      number of thresholds as a sorted array.  The API should be backwards
      compatible so that if one s32 threshold value is passed, the old
      mechanism is enabled.  The netlink event generated is the same in both
      cases.
      
      cfg80211 handles an arbitrary number of RSSI thresholds but drivers have
      to provide a method (set_cqm_rssi_range_config) that configures a range
      set by a high and a low value.  Drivers have to call back when the RSSI
      goes out of that range and there's no additional event for each time the
      range is reconfigured as there was with the current one-threshold API.
      
      This method doesn't have a hysteresis parameter because there's no
      benefit to the cfg80211 code from having the hysteresis be handled by
      hardware/driver in terms of the number of wakeups.  At the same time
      it would likely be less consistent between drivers if offloaded or
      done in the drivers.
      
      Signed-off-by: default avatarAndrew Zaborowski <andrew.zaborowski@intel.com>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      4a4b8169
  15. Feb 09, 2017
    • Luca Coelho's avatar
      cfg80211: fix NAN bands definition · 8585989d
      Luca Coelho authored
      
      The nl80211_nan_dual_band_conf enumeration doesn't make much sense.
      The default value is assigned to a bit, which makes it weird if the
      default bit and other bits are set at the same time.
      
      To improve this, get rid of NL80211_NAN_BAND_DEFAULT and add a wiphy
      configuration to let the drivers define which bands are supported.
      This is exposed to the userspace, which then can make a decision on
      which band(s) to use.  Additionally, rename all "dual_band" elements
      to "bands", to make things clearer.
      
      Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      8585989d
  16. Jan 09, 2017
  17. Oct 27, 2016
    • Johannes Berg's avatar
      cfg80211: disallow beacon_int_min_gcd with IBSS · 56271da2
      Johannes Berg authored
      
      This can't really be supported right now, because the IBSS
      interface may change its beacon interval at any time due to
      joining another network; thus, there's already "support"
      for different beacon intervals here, implicitly.
      
      Until we figure out how we should handle this case (continue
      to allow it to arbitrarily join? Join only if compatible?)
      disallow advertising that different beacon intervals are
      supported if IBSS is allowed.
      
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      56271da2
    • Arend Van Spriel's avatar
      cfg80211: add generic helper to check interface is running · 73c7da3d
      Arend Van Spriel authored
      
      Add a helper using wdev to check if interface is running. This
      deals with both non-netdev and netdev interfaces. In struct
      wireless_dev replace 'p2p_started' and 'nan_started' by
      'is_running' as those are mutually exclusive anyway, and unify
      all the code to use wdev_running().
      
      Signed-off-by: default avatarArend van Spriel <arend.vanspriel@broadcom.com>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      73c7da3d
    • Johannes Berg's avatar
      wireless: deprecate WDS and disable by default · 8f205423
      Johannes Berg authored
      
      The old WDS 4-addr frame support is very limited, e.g.
       * no encryption is possible on such links
       * it cannot support rate/HT/VHT negotiation
       * management APIs are very restricted
      
      These make the WDS legacy mode useless in practice.
      
      All of these are resolved by the 4-addr AP/client support,
      so there's also no reason to improve WDS in the future.
      
      Therefore, add a Kconfig option to disable legacy WDS.
      This gives people an "emergency valve" while they migrate
      to the better-supported 4-addr AP/client option; we plan
      to remove it (and the associated cfg80211/mac80211 code,
      which is the ultimate goal) in the future.
      
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      8f205423
  18. Sep 30, 2016
  19. Sep 12, 2016
  20. Aug 11, 2016
    • Denis Kenzior's avatar
      cfg80211: always notify userspace when wireless netdev is removed · 7f8ed01e
      Denis Kenzior authored
      
      This change alters the semantics of NL80211_CMD_DEL_INTERFACE events
      by always sending this event whenever a net_device object associated
      with a wdev is destroyed.  Prior to this change, this event was only
      emitted as a result of NL80211_CMD_DEL_INTERFACE command sent from
      userspace.  This allows userspace to reliably detect when wireless
      interfaces have been removed, e.g. due to USB removal events, etc.
      
      For wireless device objects without an associated net_device (e.g.
      NL80211_IFTYPE_P2P_DEVICE), the NL80211_CMD_DEL_INTERFACE event is
      now generated inside cfg80211_unregister_wdev.
      
      Signed-off-by: default avatarDenis Kenzior <denkenz@gmail.com>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      7f8ed01e
    • Denis Kenzior's avatar
      cfg80211: always notify userspace of new wireless netdevs · 896ff063
      Denis Kenzior authored
      
      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: default avatarDenis Kenzior <denkenz@gmail.com>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      896ff063
  21. Jul 06, 2016
    • Avraham Stern's avatar
      nl80211: support beacon report scanning · 1d76250b
      Avraham Stern authored
      
      Beacon report radio measurement requires reporting observed BSSs
      on the channels specified in the beacon request. If the measurement
      mode is set to passive or active, it requires actually performing a
      scan (passive or active, accordingly), and reporting the time that
      the scan was started and the time each beacon/probe was received
      (both in terms of TSF of the BSS of the requesting AP). If the
      request mode is table, this information is optional.
      In addition, the radio measurement request specifies the channel
      dwell time for the measurement.
      
      In order to use scan for beacon report when the mode is active or
      passive, add a parameter to scan request that specifies the
      channel dwell time, and add scan start time and beacon received time
      to scan results information.
      
      Supporting beacon report is required for Multi Band Operation (MBO).
      
      Signed-off-by: default avatarAssaf Krauss <assaf.krauss@intel.com>
      Signed-off-by: default avatarDavid Spinadel <david.spinadel@intel.com>
      Signed-off-by: default avatarAvraham Stern <avraham.stern@intel.com>
      Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      1d76250b
  22. Jun 09, 2016
  23. May 31, 2016
  24. May 12, 2016
  25. Apr 12, 2016
  26. Apr 05, 2016
  27. Feb 24, 2016
  28. Jan 29, 2016
    • Johannes Berg's avatar
      cfg80211/wext: fix message ordering · cb150b9d
      Johannes Berg authored
      
      Since cfg80211 frequently takes actions from its netdev notifier
      call, wireless extensions messages could still be ordered badly
      since the wext netdev notifier, since wext is built into the
      kernel, runs before the cfg80211 netdev notifier. For example,
      the following can happen:
      
      5: wlan1: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN group default
          link/ether 02:00:00:00:01:00 brd ff:ff:ff:ff:ff:ff
      5: wlan1: <BROADCAST,MULTICAST,UP>
          link/ether
      
      when setting the interface down causes the wext message.
      
      To also fix this, export the wireless_nlevent_flush() function
      and also call it from the cfg80211 notifier.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      cb150b9d
  29. Oct 15, 2015
Loading