[RFC 4/8] make get_pri_sec_chan() common
Janusz Dziedzic
janusz.dziedzic
Thu Jan 8 03:48:32 PST 2015
Signed-off-by: Janusz Dziedzic <janusz.dziedzic at tieto.com>
---
src/ap/hw_features.c | 20 +-------------------
src/common/hw_features_common.c | 25 +++++++++++++++++++++++++
src/common/hw_features_common.h | 2 ++
3 files changed, 28 insertions(+), 19 deletions(-)
diff --git a/src/ap/hw_features.c b/src/ap/hw_features.c
index 2f969c6..7be3c09 100644
--- a/src/ap/hw_features.c
+++ b/src/ap/hw_features.c
@@ -251,25 +251,7 @@ static void ieee80211n_switch_pri_sec(struct hostapd_iface *iface)
static void ieee80211n_get_pri_sec_chan(struct wpa_scan_res *bss,
int *pri_chan, int *sec_chan)
{
- struct ieee80211_ht_operation *oper;
- struct ieee802_11_elems elems;
-
- *pri_chan = *sec_chan = 0;
-
- ieee802_11_parse_elems((u8 *) (bss + 1), bss->ie_len, &elems, 0);
- if (elems.ht_operation &&
- elems.ht_operation_len >= sizeof(*oper)) {
- oper = (struct ieee80211_ht_operation *) elems.ht_operation;
- *pri_chan = oper->primary_chan;
- if (oper->ht_param & HT_INFO_HT_PARAM_STA_CHNL_WIDTH) {
- int sec = oper->ht_param &
- HT_INFO_HT_PARAM_SECONDARY_CHNL_OFF_MASK;
- if (sec == HT_INFO_HT_PARAM_SECONDARY_CHNL_ABOVE)
- *sec_chan = *pri_chan + 4;
- else if (sec == HT_INFO_HT_PARAM_SECONDARY_CHNL_BELOW)
- *sec_chan = *pri_chan - 4;
- }
- }
+ return get_pri_sec_chan(bss, pri_chan, sec_chan);
}
diff --git a/src/common/hw_features_common.c b/src/common/hw_features_common.c
index 2b9e914..56bdaa1 100644
--- a/src/common/hw_features_common.c
+++ b/src/common/hw_features_common.c
@@ -11,6 +11,8 @@
#include "common.h"
#include "defs.h"
+#include "ieee802_11_defs.h"
+#include "ieee802_11_common.h"
#include "hw_features_common.h"
struct hostapd_channel_data *hw_get_channel_chan(struct hostapd_hw_modes *mode, int chan, int *freq)
@@ -133,3 +135,26 @@ int allowed_ht40_channel_pair(struct hostapd_hw_modes *mode, int pri_chan, int s
return 1;
}
+
+void get_pri_sec_chan(struct wpa_scan_res *bss, int *pri_chan, int *sec_chan)
+{
+ struct ieee80211_ht_operation *oper;
+ struct ieee802_11_elems elems;
+
+ *pri_chan = *sec_chan = 0;
+
+ ieee802_11_parse_elems((u8 *) (bss + 1), bss->ie_len, &elems, 0);
+ if (elems.ht_operation &&
+ elems.ht_operation_len >= sizeof(*oper)) {
+ oper = (struct ieee80211_ht_operation *) elems.ht_operation;
+ *pri_chan = oper->primary_chan;
+ if (oper->ht_param & HT_INFO_HT_PARAM_STA_CHNL_WIDTH) {
+ int sec = oper->ht_param &
+ HT_INFO_HT_PARAM_SECONDARY_CHNL_OFF_MASK;
+ if (sec == HT_INFO_HT_PARAM_SECONDARY_CHNL_ABOVE)
+ *sec_chan = *pri_chan + 4;
+ else if (sec == HT_INFO_HT_PARAM_SECONDARY_CHNL_BELOW)
+ *sec_chan = *pri_chan - 4;
+ }
+ }
+}
diff --git a/src/common/hw_features_common.h b/src/common/hw_features_common.h
index bb52fb5..0a1ddea 100644
--- a/src/common/hw_features_common.h
+++ b/src/common/hw_features_common.h
@@ -19,4 +19,6 @@ int hw_get_freq(struct hostapd_hw_modes *mode, int chan);
int hw_get_chan(struct hostapd_hw_modes *mode, int freq);
int allowed_ht40_channel_pair(struct hostapd_hw_modes *mode, int pri_chan, int sec_chan);
+void get_pri_sec_chan(struct wpa_scan_res *bss, int *pri_chan, int *sec_chan);
+
#endif /* HW_FEATURES_COMMON_H */
--
1.9.1
More information about the Hostap
mailing list