History

cfg80211: Add support for HE

Add support for the HE in cfg80211 and also add userspace API to nl80211 to send rate information out, conforming with P802.11ax_D2.0.

Luca Coelho committed 8 years ago

Commit c4cbaf71 parent 446faa16 files · +817 −5Browse files

Showing the changes to include/uapi/linux (1 of 6 files). Show all

Unified · Split

include/uapi/linux/nl80211.h+86−1
@@ -2237,6 +2237,9 @@ enum nl80211_commands { · 2236 unmodified lines
22372237 * enforced.
22382238 * @NL80211_ATTR_TXQ_QUANTUM: TXQ scheduler quantum (bytes). Number of bytes
22392239 * a flow is assigned on each round of the DRR scheduler.
2240+ * @NL80211_ATTR_HE_CAPABILITY: HE Capability information element (from
2241+ * association request when used with NL80211_CMD_NEW_STATION). Can be set
2242+ * only if %NL80211_STA_FLAG_WME is set.
22402243 *
22412244 * @NUM_NL80211_ATTR: total number of nl80211_attrs available
22422245 * @NL80211_ATTR_MAX: highest attribute number currently defined
@@ -2677,6 +2680,8 @@ enum nl80211_attrs { · 434 unmodified lines
26772680 NL80211_ATTR_TXQ_MEMORY_LIMIT,
26782681 NL80211_ATTR_TXQ_QUANTUM,
26792682
2683+ NL80211_ATTR_HE_CAPABILITY,
2684+
26802685 /* add attributes here, update the policy in nl80211.c */
26812686
26822687 __NL80211_ATTR_AFTER_LAST,
@@ -2726,7 +2731,8 @@ enum nl80211_attrs { · 43 unmodified lines
27262731 #define NL80211_TKIP_DATA_OFFSET_RX_MIC_KEY 24
27272732 #define NL80211_HT_CAPABILITY_LEN 26
27282733 #define NL80211_VHT_CAPABILITY_LEN 12
2729−
2734+#define NL80211_HE_MIN_CAPABILITY_LEN 16
2735+#define NL80211_HE_MAX_CAPABILITY_LEN 51
27302736 #define NL80211_MAX_NR_CIPHER_SUITES 5
27312737 #define NL80211_MAX_NR_AKM_SUITES 2
27322738
@@ -2853,6 +2859,38 @@ struct nl80211_sta_flag_update { · 120 unmodified lines
28532859 __u32 set;
28542860 } __attribute__((packed));
28552861
2862+/**
2863+ * enum nl80211_he_gi - HE guard interval
2864+ * @NL80211_RATE_INFO_HE_GI_0_8: 0.8 usec
2865+ * @NL80211_RATE_INFO_HE_GI_1_6: 1.6 usec
2866+ * @NL80211_RATE_INFO_HE_GI_3_2: 3.2 usec
2867+ */
2868+enum nl80211_he_gi {
2869+ NL80211_RATE_INFO_HE_GI_0_8,
2870+ NL80211_RATE_INFO_HE_GI_1_6,
2871+ NL80211_RATE_INFO_HE_GI_3_2,
2872+};
2873+
2874+/**
2875+ * enum nl80211_he_ru_alloc - HE RU allocation values
2876+ * @NL80211_RATE_INFO_HE_RU_ALLOC_26: 26-tone RU allocation
2877+ * @NL80211_RATE_INFO_HE_RU_ALLOC_52: 52-tone RU allocation
2878+ * @NL80211_RATE_INFO_HE_RU_ALLOC_106: 106-tone RU allocation
2879+ * @NL80211_RATE_INFO_HE_RU_ALLOC_242: 242-tone RU allocation
2880+ * @NL80211_RATE_INFO_HE_RU_ALLOC_484: 484-tone RU allocation
2881+ * @NL80211_RATE_INFO_HE_RU_ALLOC_996: 996-tone RU allocation
2882+ * @NL80211_RATE_INFO_HE_RU_ALLOC_2x996: 2x996-tone RU allocation
2883+ */
2884+enum nl80211_he_ru_alloc {
2885+ NL80211_RATE_INFO_HE_RU_ALLOC_26,
2886+ NL80211_RATE_INFO_HE_RU_ALLOC_52,
2887+ NL80211_RATE_INFO_HE_RU_ALLOC_106,
2888+ NL80211_RATE_INFO_HE_RU_ALLOC_242,
2889+ NL80211_RATE_INFO_HE_RU_ALLOC_484,
2890+ NL80211_RATE_INFO_HE_RU_ALLOC_996,
2891+ NL80211_RATE_INFO_HE_RU_ALLOC_2x996,
2892+};
2893+
28562894 /**
28572895 * enum nl80211_rate_info - bitrate information
28582896 *
@@ -2885,6 +2923,13 @@ struct nl80211_sta_flag_update { · 26 unmodified lines
28852923 * @NL80211_RATE_INFO_5_MHZ_WIDTH: 5 MHz width - note that this is
28862924 * a legacy rate and will be reported as the actual bitrate, i.e.
28872925 * a quarter of the base (20 MHz) rate
2926+ * @NL80211_RATE_INFO_HE_MCS: HE MCS index (u8, 0-11)
2927+ * @NL80211_RATE_INFO_HE_NSS: HE NSS value (u8, 1-8)
2928+ * @NL80211_RATE_INFO_HE_GI: HE guard interval identifier
2929+ * (u8, see &enum nl80211_he_gi)
2930+ * @NL80211_RATE_INFO_HE_DCM: HE DCM value (u8, 0/1)
2931+ * @NL80211_RATE_INFO_RU_ALLOC: HE RU allocation, if not present then
2932+ * non-OFDMA was used (u8, see &enum nl80211_he_ru_alloc)
28882933 * @__NL80211_RATE_INFO_AFTER_LAST: internal use
28892934 */
28902935 enum nl80211_rate_info {
@@ -2901,6 +2946,11 @@ enum nl80211_rate_info { · 10 unmodified lines
29012946 NL80211_RATE_INFO_160_MHZ_WIDTH,
29022947 NL80211_RATE_INFO_10_MHZ_WIDTH,
29032948 NL80211_RATE_INFO_5_MHZ_WIDTH,
2949+ NL80211_RATE_INFO_HE_MCS,
2950+ NL80211_RATE_INFO_HE_NSS,
2951+ NL80211_RATE_INFO_HE_GI,
2952+ NL80211_RATE_INFO_HE_DCM,
2953+ NL80211_RATE_INFO_HE_RU_ALLOC,
29042954
29052955 /* keep last */
29062956 __NL80211_RATE_INFO_AFTER_LAST,
@@ -3166,6 +3216,38 @@ enum nl80211_mpath_info { · 259 unmodified lines
31663216 NL80211_MPATH_INFO_MAX = __NL80211_MPATH_INFO_AFTER_LAST - 1
31673217 };
31683218
3219+/**
3220+ * enum nl80211_band_iftype_attr - Interface type data attributes
3221+ *
3222+ * @__NL80211_BAND_IFTYPE_ATTR_INVALID: attribute number 0 is reserved
3223+ * @NL80211_BAND_IFTYPE_ATTR_IFTYPES: nested attribute containing a flag attribute
3224+ * for each interface type that supports the band data
3225+ * @NL80211_BAND_IFTYPE_ATTR_HE_CAP_MAC: HE MAC capabilities as in HE
3226+ * capabilities IE
3227+ * @NL80211_BAND_IFTYPE_ATTR_HE_CAP_PHY: HE PHY capabilities as in HE
3228+ * capabilities IE
3229+ * @NL80211_BAND_IFTYPE_ATTR_HE_CAP_MCS_SET: HE supported NSS/MCS as in HE
3230+ * capabilities IE
3231+ * @NL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE: HE PPE thresholds information as
3232+ * defined in HE capabilities IE
3233+ * @NL80211_BAND_IFTYPE_ATTR_MAX: highest band HE capability attribute currently
3234+ * defined
3235+ * @__NL80211_BAND_IFTYPE_ATTR_AFTER_LAST: internal use
3236+ */
3237+enum nl80211_band_iftype_attr {
3238+ __NL80211_BAND_IFTYPE_ATTR_INVALID,
3239+
3240+ NL80211_BAND_IFTYPE_ATTR_IFTYPES,
3241+ NL80211_BAND_IFTYPE_ATTR_HE_CAP_MAC,
3242+ NL80211_BAND_IFTYPE_ATTR_HE_CAP_PHY,
3243+ NL80211_BAND_IFTYPE_ATTR_HE_CAP_MCS_SET,
3244+ NL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE,
3245+
3246+ /* keep last */
3247+ __NL80211_BAND_IFTYPE_ATTR_AFTER_LAST,
3248+ NL80211_BAND_IFTYPE_ATTR_MAX = __NL80211_BAND_IFTYPE_ATTR_AFTER_LAST - 1
3249+};
3250+
31693251 /**
31703252 * enum nl80211_band_attr - band attributes
31713253 * @__NL80211_BAND_ATTR_INVALID: attribute number 0 is reserved
@@ -3181,6 +3263,8 @@ enum nl80211_mpath_info { · 9 unmodified lines
31813263 * @NL80211_BAND_ATTR_VHT_MCS_SET: 32-byte attribute containing the MCS set as
31823264 * defined in 802.11ac
31833265 * @NL80211_BAND_ATTR_VHT_CAPA: VHT capabilities, as in the HT information IE
3266+ * @NL80211_BAND_ATTR_IFTYPE_DATA: nested array attribute, with each entry using
3267+ * attributes from &enum nl80211_band_iftype_attr
31843268 * @NL80211_BAND_ATTR_MAX: highest band attribute currently defined
31853269 * @__NL80211_BAND_ATTR_AFTER_LAST: internal use
31863270 */
@@ -3196,6 +3280,7 @@ enum nl80211_band_attr { · 9 unmodified lines
31963280
31973281 NL80211_BAND_ATTR_VHT_MCS_SET,
31983282 NL80211_BAND_ATTR_VHT_CAPA,
3283+ NL80211_BAND_ATTR_IFTYPE_DATA,
31993284
32003285 /* keep last */
32013286 __NL80211_BAND_ATTR_AFTER_LAST,