From 5f24f3a5d22731a28c14d6923a1b0ed5fde001f0 Mon Sep 17 00:00:00 2001
From: jkshin <jk.shin@newratek.com>
Date: Wed, 9 Nov 2022 11:14:27 +0900
Subject: [PATCH] Patch for using 802.11ah (S1G) by config file.
Signed-off-by: JUN-KYU SHIN <jk.shinr@newratek.com>
---
hostapd/config_file.c | 2 ++
src/common/defs.h | 1 +
src/common/ieee802_11_common.c | 1 +
src/drivers/driver_nl80211_capa.c | 9 ++++++++-
4 files changed, 12 insertions(+), 1 deletion(-)
@@ -3094,6 +3094,8 @@ static int hostapd_config_fill(struct hostapd_config *conf,
conf->hw_mode = HOSTAPD_MODE_IEEE80211G;
else if (os_strcmp(pos, "ad") == 0)
conf->hw_mode = HOSTAPD_MODE_IEEE80211AD;
+ else if (os_strcmp(pos, "ah") == 0)
+ conf->hw_mode = HOSTAPD_MODE_IEEE80211AH;
else if (os_strcmp(pos, "any") == 0)
conf->hw_mode = HOSTAPD_MODE_IEEE80211ANY;
else {
@@ -375,6 +375,7 @@ enum hostapd_hw_mode {
HOSTAPD_MODE_IEEE80211G,
HOSTAPD_MODE_IEEE80211A,
HOSTAPD_MODE_IEEE80211AD,
+ HOSTAPD_MODE_IEEE80211AH,
HOSTAPD_MODE_IEEE80211ANY,
NUM_HOSTAPD_MODES
};
@@ -2011,6 +2011,7 @@ static enum phy_type ieee80211_phy_type_by_freq(int freq)
switch (hw_mode) {
case HOSTAPD_MODE_IEEE80211A:
+ case HOSTAPD_MODE_IEEE80211AH:
return PHY_TYPE_OFDM;
case HOSTAPD_MODE_IEEE80211B:
return PHY_TYPE_HRDSSS;
@@ -2089,7 +2089,9 @@ wpa_driver_nl80211_postprocess_modes(struct hostapd_hw_modes *modes,
for (m = 0; m < *num_modes; m++) {
if (!modes[m].num_channels)
continue;
- if (modes[m].channels[0].freq < 2000) {
+ if (modes[m].channels[0].freq < 1000) {
+ modes[m].mode = HOSTAPD_MODE_IEEE80211AH;
+ } else if (modes[m].channels[0].freq < 2000) {
modes[m].num_channels = 0;
continue;
} else if (modes[m].channels[0].freq < 4000) {
@@ -2132,6 +2134,9 @@ wpa_driver_nl80211_postprocess_modes(struct hostapd_hw_modes *modes,
return modes; /* 802.11b already included */
if (modes[m].mode == HOSTAPD_MODE_IEEE80211G)
mode11g_idx = m;
+ if (modes[m].mode == HOSTAPD_MODE_IEEE80211AH) {
+ return modes;
+ }
}
if (mode11g_idx < 0)
@@ -2514,6 +2519,8 @@ static const char * modestr(enum hostapd_hw_mode mode)
return "802.11a";
case HOSTAPD_MODE_IEEE80211AD:
return "802.11ad";
+ case HOSTAPD_MODE_IEEE80211AH:
+ return "802.11ah";
default:
return "?";
}
--
2.25.1