nl80211: Add VHT 160 MHz channel flags
This extends the previous design that covered only the VHT 80 MHz cases for VHT channel flags. New functions are introduced to allow 160 MHz bandwidth cases to determine the center channel and check availability of a 160 MHz channel. Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
parent
5e1da9c8fd
commit
bee5d8e067
4 changed files with 119 additions and 2 deletions
|
@ -45,6 +45,15 @@
|
|||
#define HOSTAPD_CHAN_INDOOR_ONLY 0x00010000
|
||||
#define HOSTAPD_CHAN_GO_CONCURRENT 0x00020000
|
||||
|
||||
#define HOSTAPD_CHAN_VHT_10_150 0x00100000
|
||||
#define HOSTAPD_CHAN_VHT_30_130 0x00200000
|
||||
#define HOSTAPD_CHAN_VHT_50_110 0x00400000
|
||||
#define HOSTAPD_CHAN_VHT_70_90 0x00800000
|
||||
#define HOSTAPD_CHAN_VHT_90_70 0x01000000
|
||||
#define HOSTAPD_CHAN_VHT_110_50 0x02000000
|
||||
#define HOSTAPD_CHAN_VHT_130_30 0x04000000
|
||||
#define HOSTAPD_CHAN_VHT_150_10 0x08000000
|
||||
|
||||
/**
|
||||
* enum reg_change_initiator - Regulatory change initiator
|
||||
*/
|
||||
|
|
|
@ -1418,7 +1418,7 @@ static void nl80211_reg_rule_sec(struct nlattr *tb[],
|
|||
|
||||
|
||||
static void nl80211_set_vht_mode(struct hostapd_hw_modes *mode, int start,
|
||||
int end)
|
||||
int end, int max_bw)
|
||||
{
|
||||
int c;
|
||||
|
||||
|
@ -1435,6 +1435,32 @@ static void nl80211_set_vht_mode(struct hostapd_hw_modes *mode, int start,
|
|||
|
||||
if (chan->freq - 70 >= start && chan->freq + 10 <= end)
|
||||
chan->flag |= HOSTAPD_CHAN_VHT_70_10;
|
||||
|
||||
if (max_bw >= 160) {
|
||||
if (chan->freq - 10 >= start && chan->freq + 150 <= end)
|
||||
chan->flag |= HOSTAPD_CHAN_VHT_10_150;
|
||||
|
||||
if (chan->freq - 30 >= start && chan->freq + 130 <= end)
|
||||
chan->flag |= HOSTAPD_CHAN_VHT_30_130;
|
||||
|
||||
if (chan->freq - 50 >= start && chan->freq + 110 <= end)
|
||||
chan->flag |= HOSTAPD_CHAN_VHT_50_110;
|
||||
|
||||
if (chan->freq - 70 >= start && chan->freq + 90 <= end)
|
||||
chan->flag |= HOSTAPD_CHAN_VHT_70_90;
|
||||
|
||||
if (chan->freq - 90 >= start && chan->freq + 70 <= end)
|
||||
chan->flag |= HOSTAPD_CHAN_VHT_90_70;
|
||||
|
||||
if (chan->freq - 110 >= start && chan->freq + 50 <= end)
|
||||
chan->flag |= HOSTAPD_CHAN_VHT_110_50;
|
||||
|
||||
if (chan->freq - 130 >= start && chan->freq + 30 <= end)
|
||||
chan->flag |= HOSTAPD_CHAN_VHT_130_30;
|
||||
|
||||
if (chan->freq - 150 >= start && chan->freq + 10 <= end)
|
||||
chan->flag |= HOSTAPD_CHAN_VHT_150_10;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1465,7 +1491,7 @@ static void nl80211_reg_rule_vht(struct nlattr *tb[],
|
|||
if (!results->modes[m].vht_capab)
|
||||
continue;
|
||||
|
||||
nl80211_set_vht_mode(&results->modes[m], start, end);
|
||||
nl80211_set_vht_mode(&results->modes[m], start, end, max_bw);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue