Merge tag 'mac80211-next-for-net-next-2020-02-14' of git://git.kernel.org/pub/scm...
[platform/kernel/linux-rpi.git] / include / net / cfg80211.h
index f22bd6c..7709b92 100644 (file)
@@ -95,6 +95,7 @@ struct wiphy;
  *     on this channel.
  * @IEEE80211_CHAN_NO_10MHZ: 10 MHz bandwidth is not permitted
  *     on this channel.
+ * @IEEE80211_CHAN_NO_HE: HE operation is not permitted on this channel.
  *
  */
 enum ieee80211_channel_flags {
@@ -111,6 +112,7 @@ enum ieee80211_channel_flags {
        IEEE80211_CHAN_IR_CONCURRENT    = 1<<10,
        IEEE80211_CHAN_NO_20MHZ         = 1<<11,
        IEEE80211_CHAN_NO_10MHZ         = 1<<12,
+       IEEE80211_CHAN_NO_HE            = 1<<13,
 };
 
 #define IEEE80211_CHAN_NO_HT40 \
@@ -260,6 +262,32 @@ struct ieee80211_he_obss_pd {
 };
 
 /**
+ * struct cfg80211_he_bss_color - AP settings for BSS coloring
+ *
+ * @color: the current color.
+ * @disabled: is the feature disabled.
+ * @partial: define the AID equation.
+ */
+struct cfg80211_he_bss_color {
+       u8 color;
+       bool disabled;
+       bool partial;
+};
+
+/**
+ * struct ieee80211_he_bss_color - AP settings for BSS coloring
+ *
+ * @color: the current color.
+ * @disabled: is the feature disabled.
+ * @partial: define the AID equation.
+ */
+struct ieee80211_he_bss_color {
+       u8 color;
+       bool disabled;
+       bool partial;
+};
+
+/**
  * struct ieee80211_sta_ht_cap - STA's HT capabilities
  *
  * This structure describes most essential parameters needed
@@ -990,6 +1018,7 @@ enum cfg80211_ap_settings_flags {
  * @twt_responder: Enable Target Wait Time
  * @flags: flags, as defined in enum cfg80211_ap_settings_flags
  * @he_obss_pd: OBSS Packet Detection settings
+ * @he_bss_color: BSS Color settings
  */
 struct cfg80211_ap_settings {
        struct cfg80211_chan_def chandef;
@@ -1018,6 +1047,7 @@ struct cfg80211_ap_settings {
        bool twt_responder;
        u32 flags;
        struct ieee80211_he_obss_pd he_obss_pd;
+       struct cfg80211_he_bss_color he_bss_color;
 };
 
 /**
@@ -3944,7 +3974,8 @@ struct cfg80211_ops {
        int     (*tx_control_port)(struct wiphy *wiphy,
                                   struct net_device *dev,
                                   const u8 *buf, size_t len,
-                                  const u8 *dest, const __be16 proto,
+                                  const u8 *dest, const u8 *src,
+                                  const __be16 proto,
                                   const bool noencrypt);
 
        int     (*get_ftm_responder_stats)(struct wiphy *wiphy,
@@ -4376,6 +4407,21 @@ struct cfg80211_pmsr_capabilities {
 };
 
 /**
+ * struct wiphy_iftype_akm_suites - This structure encapsulates supported akm
+ * suites for interface types defined in @iftypes_mask. Each type in the
+ * @iftypes_mask must be unique across all instances of iftype_akm_suites.
+ *
+ * @iftypes_mask: bitmask of interfaces types
+ * @akm_suites: points to an array of supported akm suites
+ * @n_akm_suites: number of supported AKM suites
+ */
+struct wiphy_iftype_akm_suites {
+       u16 iftypes_mask;
+       const u32 *akm_suites;
+       int n_akm_suites;
+};
+
+/**
  * struct wiphy - wireless hardware description
  * @reg_notifier: the driver's regulatory notification callback,
  *     note that if your driver uses wiphy_apply_custom_regulatory()
@@ -4387,8 +4433,16 @@ struct cfg80211_pmsr_capabilities {
  * @signal_type: signal type reported in &struct cfg80211_bss.
  * @cipher_suites: supported cipher suites
  * @n_cipher_suites: number of supported cipher suites
- * @akm_suites: supported AKM suites
+ * @akm_suites: supported AKM suites. These are the default AKMs supported if
+ *     the supported AKMs not advertized for a specific interface type in
+ *     iftype_akm_suites.
  * @n_akm_suites: number of supported AKM suites
+ * @iftype_akm_suites: array of supported akm suites info per interface type.
+ *     Note that the bits in @iftypes_mask inside this structure cannot
+ *     overlap (i.e. only one occurrence of each type is allowed across all
+ *     instances of iftype_akm_suites).
+ * @num_iftype_akm_suites: number of interface types for which supported akm
+ *     suites are specified separately.
  * @retry_short: Retry limit for short frames (dot11ShortRetryLimit)
  * @retry_long: Retry limit for long frames (dot11LongRetryLimit)
  * @frag_threshold: Fragmentation threshold (dot11FragmentationThreshold);
@@ -4595,6 +4649,9 @@ struct wiphy {
        int n_akm_suites;
        const u32 *akm_suites;
 
+       const struct wiphy_iftype_akm_suites *iftype_akm_suites;
+       unsigned int num_iftype_akm_suites;
+
        u8 retry_short;
        u8 retry_long;
        u32 frag_threshold;
@@ -4687,6 +4744,8 @@ struct wiphy {
        u32 txq_memory_limit;
        u32 txq_quantum;
 
+       unsigned long tx_queue_len;
+
        u8 support_mbssid:1,
           support_only_he_mbssid:1;