]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - include/net/cfg80211.h
Merge tag 'mac80211-next-for-davem-2016-07-06' of git://git.kernel.org/pub/scm/linux...
[karo-tx-linux.git] / include / net / cfg80211.h
index 7bbb00d8b2cdda85b9fff71d89cca69a88c61a6c..9c23f4d33e06c1ad1dab246b822d5dcc76c854ac 100644 (file)
@@ -330,6 +330,9 @@ struct ieee80211_supported_band {
  * in a separate chapter.
  */
 
+#define VHT_MUMIMO_GROUPS_DATA_LEN (WLAN_MEMBERSHIP_LEN +\
+                                   WLAN_USER_POSITION_LEN)
+
 /**
  * struct vif_params - describes virtual interface parameters
  * @use_4addr: use 4-address frames
@@ -339,10 +342,13 @@ struct ieee80211_supported_band {
  *     This feature is only fully supported by drivers that enable the
  *     %NL80211_FEATURE_MAC_ON_CREATE flag.  Others may support creating
  **    only p2p devices with specified MAC.
+ * @vht_mumimo_groups: MU-MIMO groupID. used for monitoring only
+ *      packets belonging to that MU-MIMO groupID.
  */
 struct vif_params {
-       int use_4addr;
-       u8 macaddr[ETH_ALEN];
+       int use_4addr;
+       u8 macaddr[ETH_ALEN];
+       u8 vht_mumimo_groups[VHT_MUMIMO_GROUPS_DATA_LEN];
 };
 
 /**
@@ -774,6 +780,7 @@ enum station_parameters_apply_mask {
  *     (bitmask of BIT(NL80211_STA_FLAG_...))
  * @listen_interval: listen interval or -1 for no change
  * @aid: AID or zero for no change
+ * @peer_aid: mesh peer AID or zero for no change
  * @plink_action: plink action to take
  * @plink_state: set the peer link state for a station
  * @ht_capa: HT capabilities of station
@@ -805,6 +812,7 @@ struct station_parameters {
        u32 sta_modify_mask;
        int listen_interval;
        u16 aid;
+       u16 peer_aid;
        u8 supported_rates_len;
        u8 plink_action;
        u8 plink_state;
@@ -1417,6 +1425,21 @@ struct cfg80211_ssid {
        u8 ssid_len;
 };
 
+/**
+ * struct cfg80211_scan_info - information about completed scan
+ * @scan_start_tsf: scan start time in terms of the TSF of the BSS that the
+ *     wireless device that requested the scan is connected to. If this
+ *     information is not available, this field is left zero.
+ * @tsf_bssid: the BSSID according to which %scan_start_tsf is set.
+ * @aborted: set to true if the scan was aborted for any reason,
+ *     userspace will be notified of that
+ */
+struct cfg80211_scan_info {
+       u64 scan_start_tsf;
+       u8 tsf_bssid[ETH_ALEN] __aligned(2);
+       bool aborted;
+};
+
 /**
  * struct cfg80211_scan_request - scan request description
  *
@@ -1427,12 +1450,17 @@ struct cfg80211_ssid {
  * @scan_width: channel width for scanning
  * @ie: optional information element(s) to add into Probe Request or %NULL
  * @ie_len: length of ie in octets
+ * @duration: how long to listen on each channel, in TUs. If
+ *     %duration_mandatory is not set, this is the maximum dwell time and
+ *     the actual dwell time may be shorter.
+ * @duration_mandatory: if set, the scan duration must be as specified by the
+ *     %duration field.
  * @flags: bit field of flags controlling operation
  * @rates: bitmap of rates to advertise for each band
  * @wiphy: the wiphy this was for
  * @scan_start: time (in jiffies) when the scan started
  * @wdev: the wireless device to scan for
- * @aborted: (internal) scan request was notified as aborted
+ * @info: (internal) information about completed scan
  * @notified: (internal) scan request was notified as done or aborted
  * @no_cck: used to send probe requests at non CCK rate in 2GHz band
  * @mac_addr: MAC address used with randomisation
@@ -1448,6 +1476,8 @@ struct cfg80211_scan_request {
        enum nl80211_bss_scan_width scan_width;
        const u8 *ie;
        size_t ie_len;
+       u16 duration;
+       bool duration_mandatory;
        u32 flags;
 
        u32 rates[NUM_NL80211_BANDS];
@@ -1461,7 +1491,8 @@ struct cfg80211_scan_request {
        /* internal */
        struct wiphy *wiphy;
        unsigned long scan_start;
-       bool aborted, notified;
+       struct cfg80211_scan_info info;
+       bool notified;
        bool no_cck;
 
        /* keep last */
@@ -1594,12 +1625,19 @@ enum cfg80211_signal_type {
  *     buffered on the device) and be accurate to about 10ms.
  *     If the frame isn't buffered, just passing the return value of
  *     ktime_get_boot_ns() is likely appropriate.
+ * @parent_tsf: the time at the start of reception of the first octet of the
+ *     timestamp field of the frame. The time is the TSF of the BSS specified
+ *     by %parent_bssid.
+ * @parent_bssid: the BSS according to which %parent_tsf is set. This is set to
+ *     the BSS that requested the scan in which the beacon/probe was received.
  */
 struct cfg80211_inform_bss {
        struct ieee80211_channel *chan;
        enum nl80211_bss_scan_width scan_width;
        s32 signal;
        u64 boottime_ns;
+       u64 parent_tsf;
+       u8 parent_bssid[ETH_ALEN] __aligned(2);
 };
 
 /**
@@ -4061,10 +4099,10 @@ const char *reg_initiator_name(enum nl80211_reg_initiator initiator);
  * cfg80211_scan_done - notify that scan finished
  *
  * @request: the corresponding scan request
- * @aborted: set to true if the scan was aborted for any reason,
- *     userspace will be notified of that
+ * @info: information about the completed scan
  */
-void cfg80211_scan_done(struct cfg80211_scan_request *request, bool aborted);
+void cfg80211_scan_done(struct cfg80211_scan_request *request,
+                       struct cfg80211_scan_info *info);
 
 /**
  * cfg80211_sched_scan_results - notify that new scan results are available