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.
Showing the changes to include/uapi/linux (1 of 6 files). Show all
Unified · Split
| @@ -2237,6 +2237,9 @@ enum nl80211_commands { · 2236 unmodified lines | ||
| 2237 | 2237 | * enforced. |
| 2238 | 2238 | * @NL80211_ATTR_TXQ_QUANTUM: TXQ scheduler quantum (bytes). Number of bytes |
| 2239 | 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 | 2244 | * @NUM_NL80211_ATTR: total number of nl80211_attrs available |
| 2242 | 2245 | * @NL80211_ATTR_MAX: highest attribute number currently defined |
| @@ -2677,6 +2680,8 @@ enum nl80211_attrs { · 434 unmodified lines | ||
| 2677 | 2680 | NL80211_ATTR_TXQ_MEMORY_LIMIT, |
| 2678 | 2681 | NL80211_ATTR_TXQ_QUANTUM, |
| 2679 | 2682 | |
| 2683 | + NL80211_ATTR_HE_CAPABILITY, | |
| 2684 | + | |
| 2680 | 2685 | /* add attributes here, update the policy in nl80211.c */ |
| 2681 | 2686 | |
| 2682 | 2687 | __NL80211_ATTR_AFTER_LAST, |
| @@ -2726,7 +2731,8 @@ enum nl80211_attrs { · 43 unmodified lines | ||
| 2726 | 2731 | #define NL80211_TKIP_DATA_OFFSET_RX_MIC_KEY 24 |
| 2727 | 2732 | #define NL80211_HT_CAPABILITY_LEN 26 |
| 2728 | 2733 | #define NL80211_VHT_CAPABILITY_LEN 12 |
| 2729 | − | |
| 2734 | +#define NL80211_HE_MIN_CAPABILITY_LEN 16 | |
| 2735 | +#define NL80211_HE_MAX_CAPABILITY_LEN 51 | |
| 2730 | 2736 | #define NL80211_MAX_NR_CIPHER_SUITES 5 |
| 2731 | 2737 | #define NL80211_MAX_NR_AKM_SUITES 2 |
| 2732 | 2738 | |
| @@ -2853,6 +2859,38 @@ struct nl80211_sta_flag_update { · 120 unmodified lines | ||
| 2853 | 2859 | __u32 set; |
| 2854 | 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 | + */ | |
| 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 | + | |
| 2856 | 2894 | /** |
| 2857 | 2895 | * enum nl80211_rate_info - bitrate information |
| 2858 | 2896 | * |
| @@ -2885,6 +2923,13 @@ struct nl80211_sta_flag_update { · 26 unmodified lines | ||
| 2885 | 2923 | * @NL80211_RATE_INFO_5_MHZ_WIDTH: 5 MHz width - note that this is |
| 2886 | 2924 | * a legacy rate and will be reported as the actual bitrate, i.e. |
| 2887 | 2925 | * 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 | 2933 | * @__NL80211_RATE_INFO_AFTER_LAST: internal use |
| 2889 | 2934 | */ |
| 2890 | 2935 | enum nl80211_rate_info { |
| @@ -2901,6 +2946,11 @@ enum nl80211_rate_info { · 10 unmodified lines | ||
| 2901 | 2946 | NL80211_RATE_INFO_160_MHZ_WIDTH, |
| 2902 | 2947 | NL80211_RATE_INFO_10_MHZ_WIDTH, |
| 2903 | 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 | 2955 | /* keep last */ |
| 2906 | 2956 | __NL80211_RATE_INFO_AFTER_LAST, |
| @@ -3166,6 +3216,38 @@ enum nl80211_mpath_info { · 259 unmodified lines | ||
| 3166 | 3216 | 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 | + */ | |
| 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 | + | |
| 3169 | 3251 | /** |
| 3170 | 3252 | * enum nl80211_band_attr - band attributes |
| 3171 | 3253 | * @__NL80211_BAND_ATTR_INVALID: attribute number 0 is reserved |
| @@ -3181,6 +3263,8 @@ enum nl80211_mpath_info { · 9 unmodified lines | ||
| 3181 | 3263 | * @NL80211_BAND_ATTR_VHT_MCS_SET: 32-byte attribute containing the MCS set as |
| 3182 | 3264 | * defined in 802.11ac |
| 3183 | 3265 | * @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 | 3268 | * @NL80211_BAND_ATTR_MAX: highest band attribute currently defined |
| 3185 | 3269 | * @__NL80211_BAND_ATTR_AFTER_LAST: internal use |
| 3186 | 3270 | */ |
| @@ -3196,6 +3280,7 @@ enum nl80211_band_attr { · 9 unmodified lines | ||
| 3196 | 3280 | |
| 3197 | 3281 | NL80211_BAND_ATTR_VHT_MCS_SET, |
| 3198 | 3282 | NL80211_BAND_ATTR_VHT_CAPA, |
| 3283 | + NL80211_BAND_ATTR_IFTYPE_DATA, | |
| 3199 | 3284 | |
| 3200 | 3285 | /* keep last */ |
| 3201 | 3286 | __NL80211_BAND_ATTR_AFTER_LAST, |