From 49de97b9da238db0af0fbbd89408c87cf9c7e139 Mon Sep 17 00:00:00 2001 From: Aloka Dixit Date: Thu, 22 Jul 2021 13:13:08 -0700 Subject: [PATCH 23/23] nl80211: pass EHT beacon rate configuration to kernel Propagate EHT beacon rate to kernel if the driver has advertised support for this configuration. Legacy, HT, VHT and HE rates will be set to NULL. Signed-off-by: Aloka Dixit --- src/drivers/driver_nl80211.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c index b5e336be826b..088e58edf2a7 100644 --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c @@ -4290,6 +4290,7 @@ static int nl80211_put_beacon_rate(struct nl_msg *msg, u64 flags, u64 flags2, struct nlattr *bands, *band; struct nl80211_txrate_vht vht_rate; struct nl80211_txrate_he he_rate; + struct nl80211_txrate_eht eht_rate; if (!params->freq || (params->beacon_rate == 0 && @@ -4323,6 +4324,7 @@ static int nl80211_put_beacon_rate(struct nl_msg *msg, u64 flags, u64 flags2, os_memset(&vht_rate, 0, sizeof(vht_rate)); os_memset(&he_rate, 0, sizeof(he_rate)); + os_memset(&eht_rate, 0, sizeof(eht_rate)); switch (params->rate_type) { case BEACON_RATE_LEGACY: @@ -4391,6 +4393,26 @@ static int nl80211_put_beacon_rate(struct nl_msg *msg, u64 flags, u64 flags2, wpa_printf(MSG_DEBUG, " * beacon_rate = HE-MCS %u", params->beacon_rate); break; + + case BEACON_RATE_EHT: + if (!(flags2 & WPA_DRIVER_FLAGS2_BEACON_RATE_EHT)) { + wpa_printf(MSG_INFO, + "nl80211: Driver does not support setting Beacon frame rate (EHT)"); + return -1; + } + eht_rate.mcs[0] = BIT(params->beacon_rate); + if (nla_put(msg, NL80211_TXRATE_LEGACY, 0, NULL) || + nla_put(msg, NL80211_TXRATE_HT, 0, NULL) || + nla_put(msg, NL80211_TXRATE_VHT, sizeof(vht_rate), + &vht_rate) || + nla_put(msg, NL80211_TXRATE_HE, sizeof(he_rate), + &he_rate) || + nla_put(msg, NL80211_TXRATE_EHT, sizeof(eht_rate), + &eht_rate)) + return -1; + wpa_printf(MSG_DEBUG, " * beacon_rate = EHT-MCS %u", + params->beacon_rate); + break; } nla_nest_end(msg, band); -- 2.31.1