aboutsummaryrefslogtreecommitdiffstats
path: root/src/ap/ap_drv_ops.c
diff options
context:
space:
mode:
authorJanusz Dziedzic <janusz.dziedzic@tieto.com>2015-02-19 06:15:47 (GMT)
committerJouni Malinen <j@w1.fi>2015-02-21 14:07:53 (GMT)
commitada157f3b085909498db5d9fab1fb18b26bb4a75 (patch)
treeb48aa7a2b4f33cd4a25e6a2f74338679680e8c03 /src/ap/ap_drv_ops.c
parent98479dc95e4e9b9c58c004aebe4841433c4bb255 (diff)
downloadhostap-ada157f3b085909498db5d9fab1fb18b26bb4a75.zip
hostap-ada157f3b085909498db5d9fab1fb18b26bb4a75.tar.gz
hostap-ada157f3b085909498db5d9fab1fb18b26bb4a75.tar.bz2
Make hostapd_set_freq_params() common
Now this function can also be used from wpa_supplicant. Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
Diffstat (limited to 'src/ap/ap_drv_ops.c')
-rw-r--r--src/ap/ap_drv_ops.c87
1 files changed, 1 insertions, 86 deletions
diff --git a/src/ap/ap_drv_ops.c b/src/ap/ap_drv_ops.c
index 8514cbe..e16306c 100644
--- a/src/ap/ap_drv_ops.c
+++ b/src/ap/ap_drv_ops.c
@@ -10,6 +10,7 @@
#include "utils/common.h"
#include "common/ieee802_11_defs.h"
+#include "common/hw_features_common.h"
#include "wps/wps.h"
#include "p2p/p2p.h"
#include "hostapd.h"
@@ -477,92 +478,6 @@ int hostapd_flush(struct hostapd_data *hapd)
}
-int hostapd_set_freq_params(struct hostapd_freq_params *data,
- enum hostapd_hw_mode mode,
- int freq, int channel, int ht_enabled,
- int vht_enabled, int sec_channel_offset,
- int vht_oper_chwidth, int center_segment0,
- int center_segment1, u32 vht_caps)
-{
- int tmp;
-
- os_memset(data, 0, sizeof(*data));
- data->mode = mode;
- data->freq = freq;
- data->channel = channel;
- data->ht_enabled = ht_enabled;
- data->vht_enabled = vht_enabled;
- data->sec_channel_offset = sec_channel_offset;
- data->center_freq1 = freq + sec_channel_offset * 10;
- data->center_freq2 = 0;
- data->bandwidth = sec_channel_offset ? 40 : 20;
-
- /*
- * This validation code is probably misplaced, maybe it should be
- * in src/ap/hw_features.c and check the hardware support as well.
- */
- if (data->vht_enabled) switch (vht_oper_chwidth) {
- case VHT_CHANWIDTH_USE_HT:
- if (center_segment1)
- return -1;
- if (center_segment0 != 0 &&
- 5000 + center_segment0 * 5 != data->center_freq1 &&
- 2407 + center_segment0 * 5 != data->center_freq1)
- return -1;
- break;
- case VHT_CHANWIDTH_80P80MHZ:
- if (!(vht_caps & VHT_CAP_SUPP_CHAN_WIDTH_160_80PLUS80MHZ)) {
- wpa_printf(MSG_ERROR,
- "80+80 channel width is not supported!");
- return -1;
- }
- if (center_segment1 == center_segment0 + 4 ||
- center_segment1 == center_segment0 - 4)
- return -1;
- data->center_freq2 = 5000 + center_segment1 * 5;
- /* fall through */
- case VHT_CHANWIDTH_80MHZ:
- data->bandwidth = 80;
- if (vht_oper_chwidth == 1 && center_segment1)
- return -1;
- if (vht_oper_chwidth == 3 && !center_segment1)
- return -1;
- if (!sec_channel_offset)
- return -1;
- /* primary 40 part must match the HT configuration */
- tmp = (30 + freq - 5000 - center_segment0 * 5)/20;
- tmp /= 2;
- if (data->center_freq1 != 5000 +
- center_segment0 * 5 - 20 + 40 * tmp)
- return -1;
- data->center_freq1 = 5000 + center_segment0 * 5;
- break;
- case VHT_CHANWIDTH_160MHZ:
- data->bandwidth = 160;
- if (!(vht_caps & (VHT_CAP_SUPP_CHAN_WIDTH_160MHZ |
- VHT_CAP_SUPP_CHAN_WIDTH_160_80PLUS80MHZ))) {
- wpa_printf(MSG_ERROR,
- "160MHZ channel width is not supported!");
- return -1;
- }
- if (center_segment1)
- return -1;
- if (!sec_channel_offset)
- return -1;
- /* primary 40 part must match the HT configuration */
- tmp = (70 + freq - 5000 - center_segment0 * 5)/20;
- tmp /= 2;
- if (data->center_freq1 != 5000 +
- center_segment0 * 5 - 60 + 40 * tmp)
- return -1;
- data->center_freq1 = 5000 + center_segment0 * 5;
- break;
- }
-
- return 0;
-}
-
-
int hostapd_set_freq(struct hostapd_data *hapd, enum hostapd_hw_mode mode,
int freq, int channel, int ht_enabled, int vht_enabled,
int sec_channel_offset, int vht_oper_chwidth,