hostapd: Update supported channel width set of HT capability

peterhuang peter801117.cs03g at g2.nctu.edu.tw
Wed Aug 18 01:34:50 PDT 2021


>From c81b2a34a223fb8b6b0e00b57c0cbd50fa706dc7 Mon Sep 17 00:00:00 2001
From: peterhuang <peterhuang at realtek.com>
Date: Wed, 11 Aug 2021 20:23:40 +0800
Subject: [PATCH] hostapd: Update supported channel width set of HT capability

Need to update supported channel width set after channel switch done.
Otherwise, it would be old setting.

Signed-off-by: peterhuang <peter801117.cs03g at g2.nctu.edu.tw>
---
 src/ap/drv_callbacks.c |  5 +++++
 src/ap/hostapd.c       | 14 ++++++++++++++
 2 files changed, 19 insertions(+)

diff --git a/src/ap/drv_callbacks.c b/src/ap/drv_callbacks.c
index ec5abf166..31f6a1359 100644
--- a/src/ap/drv_callbacks.c
+++ b/src/ap/drv_callbacks.c
@@ -957,6 +957,11 @@ void hostapd_event_ch_switch(struct hostapd_data
*hapd, int freq, int ht,
  hapd->iconf->ch_switch_vht_config = 0;
  hapd->iconf->ch_switch_he_config = 0;

+ if (width > CHAN_WIDTH_20)
+ hapd->iconf->ht_capab |= HT_CAP_INFO_SUPP_CHANNEL_WIDTH_SET;
+ else
+ hapd->iconf->ht_capab &= ~HT_CAP_INFO_SUPP_CHANNEL_WIDTH_SET;
+
  hapd->iconf->secondary_channel = offset;
  hostapd_set_oper_chwidth(hapd->iconf, chwidth);
  hostapd_set_oper_centr_freq_seg0_idx(hapd->iconf, seg0_idx);
diff --git a/src/ap/hostapd.c b/src/ap/hostapd.c
index 913a8e29e..a8f1bf937 100644
--- a/src/ap/hostapd.c
+++ b/src/ap/hostapd.c
@@ -3461,6 +3461,20 @@ static int hostapd_change_config_freq(struct
hostapd_data *hapd,
      NULL))
  return -1;

+ switch (params->bandwidth) {
+ case 0:
+ case 20:
+ conf->ht_capab &= ~HT_CAP_INFO_SUPP_CHANNEL_WIDTH_SET;
+ break;
+ case 40:
+ case 80:
+ case 160:
+ conf->ht_capab |= HT_CAP_INFO_SUPP_CHANNEL_WIDTH_SET;
+ break;
+ default:
+ return -1;
+ }
+
  switch (params->bandwidth) {
  case 0:
  case 20:
-- 
2.25.1



More information about the Hostap mailing list