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 | * enforced. | 2237 | * enforced. |
| 2238 | * @NL80211_ATTR_TXQ_QUANTUM: TXQ scheduler quantum (bytes). Number of bytes | 2238 | * @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 available | 2244 | * @NUM_NL80211_ATTR: total number of nl80211_attrs available |
| 2242 | * @NL80211_ATTR_MAX: highest attribute number currently defined | 2245 | * @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 24 | 2731 | #define NL80211_TKIP_DATA_OFFSET_RX_MIC_KEY 24 |
| 2727 | #define NL80211_HT_CAPABILITY_LEN 26 | 2732 | #define NL80211_HT_CAPABILITY_LEN 26 |
| 2728 | #define NL80211_VHT_CAPABILITY_LEN 12 | 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 | #define NL80211_MAX_NR_CIPHER_SUITES 5 | 2736 | #define NL80211_MAX_NR_CIPHER_SUITES 5 |
| 2731 | #define NL80211_MAX_NR_AKM_SUITES 2 | 2737 | #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 | */ | ||
| 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 | * enum nl80211_rate_info - bitrate information | 2895 | * 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 is | 2923 | * @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) rate | 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 | * @__NL80211_RATE_INFO_AFTER_LAST: internal use | 2933 | * @__NL80211_RATE_INFO_AFTER_LAST: internal use |
| 2889 | */ | 2934 | */ |
| 2890 | enum nl80211_rate_info { | 2935 | enum 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 - 1 | 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 | * enum nl80211_band_attr - band attributes | 3252 | * enum nl80211_band_attr - band attributes |
| 3171 | * @__NL80211_BAND_ATTR_INVALID: attribute number 0 is reserved | 3253 | * @__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 as | 3263 | * @NL80211_BAND_ATTR_VHT_MCS_SET: 32-byte attribute containing the MCS set as |
| 3182 | * defined in 802.11ac | 3264 | * defined in 802.11ac |
| 3183 | * @NL80211_BAND_ATTR_VHT_CAPA: VHT capabilities, as in the HT information IE | 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 | * @NL80211_BAND_ATTR_MAX: highest band attribute currently defined | 3268 | * @NL80211_BAND_ATTR_MAX: highest band attribute currently defined |
| 3185 | * @__NL80211_BAND_ATTR_AFTER_LAST: internal use | 3269 | * @__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, |