Add utility function to derive operating class and channel
This function can be used to easily convert the parameters returned by the channel_info driver API, into their corresponding operating class and channel number. Signed-off-by: Mathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be>
This commit is contained in:
parent
bef4d07a28
commit
dbe473fd22
2 changed files with 38 additions and 0 deletions
|
@ -896,6 +896,41 @@ enum hostapd_hw_mode ieee80211_freq_to_channel_ext(unsigned int freq,
|
|||
}
|
||||
|
||||
|
||||
int ieee80211_chaninfo_to_channel(unsigned int freq, enum chan_width chanwidth,
|
||||
int sec_channel, u8 *op_class, u8 *channel)
|
||||
{
|
||||
int vht = CHAN_WIDTH_UNKNOWN;
|
||||
|
||||
switch (chanwidth) {
|
||||
case CHAN_WIDTH_UNKNOWN:
|
||||
case CHAN_WIDTH_20_NOHT:
|
||||
case CHAN_WIDTH_20:
|
||||
case CHAN_WIDTH_40:
|
||||
vht = VHT_CHANWIDTH_USE_HT;
|
||||
break;
|
||||
case CHAN_WIDTH_80:
|
||||
vht = VHT_CHANWIDTH_80MHZ;
|
||||
break;
|
||||
case CHAN_WIDTH_80P80:
|
||||
vht = VHT_CHANWIDTH_80P80MHZ;
|
||||
break;
|
||||
case CHAN_WIDTH_160:
|
||||
vht = VHT_CHANWIDTH_160MHZ;
|
||||
break;
|
||||
}
|
||||
|
||||
if (ieee80211_freq_to_channel_ext(freq, sec_channel, vht, op_class,
|
||||
channel) == NUM_HOSTAPD_MODES) {
|
||||
wpa_printf(MSG_WARNING,
|
||||
"Cannot determine operating class and channel (freq=%u chanwidth=%d sec_channel=%d)",
|
||||
freq, chanwidth, sec_channel);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static const char *const us_op_class_cc[] = {
|
||||
"US", "CA", NULL
|
||||
};
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
#include "defs.h"
|
||||
|
||||
struct hostapd_hw_modes;
|
||||
enum chan_width;
|
||||
|
||||
#define MAX_NOF_MB_IES_SUPPORTED 5
|
||||
|
||||
|
@ -160,6 +161,8 @@ int ieee80211_chan_to_freq(const char *country, u8 op_class, u8 chan);
|
|||
enum hostapd_hw_mode ieee80211_freq_to_channel_ext(unsigned int freq,
|
||||
int sec_channel, int vht,
|
||||
u8 *op_class, u8 *channel);
|
||||
int ieee80211_chaninfo_to_channel(unsigned int freq, enum chan_width chanwidth,
|
||||
int sec_channel, u8 *op_class, u8 *channel);
|
||||
int ieee80211_is_dfs(int freq, const struct hostapd_hw_modes *modes,
|
||||
u16 num_modes);
|
||||
enum phy_type ieee80211_get_phy_type(int freq, int ht, int vht);
|
||||
|
|
Loading…
Reference in a new issue