qcacmn: Add more channel flags in nol logic

Add more channel flags support in nol channel
marking logic.

Change-Id: I2c931fec773c2f6138fff8ee757c4c99b056d56d
CRs-Fixed: 2069388
Cette révision appartient à :
Arif Hussain
2017-06-29 12:22:44 -07:00
révisé par snandini
Parent 7b62aff6c7
révision 23473930ae
2 fichiers modifiés avec 87 ajouts et 10 suppressions

Voir le fichier

@@ -162,6 +162,30 @@ enum dfs_ieee80211_opmode {
/* VHT 80_80 channel */
#define IEEE80211_CHAN_VHT80_80 0x08000000
/* HE 20 channel */
#define IEEE80211_CHAN_HE20 0x0000000010000000
/* HE 40 with extension channel above */
#define IEEE80211_CHAN_HE40PLUS 0x0000000020000000
/* HE 40 with extension channel below */
#define IEEE80211_CHAN_HE40MINUS 0x0000000040000000
/* HE 40 Intolerant */
#define IEEE80211_CHAN_HE40INTOL 0x0000000080000000
/* HE 40 Intolerant mark bit for ACS use */
#define IEEE80211_CHAN_HE40INTOLMARK 0x0000000100000000
/* HE 80 channel */
#define IEEE80211_CHAN_HE80 0x0000000200000000
/* HE 160 channel */
#define IEEE80211_CHAN_HE160 0x0000000400000000
/* HE 80_80 channel */
#define IEEE80211_CHAN_HE80_80 0x0000000800000000
/* flagext */
#define IEEE80211_CHAN_DFS_RADAR_FOUND 0x01
@@ -238,6 +262,42 @@ enum dfs_ieee80211_opmode {
#define IEEE80211_CHAN_11NA_HT40MINUS \
(IEEE80211_CHAN_5GHZ | IEEE80211_CHAN_HT40MINUS)
#define IEEE80211_CHAN_11AXG_HE20 \
(IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_HE20)
#define IEEE80211_CHAN_11AXA_HE20 \
(IEEE80211_CHAN_5GHZ | IEEE80211_CHAN_HE20)
#define IEEE80211_CHAN_11AXG_HE40PLUS \
(IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_HE40PLUS)
#define IEEE80211_CHAN_11AXG_HE40MINUS \
(IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_HE40MINUS)
#define IEEE80211_CHAN_11AXG_HE40 \
(IEEE80211_CHAN_11AXG_HE40PLUS | IEEE80211_CHAN_11AXG_HE40MINUS)
#define IEEE80211_CHAN_11AXA_HE40PLUS \
(IEEE80211_CHAN_5GHZ | IEEE80211_CHAN_HE40PLUS)
#define IEEE80211_CHAN_11AXA_HE40MINUS \
(IEEE80211_CHAN_5GHZ | IEEE80211_CHAN_HE40MINUS)
#define IEEE80211_CHAN_11AXA_HE40 \
(IEEE80211_CHAN_11AXA_HE40PLUS | IEEE80211_CHAN_11AXA_HE40MINUS)
#define IEEE80211_CHAN_11AX_HE40 \
(IEEE80211_CHAN_HE40PLUS | IEEE80211_CHAN_HE40MINUS)
#define IEEE80211_CHAN_11AXA_HE80 \
(IEEE80211_CHAN_5GHZ | IEEE80211_CHAN_HE80)
#define IEEE80211_CHAN_11AXA_HE160 \
(IEEE80211_CHAN_5GHZ | IEEE80211_CHAN_HE160)
#define IEEE80211_CHAN_11AXA_HE80_80 \
(IEEE80211_CHAN_5GHZ | IEEE80211_CHAN_HE80_80)
#define IEEE80211_CHAN_ALL \
(IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_5GHZ | \
IEEE80211_CHAN_GFSK | IEEE80211_CHAN_CCK | \
@@ -246,7 +306,11 @@ enum dfs_ieee80211_opmode {
IEEE80211_CHAN_HT40MINUS | IEEE80211_CHAN_VHT20 | \
IEEE80211_CHAN_VHT40PLUS | IEEE80211_CHAN_VHT40MINUS | \
IEEE80211_CHAN_VHT80 | IEEE80211_CHAN_VHT160 | \
IEEE80211_CHAN_VHT80_80 | IEEE80211_CHAN_HALF | IEEE80211_CHAN_QUARTER)
IEEE80211_CHAN_VHT80_80 | IEEE80211_CHAN_HALF | \
IEEE80211_CHAN_QUARTER | IEEE80211_CHAN_HE20 | \
IEEE80211_CHAN_HE40PLUS | IEEE80211_CHAN_HE40MINUS | \
IEEE80211_CHAN_HE80 | IEEE80211_CHAN_HE160 | \
IEEE80211_CHAN_HE80_80)
#define IEEE80211_CHAN_ALLTURBO \
(IEEE80211_CHAN_ALL | IEEE80211_CHAN_TURBO | IEEE80211_CHAN_STURBO)

Voir le fichier

@@ -244,31 +244,44 @@ void dfs_process_radar_found_indication(struct wlan_dfs *dfs,
radar_found->freq_offset, radar_found->is_chirp,
flag, freq_center);
if ((flag & IEEE80211_CHAN_HT20) ||
(flag & IEEE80211_CHAN_VHT20)) {
if ((flag & IEEE80211_CHAN_A) ||
(flag & IEEE80211_CHAN_11NA_HT20) ||
(flag & IEEE80211_CHAN_HT20) ||
(flag & IEEE80211_CHAN_VHT20) ||
(flag & IEEE80211_CHAN_11AXA_HE20)) {
if (radar_found->is_chirp ||
(sidx && !(abs(sidx) % DFS_BOUNDRY_SIDX))) {
freq_offset.offset[1] -= DFS_CHIRP_OFFSET;
freq_offset.offset[2] += DFS_CHIRP_OFFSET;
}
dfs_radar_chan_for_20(&freq_offset, freq_center);
} else if ((flag & IEEE80211_CHAN_VHT40PLUS) ||
(flag & IEEE80211_CHAN_HT40PLUS) ||
(flag & IEEE80211_CHAN_VHT40MINUS) ||
(flag & IEEE80211_CHAN_HT40MINUS)) {
} else if ((flag & IEEE80211_CHAN_VHT40PLUS) ||
(flag & IEEE80211_CHAN_VHT40MINUS) ||
(flag & IEEE80211_CHAN_HT40PLUS) ||
(flag & IEEE80211_CHAN_HT40MINUS) ||
(flag & IEEE80211_CHAN_11NA_HT40PLUS) ||
(flag & IEEE80211_CHAN_11NA_HT40MINUS) ||
(flag & IEEE80211_CHAN_11AXA_HE40PLUS) ||
(flag & IEEE80211_CHAN_11AXA_HE40MINUS)) {
if (radar_found->is_chirp || !(abs(sidx) % DFS_BOUNDRY_SIDX)) {
freq_offset.offset[1] -= DFS_CHIRP_OFFSET;
freq_offset.offset[2] += DFS_CHIRP_OFFSET;
}
dfs_radar_chan_for_40(&freq_offset, freq_center);
} else if ((flag & IEEE80211_CHAN_VHT80) ||
(flag & IEEE80211_CHAN_VHT80_80) ||
(flag & IEEE80211_CHAN_VHT160)) {
} else if ((flag & IEEE80211_CHAN_VHT80) ||
(flag & IEEE80211_CHAN_VHT80_80) ||
(flag & IEEE80211_CHAN_VHT160) ||
(flag & IEEE80211_CHAN_11AXA_HE80) ||
(flag & IEEE80211_CHAN_11AXA_HE80_80) ||
(flag & IEEE80211_CHAN_11AXA_HE160)) {
if (radar_found->is_chirp || !(abs(sidx) % DFS_BOUNDRY_SIDX)) {
freq_offset.offset[1] -= DFS_CHIRP_OFFSET;
freq_offset.offset[2] += DFS_CHIRP_OFFSET;
}
dfs_radar_chan_for_80(&freq_offset, freq_center);
} else {
DFS_PRINTK("%s: channel flag(%d) is invalid\n", __func__, flag);
return;
}
for (i = 0; i < DFS_NUM_FREQ_OFFSET; i++) {