Johannes Berg says: ==================== One batch of changes, containing: * hwsim improvements from Jouni and myself, to be able to test more scenarios easily * some more HE (802.11ax) support * some initial S1G (sub 1 GHz) work for fractional MHz channels * some (action) frame registration updates to help DPP support * along with other various improvements/fixes ====================
Showing the changes to include/linux (1 of 49 files). Show all
Unified · Split
| @@ -9,7 +9,7 @@ · 8 unmodified lines | |||
| 9 | * Copyright (c) 2006, Michael Wu <flamingice@sourmilk.net> | 9 | * Copyright (c) 2006, Michael Wu <flamingice@sourmilk.net> |
| 10 | * Copyright (c) 2013 - 2014 Intel Mobile Communications GmbH | 10 | * Copyright (c) 2013 - 2014 Intel Mobile Communications GmbH |
| 11 | * Copyright (c) 2016 - 2017 Intel Deutschland GmbH | 11 | * Copyright (c) 2016 - 2017 Intel Deutschland GmbH |
| 12 | * Copyright (c) 2018 - 2019 Intel Corporation | 12 | * Copyright (c) 2018 - 2020 Intel Corporation |
| 13 | */ | 13 | */ |
| 14 | 14 | ||
| 15 | #ifndef LINUX_IEEE80211_H | 15 | #ifndef LINUX_IEEE80211_H |
| @@ -859,6 +859,7 @@ enum ieee80211_ht_chanwidth_values { · 843 unmodified lines | |||
| 859 | * @IEEE80211_OPMODE_NOTIF_CHANWIDTH_40MHZ: 40 MHz channel width | 859 | * @IEEE80211_OPMODE_NOTIF_CHANWIDTH_40MHZ: 40 MHz channel width |
| 860 | * @IEEE80211_OPMODE_NOTIF_CHANWIDTH_80MHZ: 80 MHz channel width | 860 | * @IEEE80211_OPMODE_NOTIF_CHANWIDTH_80MHZ: 80 MHz channel width |
| 861 | * @IEEE80211_OPMODE_NOTIF_CHANWIDTH_160MHZ: 160 MHz or 80+80 MHz channel width | 861 | * @IEEE80211_OPMODE_NOTIF_CHANWIDTH_160MHZ: 160 MHz or 80+80 MHz channel width |
| 862 | * @IEEE80211_OPMODE_NOTIF_BW_160_80P80: 160 / 80+80 MHz indicator flag | ||
| 862 | * @IEEE80211_OPMODE_NOTIF_RX_NSS_MASK: number of spatial streams mask | 863 | * @IEEE80211_OPMODE_NOTIF_RX_NSS_MASK: number of spatial streams mask |
| 863 | * (the NSS value is the value of this field + 1) | 864 | * (the NSS value is the value of this field + 1) |
| 864 | * @IEEE80211_OPMODE_NOTIF_RX_NSS_SHIFT: number of spatial streams shift | 865 | * @IEEE80211_OPMODE_NOTIF_RX_NSS_SHIFT: number of spatial streams shift |
| @@ -866,11 +867,12 @@ enum ieee80211_ht_chanwidth_values { · 1 unmodified line | |||
| 866 | * using a beamforming steering matrix | 867 | * using a beamforming steering matrix |
| 867 | */ | 868 | */ |
| 868 | enum ieee80211_vht_opmode_bits { | 869 | enum ieee80211_vht_opmode_bits { |
| 869 | IEEE80211_OPMODE_NOTIF_CHANWIDTH_MASK = 3, | 870 | IEEE80211_OPMODE_NOTIF_CHANWIDTH_MASK = 0x03, |
| 870 | IEEE80211_OPMODE_NOTIF_CHANWIDTH_20MHZ = 0, | 871 | IEEE80211_OPMODE_NOTIF_CHANWIDTH_20MHZ = 0, |
| 871 | IEEE80211_OPMODE_NOTIF_CHANWIDTH_40MHZ = 1, | 872 | IEEE80211_OPMODE_NOTIF_CHANWIDTH_40MHZ = 1, |
| 872 | IEEE80211_OPMODE_NOTIF_CHANWIDTH_80MHZ = 2, | 873 | IEEE80211_OPMODE_NOTIF_CHANWIDTH_80MHZ = 2, |
| 873 | IEEE80211_OPMODE_NOTIF_CHANWIDTH_160MHZ = 3, | 874 | IEEE80211_OPMODE_NOTIF_CHANWIDTH_160MHZ = 3, |
| 875 | IEEE80211_OPMODE_NOTIF_BW_160_80P80 = 0x04, | ||
| 874 | IEEE80211_OPMODE_NOTIF_RX_NSS_MASK = 0x70, | 876 | IEEE80211_OPMODE_NOTIF_RX_NSS_MASK = 0x70, |
| 875 | IEEE80211_OPMODE_NOTIF_RX_NSS_SHIFT = 4, | 877 | IEEE80211_OPMODE_NOTIF_RX_NSS_SHIFT = 4, |
| 876 | IEEE80211_OPMODE_NOTIF_RX_NSS_TYPE_BF = 0x80, | 878 | IEEE80211_OPMODE_NOTIF_RX_NSS_TYPE_BF = 0x80, |
| @@ -1065,6 +1067,7 @@ struct ieee80211_mgmt { · 188 unmodified lines | |||
| 1065 | /* Supported rates membership selectors */ | 1067 | /* Supported rates membership selectors */ |
| 1066 | #define BSS_MEMBERSHIP_SELECTOR_HT_PHY 127 | 1068 | #define BSS_MEMBERSHIP_SELECTOR_HT_PHY 127 |
| 1067 | #define BSS_MEMBERSHIP_SELECTOR_VHT_PHY 126 | 1069 | #define BSS_MEMBERSHIP_SELECTOR_VHT_PHY 126 |
| 1070 | #define BSS_MEMBERSHIP_SELECTOR_HE_PHY 122 | ||
| 1068 | 1071 | ||
| 1069 | /* mgmt header + 1 byte category code */ | 1072 | /* mgmt header + 1 byte category code */ |
| 1070 | #define IEEE80211_MIN_ACTION_SIZE offsetof(struct ieee80211_mgmt, u.action.u) | 1073 | #define IEEE80211_MIN_ACTION_SIZE offsetof(struct ieee80211_mgmt, u.action.u) |
| @@ -1731,6 +1734,9 @@ struct ieee80211_mu_edca_param_set { · 660 unmodified lines | |||
| 1731 | * @ext_nss_bw_capable: indicates whether or not the local transmitter | 1734 | * @ext_nss_bw_capable: indicates whether or not the local transmitter |
| 1732 | * (rate scaling algorithm) can deal with the new logic | 1735 | * (rate scaling algorithm) can deal with the new logic |
| 1733 | * (dot11VHTExtendedNSSBWCapable) | 1736 | * (dot11VHTExtendedNSSBWCapable) |
| 1737 | * @max_vht_nss: current maximum NSS as advertised by the STA in | ||
| 1738 | * operating mode notification, can be 0 in which case the | ||
| 1739 | * capability data will be used to derive this (from MCS support) | ||
| 1734 | * | 1740 | * |
| 1735 | * Due to the VHT Extended NSS Bandwidth Support, the maximum NSS can | 1741 | * Due to the VHT Extended NSS Bandwidth Support, the maximum NSS can |
| 1736 | * vary for a given BW/MCS. This function parses the data. | 1742 | * vary for a given BW/MCS. This function parses the data. |
| @@ -1739,7 +1745,8 @@ struct ieee80211_mu_edca_param_set { · 2 unmodified lines | |||
| 1739 | */ | 1745 | */ |
| 1740 | int ieee80211_get_vht_max_nss(struct ieee80211_vht_cap *cap, | 1746 | int ieee80211_get_vht_max_nss(struct ieee80211_vht_cap *cap, |
| 1741 | enum ieee80211_vht_chanwidth bw, | 1747 | enum ieee80211_vht_chanwidth bw, |
| 1742 | int mcs, bool ext_nss_bw_capable); | 1748 | int mcs, bool ext_nss_bw_capable, |
| 1749 | unsigned int max_vht_nss); | ||
| 1743 | 1750 | ||
| 1744 | /* 802.11ax HE MAC capabilities */ | 1751 | /* 802.11ax HE MAC capabilities */ |
| 1745 | #define IEEE80211_HE_MAC_CAP0_HTC_HE 0x01 | 1752 | #define IEEE80211_HE_MAC_CAP0_HTC_HE 0x01 |
| @@ -3323,6 +3330,16 @@ static inline int ieee80211_get_tdls_action(struct sk_buff *skb, u32 hdr_size) · 1577 unmodified lines | |||
| 3323 | #define TU_TO_JIFFIES(x) (usecs_to_jiffies((x) * 1024)) | 3330 | #define TU_TO_JIFFIES(x) (usecs_to_jiffies((x) * 1024)) |
| 3324 | #define TU_TO_EXP_TIME(x) (jiffies + TU_TO_JIFFIES(x)) | 3331 | #define TU_TO_EXP_TIME(x) (jiffies + TU_TO_JIFFIES(x)) |
| 3325 | 3332 | ||
| 3333 | /* convert frequencies */ | ||
| 3334 | #define MHZ_TO_KHZ(freq) ((freq) * 1000) | ||
| 3335 | #define KHZ_TO_MHZ(freq) ((freq) / 1000) | ||
| 3336 | |||
| 3337 | /* convert powers */ | ||
| 3338 | #define DBI_TO_MBI(gain) ((gain) * 100) | ||
| 3339 | #define MBI_TO_DBI(gain) ((gain) / 100) | ||
| 3340 | #define DBM_TO_MBM(gain) ((gain) * 100) | ||
| 3341 | #define MBM_TO_DBM(gain) ((gain) / 100) | ||
| 3342 | |||
| 3326 | /** | 3343 | /** |
| 3327 | * ieee80211_action_contains_tpc - checks if the frame contains TPC element | 3344 | * ieee80211_action_contains_tpc - checks if the frame contains TPC element |
| 3328 | * @skb: the skb containing the frame, length will be checked | 3345 | * @skb: the skb containing the frame, length will be checked |