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
2237 * enforced.2237 * enforced.
2238 * @NL80211_ATTR_TXQ_QUANTUM: TXQ scheduler quantum (bytes). Number of bytes2238 * @NL80211_ATTR_TXQ_QUANTUM: TXQ scheduler quantum (bytes). Number of bytes
2239 * a flow is assigned on each round of the DRR scheduler.2239 * 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.
2240 *2243 *
2241 * @NUM_NL80211_ATTR: total number of nl80211_attrs available2244 * @NUM_NL80211_ATTR: total number of nl80211_attrs available
2242 * @NL80211_ATTR_MAX: highest attribute number currently defined2245 * @NL80211_ATTR_MAX: highest attribute number currently defined
@@ -2677,6 +2680,8 @@ enum nl80211_attrs { · 434 unmodified lines
2677 NL80211_ATTR_TXQ_MEMORY_LIMIT,2680 NL80211_ATTR_TXQ_MEMORY_LIMIT,
2678 NL80211_ATTR_TXQ_QUANTUM,2681 NL80211_ATTR_TXQ_QUANTUM,
2679 2682
2683 NL80211_ATTR_HE_CAPABILITY,
2684
2680 /* add attributes here, update the policy in nl80211.c */2685 /* add attributes here, update the policy in nl80211.c */
2681 2686
2682 __NL80211_ATTR_AFTER_LAST,2687 __NL80211_ATTR_AFTER_LAST,
@@ -2726,7 +2731,8 @@ enum nl80211_attrs { · 43 unmodified lines
2726#define NL80211_TKIP_DATA_OFFSET_RX_MIC_KEY 242731#define NL80211_TKIP_DATA_OFFSET_RX_MIC_KEY 24
2727#define NL80211_HT_CAPABILITY_LEN 262732#define NL80211_HT_CAPABILITY_LEN 26
2728#define NL80211_VHT_CAPABILITY_LEN 122733#define NL80211_VHT_CAPABILITY_LEN 12
2729 2734#define NL80211_HE_MIN_CAPABILITY_LEN 16
2735#define NL80211_HE_MAX_CAPABILITY_LEN 51
2730#define NL80211_MAX_NR_CIPHER_SUITES 52736#define NL80211_MAX_NR_CIPHER_SUITES 5
2731#define NL80211_MAX_NR_AKM_SUITES 22737#define NL80211_MAX_NR_AKM_SUITES 2
2732 2738
@@ -2853,6 +2859,38 @@ struct nl80211_sta_flag_update { · 120 unmodified lines
2853 __u32 set;2859 __u32 set;
2854} __attribute__((packed));2860} __attribute__((packed));
2855 2861
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 */
2868enum 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 */
2884enum 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
2856/**2894/**
2857 * enum nl80211_rate_info - bitrate information2895 * enum nl80211_rate_info - bitrate information
2858 *2896 *
@@ -2885,6 +2923,13 @@ struct nl80211_sta_flag_update { · 26 unmodified lines
2885 * @NL80211_RATE_INFO_5_MHZ_WIDTH: 5 MHz width - note that this is2923 * @NL80211_RATE_INFO_5_MHZ_WIDTH: 5 MHz width - note that this is
2886 * a legacy rate and will be reported as the actual bitrate, i.e.2924 * a legacy rate and will be reported as the actual bitrate, i.e.
2887 * a quarter of the base (20 MHz) rate2925 * 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)
2888 * @__NL80211_RATE_INFO_AFTER_LAST: internal use2933 * @__NL80211_RATE_INFO_AFTER_LAST: internal use
2889 */2934 */
2890enum nl80211_rate_info {2935enum nl80211_rate_info {
@@ -2901,6 +2946,11 @@ enum nl80211_rate_info { · 10 unmodified lines
2901 NL80211_RATE_INFO_160_MHZ_WIDTH,2946 NL80211_RATE_INFO_160_MHZ_WIDTH,
2902 NL80211_RATE_INFO_10_MHZ_WIDTH,2947 NL80211_RATE_INFO_10_MHZ_WIDTH,
2903 NL80211_RATE_INFO_5_MHZ_WIDTH,2948 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,
2904 2954
2905 /* keep last */2955 /* keep last */
2906 __NL80211_RATE_INFO_AFTER_LAST,2956 __NL80211_RATE_INFO_AFTER_LAST,
@@ -3166,6 +3216,38 @@ enum nl80211_mpath_info { · 259 unmodified lines
3166 NL80211_MPATH_INFO_MAX = __NL80211_MPATH_INFO_AFTER_LAST - 13216 NL80211_MPATH_INFO_MAX = __NL80211_MPATH_INFO_AFTER_LAST - 1
3167};3217};
3168 3218
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 */
3237enum 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
3169/**3251/**
3170 * enum nl80211_band_attr - band attributes3252 * enum nl80211_band_attr - band attributes
3171 * @__NL80211_BAND_ATTR_INVALID: attribute number 0 is reserved3253 * @__NL80211_BAND_ATTR_INVALID: attribute number 0 is reserved
@@ -3181,6 +3263,8 @@ enum nl80211_mpath_info { · 9 unmodified lines
3181 * @NL80211_BAND_ATTR_VHT_MCS_SET: 32-byte attribute containing the MCS set as3263 * @NL80211_BAND_ATTR_VHT_MCS_SET: 32-byte attribute containing the MCS set as
3182 * defined in 802.11ac3264 * defined in 802.11ac
3183 * @NL80211_BAND_ATTR_VHT_CAPA: VHT capabilities, as in the HT information IE3265 * @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
3184 * @NL80211_BAND_ATTR_MAX: highest band attribute currently defined3268 * @NL80211_BAND_ATTR_MAX: highest band attribute currently defined
3185 * @__NL80211_BAND_ATTR_AFTER_LAST: internal use3269 * @__NL80211_BAND_ATTR_AFTER_LAST: internal use
3186 */3270 */
@@ -3196,6 +3280,7 @@ enum nl80211_band_attr { · 9 unmodified lines
3196 3280
3197 NL80211_BAND_ATTR_VHT_MCS_SET,3281 NL80211_BAND_ATTR_VHT_MCS_SET,
3198 NL80211_BAND_ATTR_VHT_CAPA,3282 NL80211_BAND_ATTR_VHT_CAPA,
3283 NL80211_BAND_ATTR_IFTYPE_DATA,
3199 3284
3200 /* keep last */3285 /* keep last */
3201 __NL80211_BAND_ATTR_AFTER_LAST,3286 __NL80211_BAND_ATTR_AFTER_LAST,