mac80211_hwsim: add 6GHz channels
Advertise 6GHz channels to mac80211. Signed-off-by: Ramon Fontes <ramonreisfontes@gmail.com> Link: https://lore.kernel.org/r/20201227031155.81161-1-ramonreisfontes@gmail.com [reword commit message] Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
Родитель
f1864e193d
Коммит
28881922ab
|
@ -311,6 +311,12 @@ static struct net_device *hwsim_mon; /* global monitor netdev */
|
||||||
.hw_value = (_freq), \
|
.hw_value = (_freq), \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define CHAN6G(_freq) { \
|
||||||
|
.band = NL80211_BAND_6GHZ, \
|
||||||
|
.center_freq = (_freq), \
|
||||||
|
.hw_value = (_freq), \
|
||||||
|
}
|
||||||
|
|
||||||
static const struct ieee80211_channel hwsim_channels_2ghz[] = {
|
static const struct ieee80211_channel hwsim_channels_2ghz[] = {
|
||||||
CHAN2G(2412), /* Channel 1 */
|
CHAN2G(2412), /* Channel 1 */
|
||||||
CHAN2G(2417), /* Channel 2 */
|
CHAN2G(2417), /* Channel 2 */
|
||||||
|
@ -377,6 +383,68 @@ static const struct ieee80211_channel hwsim_channels_5ghz[] = {
|
||||||
CHAN5G(5925), /* Channel 185 */
|
CHAN5G(5925), /* Channel 185 */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const struct ieee80211_channel hwsim_channels_6ghz[] = {
|
||||||
|
CHAN6G(5955), /* Channel 1 */
|
||||||
|
CHAN6G(5975), /* Channel 5 */
|
||||||
|
CHAN6G(5995), /* Channel 9 */
|
||||||
|
CHAN6G(6015), /* Channel 13 */
|
||||||
|
CHAN6G(6035), /* Channel 17 */
|
||||||
|
CHAN6G(6055), /* Channel 21 */
|
||||||
|
CHAN6G(6075), /* Channel 25 */
|
||||||
|
CHAN6G(6095), /* Channel 29 */
|
||||||
|
CHAN6G(6115), /* Channel 33 */
|
||||||
|
CHAN6G(6135), /* Channel 37 */
|
||||||
|
CHAN6G(6155), /* Channel 41 */
|
||||||
|
CHAN6G(6175), /* Channel 45 */
|
||||||
|
CHAN6G(6195), /* Channel 49 */
|
||||||
|
CHAN6G(6215), /* Channel 53 */
|
||||||
|
CHAN6G(6235), /* Channel 57 */
|
||||||
|
CHAN6G(6255), /* Channel 61 */
|
||||||
|
CHAN6G(6275), /* Channel 65 */
|
||||||
|
CHAN6G(6295), /* Channel 69 */
|
||||||
|
CHAN6G(6315), /* Channel 73 */
|
||||||
|
CHAN6G(6335), /* Channel 77 */
|
||||||
|
CHAN6G(6355), /* Channel 81 */
|
||||||
|
CHAN6G(6375), /* Channel 85 */
|
||||||
|
CHAN6G(6395), /* Channel 89 */
|
||||||
|
CHAN6G(6415), /* Channel 93 */
|
||||||
|
CHAN6G(6435), /* Channel 97 */
|
||||||
|
CHAN6G(6455), /* Channel 181 */
|
||||||
|
CHAN6G(6475), /* Channel 105 */
|
||||||
|
CHAN6G(6495), /* Channel 109 */
|
||||||
|
CHAN6G(6515), /* Channel 113 */
|
||||||
|
CHAN6G(6535), /* Channel 117 */
|
||||||
|
CHAN6G(6555), /* Channel 121 */
|
||||||
|
CHAN6G(6575), /* Channel 125 */
|
||||||
|
CHAN6G(6595), /* Channel 129 */
|
||||||
|
CHAN6G(6615), /* Channel 133 */
|
||||||
|
CHAN6G(6635), /* Channel 137 */
|
||||||
|
CHAN6G(6655), /* Channel 141 */
|
||||||
|
CHAN6G(6675), /* Channel 145 */
|
||||||
|
CHAN6G(6695), /* Channel 149 */
|
||||||
|
CHAN6G(6715), /* Channel 153 */
|
||||||
|
CHAN6G(6735), /* Channel 157 */
|
||||||
|
CHAN6G(6755), /* Channel 161 */
|
||||||
|
CHAN6G(6775), /* Channel 165 */
|
||||||
|
CHAN6G(6795), /* Channel 169 */
|
||||||
|
CHAN6G(6815), /* Channel 173 */
|
||||||
|
CHAN6G(6835), /* Channel 177 */
|
||||||
|
CHAN6G(6855), /* Channel 181 */
|
||||||
|
CHAN6G(6875), /* Channel 185 */
|
||||||
|
CHAN6G(6895), /* Channel 189 */
|
||||||
|
CHAN6G(6915), /* Channel 193 */
|
||||||
|
CHAN6G(6935), /* Channel 197 */
|
||||||
|
CHAN6G(6955), /* Channel 201 */
|
||||||
|
CHAN6G(6975), /* Channel 205 */
|
||||||
|
CHAN6G(6995), /* Channel 209 */
|
||||||
|
CHAN6G(7015), /* Channel 213 */
|
||||||
|
CHAN6G(7035), /* Channel 217 */
|
||||||
|
CHAN6G(7055), /* Channel 221 */
|
||||||
|
CHAN6G(7075), /* Channel 225 */
|
||||||
|
CHAN6G(7095), /* Channel 229 */
|
||||||
|
CHAN6G(7115), /* Channel 233 */
|
||||||
|
};
|
||||||
|
|
||||||
#define NUM_S1G_CHANS_US 51
|
#define NUM_S1G_CHANS_US 51
|
||||||
static struct ieee80211_channel hwsim_channels_s1g[NUM_S1G_CHANS_US];
|
static struct ieee80211_channel hwsim_channels_s1g[NUM_S1G_CHANS_US];
|
||||||
|
|
||||||
|
@ -548,6 +616,7 @@ struct mac80211_hwsim_data {
|
||||||
struct ieee80211_supported_band bands[NUM_NL80211_BANDS];
|
struct ieee80211_supported_band bands[NUM_NL80211_BANDS];
|
||||||
struct ieee80211_channel channels_2ghz[ARRAY_SIZE(hwsim_channels_2ghz)];
|
struct ieee80211_channel channels_2ghz[ARRAY_SIZE(hwsim_channels_2ghz)];
|
||||||
struct ieee80211_channel channels_5ghz[ARRAY_SIZE(hwsim_channels_5ghz)];
|
struct ieee80211_channel channels_5ghz[ARRAY_SIZE(hwsim_channels_5ghz)];
|
||||||
|
struct ieee80211_channel channels_6ghz[ARRAY_SIZE(hwsim_channels_6ghz)];
|
||||||
struct ieee80211_channel channels_s1g[ARRAY_SIZE(hwsim_channels_s1g)];
|
struct ieee80211_channel channels_s1g[ARRAY_SIZE(hwsim_channels_s1g)];
|
||||||
struct ieee80211_rate rates[ARRAY_SIZE(hwsim_rates)];
|
struct ieee80211_rate rates[ARRAY_SIZE(hwsim_rates)];
|
||||||
struct ieee80211_iface_combination if_combination;
|
struct ieee80211_iface_combination if_combination;
|
||||||
|
@ -578,7 +647,8 @@ struct mac80211_hwsim_data {
|
||||||
struct ieee80211_channel *channel;
|
struct ieee80211_channel *channel;
|
||||||
unsigned long next_start, start, end;
|
unsigned long next_start, start, end;
|
||||||
} survey_data[ARRAY_SIZE(hwsim_channels_2ghz) +
|
} survey_data[ARRAY_SIZE(hwsim_channels_2ghz) +
|
||||||
ARRAY_SIZE(hwsim_channels_5ghz)];
|
ARRAY_SIZE(hwsim_channels_5ghz) +
|
||||||
|
ARRAY_SIZE(hwsim_channels_6ghz)];
|
||||||
|
|
||||||
struct ieee80211_channel *channel;
|
struct ieee80211_channel *channel;
|
||||||
u64 beacon_int /* beacon interval in us */;
|
u64 beacon_int /* beacon interval in us */;
|
||||||
|
@ -3149,6 +3219,8 @@ static int mac80211_hwsim_new_radio(struct genl_info *info,
|
||||||
sizeof(hwsim_channels_2ghz));
|
sizeof(hwsim_channels_2ghz));
|
||||||
memcpy(data->channels_5ghz, hwsim_channels_5ghz,
|
memcpy(data->channels_5ghz, hwsim_channels_5ghz,
|
||||||
sizeof(hwsim_channels_5ghz));
|
sizeof(hwsim_channels_5ghz));
|
||||||
|
memcpy(data->channels_6ghz, hwsim_channels_6ghz,
|
||||||
|
sizeof(hwsim_channels_6ghz));
|
||||||
memcpy(data->channels_s1g, hwsim_channels_s1g,
|
memcpy(data->channels_s1g, hwsim_channels_s1g,
|
||||||
sizeof(hwsim_channels_s1g));
|
sizeof(hwsim_channels_s1g));
|
||||||
memcpy(data->rates, hwsim_rates, sizeof(hwsim_rates));
|
memcpy(data->rates, hwsim_rates, sizeof(hwsim_rates));
|
||||||
|
|
Загрузка…
Ссылка в новой задаче