From db4dcdc5f0eafe58f0525d0977e7bd3339787d8e Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Fri, 16 Jun 2023 00:27:49 +0200 Subject: [PATCH] iwinfo: add QAM-256 support patch Add QAM-256 support patch. Signed-off-by: Christian Marangi --- ...upport-for-QAM-256-in-2.4GHz-802.11n.patch | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 package/network/utils/iwinfo/patches/0001-nl80211-add-support-for-QAM-256-in-2.4GHz-802.11n.patch diff --git a/package/network/utils/iwinfo/patches/0001-nl80211-add-support-for-QAM-256-in-2.4GHz-802.11n.patch b/package/network/utils/iwinfo/patches/0001-nl80211-add-support-for-QAM-256-in-2.4GHz-802.11n.patch new file mode 100644 index 0000000000..edbc6ba668 --- /dev/null +++ b/package/network/utils/iwinfo/patches/0001-nl80211-add-support-for-QAM-256-in-2.4GHz-802.11n.patch @@ -0,0 +1,69 @@ +From b4fe1f680ba28588c330bcd65156ef7f8423426c Mon Sep 17 00:00:00 2001 +From: Christian Marangi +Date: Thu, 15 Jun 2023 19:44:53 +0200 +Subject: [PATCH] nl80211: add support for QAM-256 in 2.4GHz 802.11n + +Add support for QAM-256 in 2.4GHz 802.11n where VHT rates are set in +2.4GHz 802.11n mode. + +To identify if we are using this non-standard mode, we refer to the +hostapd conf providing vht_capab config. + +Signed-off-by: Christian Marangi +--- + iwinfo_nl80211.c | 18 +++++++++++++++--- + 1 file changed, 15 insertions(+), 3 deletions(-) + +--- a/iwinfo_nl80211.c ++++ b/iwinfo_nl80211.c +@@ -3216,6 +3216,14 @@ static void nl80211_eval_modelist(struct + { + m->hw |= IWINFO_80211_B; + m->hw |= IWINFO_80211_G; ++ ++ if (m->nl_vht > 0) ++ { ++ m->ht |= IWINFO_HTMODE_VHT20; ++ ++ if (m->nl_ht & (1 << 1)) ++ m->ht |= IWINFO_HTMODE_VHT40; ++ } + } + + if (m->bands & IWINFO_BAND_5) +@@ -3366,6 +3374,7 @@ static int nl80211_get_htmode(const char + struct chan_info chn = { 0 }; + char *res, b[2] = { 0 }; + int err; ++ bool vendor_qam256 = false; + bool he = false; + bool eht = false; + +@@ -3388,13 +3397,17 @@ static int nl80211_get_htmode(const char + eht = b[0] == '7'; + } + ++ if ((chn.width == NL80211_CHAN_WIDTH_20 || chn.width == NL80211_CHAN_WIDTH_40) && ++ nl80211_hostapd_query(res ? res : ifname, "vht_capab", b, sizeof(b))) ++ vendor_qam256 = true; ++ + switch (chn.width) { + case NL80211_CHAN_WIDTH_20: + if (eht) + *buf = IWINFO_HTMODE_EHT20; + else if (he) + *buf = IWINFO_HTMODE_HE20; +- else if (chn.mode == -1) ++ else if (chn.mode == -1 || vendor_qam256) + *buf = IWINFO_HTMODE_VHT20; + else + *buf = IWINFO_HTMODE_HT20; +@@ -3404,7 +3417,7 @@ static int nl80211_get_htmode(const char + *buf = IWINFO_HTMODE_EHT40; + else if (he) + *buf = IWINFO_HTMODE_HE40; +- else if (chn.mode == -1) ++ else if (chn.mode == -1 || vendor_qam256) + *buf = IWINFO_HTMODE_VHT40; + else + *buf = IWINFO_HTMODE_HT40;