Browse Source

qcacmn: Add more channel flags in nol logic

Add more channel flags support in nol channel
marking logic.

Change-Id: I2c931fec773c2f6138fff8ee757c4c99b056d56d
CRs-Fixed: 2069388
Arif Hussain 7 years ago
parent
commit
23473930ae
2 changed files with 87 additions and 10 deletions
  1. 65 1
      umac/dfs/core/src/dfs_channel.h
  2. 22 9
      umac/dfs/core/src/misc/dfs_process_radar_found_ind.c

+ 65 - 1
umac/dfs/core/src/dfs_channel.h

@@ -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)

+ 22 - 9
umac/dfs/core/src/misc/dfs_process_radar_found_ind.c

@@ -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++) {