qcacmn: Add Japan W53 channel flag support
Add support to exclude/include Japan W53 channels in random channel selection. Change-Id: I359d6bb68e2737b64b77f6f3ad27f83fd33d3da8 CRs-Fixed: 2371013
This commit is contained in:
@@ -122,6 +122,7 @@
|
|||||||
|
|
||||||
#define DFS_IS_CHANNEL_WEATHER_RADAR(_f) (((_f) >= 5600) && ((_f) <= 5650))
|
#define DFS_IS_CHANNEL_WEATHER_RADAR(_f) (((_f) >= 5600) && ((_f) <= 5650))
|
||||||
#define DFS_IS_CHAN_JAPAN_INDOOR(_ch) (((_ch) >= 36) && ((_ch) <= 64))
|
#define DFS_IS_CHAN_JAPAN_INDOOR(_ch) (((_ch) >= 36) && ((_ch) <= 64))
|
||||||
|
#define DFS_IS_CHAN_JAPAN_W53(_ch) (((_ch) >= 52) && ((_ch) <= 64))
|
||||||
#define DFS_IS_CHAN_JAPAN_OUTDOOR(_ch) (((_ch) >= 100) && ((_ch) <= 140))
|
#define DFS_IS_CHAN_JAPAN_OUTDOOR(_ch) (((_ch) >= 100) && ((_ch) <= 140))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -1253,23 +1253,24 @@ static void dfs_apply_rules(struct wlan_dfs *dfs,
|
|||||||
struct dfs_acs_info *acs_info)
|
struct dfs_acs_info *acs_info)
|
||||||
{
|
{
|
||||||
struct dfs_channel *chan;
|
struct dfs_channel *chan;
|
||||||
uint16_t flag_no_weather = 0;
|
bool flag_no_weather = 0;
|
||||||
uint16_t flag_no_lower_5g = 0;
|
bool flag_no_lower_5g = 0;
|
||||||
uint16_t flag_no_upper_5g = 0;
|
bool flag_no_upper_5g = 0;
|
||||||
uint16_t flag_no_dfs_chan = 0;
|
bool flag_no_dfs_chan = 0;
|
||||||
uint16_t flag_no_2g_chan = 0;
|
bool flag_no_2g_chan = 0;
|
||||||
uint16_t flag_no_5g_chan = 0;
|
bool flag_no_5g_chan = 0;
|
||||||
|
bool flag_no_japan_w53 = 0;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
dfs_debug(dfs, WLAN_DEBUG_DFS_RANDOM_CHAN, "flags %d", flags);
|
dfs_debug(dfs, WLAN_DEBUG_DFS_RANDOM_CHAN, "flags %d", flags);
|
||||||
flag_no_weather = (dfs_region == DFS_ETSI_REGION_VAL) ?
|
flag_no_weather = (dfs_region == DFS_ETSI_REGION_VAL) ?
|
||||||
flags & DFS_RANDOM_CH_FLAG_NO_WEATHER_CH : 0;
|
flags & DFS_RANDOM_CH_FLAG_NO_WEATHER_CH : 0;
|
||||||
|
|
||||||
flag_no_lower_5g = (dfs_region == DFS_MKK_REGION_VAL) ?
|
if (dfs_region == DFS_MKK_REGION_VAL) {
|
||||||
flags & DFS_RANDOM_CH_FLAG_NO_LOWER_5G_CH : 0;
|
flag_no_lower_5g = flags & DFS_RANDOM_CH_FLAG_NO_LOWER_5G_CH;
|
||||||
|
flag_no_upper_5g = flags & DFS_RANDOM_CH_FLAG_NO_UPEER_5G_CH;
|
||||||
flag_no_upper_5g = (dfs_region == DFS_MKK_REGION_VAL) ?
|
flag_no_japan_w53 = flags & DFS_RANDOM_CH_FLAG_NO_JAPAN_W53_CH;
|
||||||
flags & DFS_RANDOM_CH_FLAG_NO_UPEER_5G_CH : 0;
|
}
|
||||||
|
|
||||||
flag_no_dfs_chan = flags & DFS_RANDOM_CH_FLAG_NO_DFS_CH;
|
flag_no_dfs_chan = flags & DFS_RANDOM_CH_FLAG_NO_DFS_CH;
|
||||||
flag_no_2g_chan = flags & DFS_RANDOM_CH_FLAG_NO_2GHZ_CH;
|
flag_no_2g_chan = flags & DFS_RANDOM_CH_FLAG_NO_2GHZ_CH;
|
||||||
@@ -1281,8 +1282,7 @@ static void dfs_apply_rules(struct wlan_dfs *dfs,
|
|||||||
if ((chan->dfs_ch_ieee == 0) ||
|
if ((chan->dfs_ch_ieee == 0) ||
|
||||||
(chan->dfs_ch_ieee > MAX_CHANNEL_NUM)) {
|
(chan->dfs_ch_ieee > MAX_CHANNEL_NUM)) {
|
||||||
dfs_debug(dfs, WLAN_DEBUG_DFS_RANDOM_CHAN,
|
dfs_debug(dfs, WLAN_DEBUG_DFS_RANDOM_CHAN,
|
||||||
"invalid channel %d",
|
"invalid channel %d", chan->dfs_ch_ieee);
|
||||||
chan->dfs_ch_ieee);
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1291,7 +1291,7 @@ static void dfs_apply_rules(struct wlan_dfs *dfs,
|
|||||||
if (chan->dfs_ch_ieee ==
|
if (chan->dfs_ch_ieee ==
|
||||||
dfs->dfs_curchan->dfs_ch_ieee) {
|
dfs->dfs_curchan->dfs_ch_ieee) {
|
||||||
dfs_debug(dfs, WLAN_DEBUG_DFS_RANDOM_CHAN,
|
dfs_debug(dfs, WLAN_DEBUG_DFS_RANDOM_CHAN,
|
||||||
"skip %d current operating channel\n",
|
"skip %d current operating channel",
|
||||||
chan->dfs_ch_ieee);
|
chan->dfs_ch_ieee);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -1311,16 +1311,14 @@ static void dfs_apply_rules(struct wlan_dfs *dfs,
|
|||||||
if (flag_no_2g_chan &&
|
if (flag_no_2g_chan &&
|
||||||
chan->dfs_ch_ieee <= DFS_MAX_24GHZ_CHANNEL) {
|
chan->dfs_ch_ieee <= DFS_MAX_24GHZ_CHANNEL) {
|
||||||
dfs_debug(dfs, WLAN_DEBUG_DFS_RANDOM_CHAN,
|
dfs_debug(dfs, WLAN_DEBUG_DFS_RANDOM_CHAN,
|
||||||
"skip 2.4 GHz channel=%d",
|
"skip 2.4 GHz channel=%d", chan->dfs_ch_ieee);
|
||||||
chan->dfs_ch_ieee);
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flag_no_5g_chan &&
|
if (flag_no_5g_chan &&
|
||||||
chan->dfs_ch_ieee > DFS_MAX_24GHZ_CHANNEL) {
|
chan->dfs_ch_ieee > DFS_MAX_24GHZ_CHANNEL) {
|
||||||
dfs_debug(dfs, WLAN_DEBUG_DFS_RANDOM_CHAN,
|
dfs_debug(dfs, WLAN_DEBUG_DFS_RANDOM_CHAN,
|
||||||
"skip 5 GHz channel=%d",
|
"skip 5 GHz channel=%d", chan->dfs_ch_ieee);
|
||||||
chan->dfs_ch_ieee);
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1336,31 +1334,35 @@ static void dfs_apply_rules(struct wlan_dfs *dfs,
|
|||||||
if (flag_no_lower_5g &&
|
if (flag_no_lower_5g &&
|
||||||
DFS_IS_CHAN_JAPAN_INDOOR(chan->dfs_ch_ieee)) {
|
DFS_IS_CHAN_JAPAN_INDOOR(chan->dfs_ch_ieee)) {
|
||||||
dfs_debug(dfs, WLAN_DEBUG_DFS_RANDOM_CHAN,
|
dfs_debug(dfs, WLAN_DEBUG_DFS_RANDOM_CHAN,
|
||||||
"skip indoor channel=%d",
|
"skip indoor channel=%d", chan->dfs_ch_ieee);
|
||||||
chan->dfs_ch_ieee);
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flag_no_upper_5g &&
|
if (flag_no_upper_5g &&
|
||||||
DFS_IS_CHAN_JAPAN_OUTDOOR(chan->dfs_ch_ieee)) {
|
DFS_IS_CHAN_JAPAN_OUTDOOR(chan->dfs_ch_ieee)) {
|
||||||
dfs_debug(dfs, WLAN_DEBUG_DFS_RANDOM_CHAN,
|
dfs_debug(dfs, WLAN_DEBUG_DFS_RANDOM_CHAN,
|
||||||
"skip outdoor channel=%d",
|
"skip outdoor channel=%d", chan->dfs_ch_ieee);
|
||||||
chan->dfs_ch_ieee);
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flag_no_dfs_chan &&
|
if (flag_no_dfs_chan &&
|
||||||
(chan->dfs_ch_flagext & WLAN_CHAN_DFS)) {
|
(chan->dfs_ch_flagext & WLAN_CHAN_DFS)) {
|
||||||
dfs_debug(dfs, WLAN_DEBUG_DFS_RANDOM_CHAN,
|
dfs_debug(dfs, WLAN_DEBUG_DFS_RANDOM_CHAN,
|
||||||
"skip dfs channel=%d",
|
"skip dfs channel=%d", chan->dfs_ch_ieee);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (flag_no_japan_w53 &&
|
||||||
|
DFS_IS_CHAN_JAPAN_W53(chan->dfs_ch_ieee)) {
|
||||||
|
dfs_debug(dfs, WLAN_DEBUG_DFS_RANDOM_CHAN,
|
||||||
|
"skip japan W53 channel=%d",
|
||||||
chan->dfs_ch_ieee);
|
chan->dfs_ch_ieee);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dfs_freq_is_in_nol(dfs, chan->dfs_ch_freq)) {
|
if (dfs_freq_is_in_nol(dfs, chan->dfs_ch_freq)) {
|
||||||
dfs_debug(dfs, WLAN_DEBUG_DFS_RANDOM_CHAN,
|
dfs_debug(dfs, WLAN_DEBUG_DFS_RANDOM_CHAN,
|
||||||
"skip nol channel=%d",
|
"skip nol channel=%d", chan->dfs_ch_ieee);
|
||||||
chan->dfs_ch_ieee);
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -161,6 +161,9 @@ struct dfs_bangradar_enh_params {
|
|||||||
/* Flag to enable Reduced BW Agile DFS */
|
/* Flag to enable Reduced BW Agile DFS */
|
||||||
#define DFS_RANDOM_CH_FLAG_ENABLE_REDUCED_BW 0x0080 /* 0000 0000 1000 0000 */
|
#define DFS_RANDOM_CH_FLAG_ENABLE_REDUCED_BW 0x0080 /* 0000 0000 1000 0000 */
|
||||||
|
|
||||||
|
/* Flag to exclude Japan W53 channnels */
|
||||||
|
#define DFS_RANDOM_CH_FLAG_NO_JAPAN_W53_CH 0x0100 /* 0000 0001 0000 0000 */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct wlan_dfs_caps - DFS capability structure.
|
* struct wlan_dfs_caps - DFS capability structure.
|
||||||
* @wlan_dfs_ext_chan_ok: Can radar be detected on the extension chan?
|
* @wlan_dfs_ext_chan_ok: Can radar be detected on the extension chan?
|
||||||
|
Reference in New Issue
Block a user