Merge "qca-wifi: [component_dev] Add API for 6Ghz advertisement params"
diff --git a/dp/src/dp_rate_stats.c b/dp/src/dp_rate_stats.c
index 089e026..a097073 100644
--- a/dp/src/dp_rate_stats.c
+++ b/dp/src/dp_rate_stats.c
@@ -374,8 +374,8 @@
 
 		if (qdf_unlikely(!stats_ctx)) {
 			qdf_warn("peer rate stats ctx is NULL, return");
-			qdf_warn("peer_mac:  " QDF_MAC_ADDR_STR,
-				 QDF_MAC_ADDR_ARRAY(ppdu_user->mac_addr));
+			qdf_warn("peer_mac:  " QDF_MAC_ADDR_FMT,
+				 QDF_MAC_ADDR_REF(ppdu_user->mac_addr));
 			STATS_CTX_LOCK_RELEASE(&soc_stats_ctx->tx_ctx_lock);
 			continue;
 		}
@@ -448,8 +448,8 @@
 
 		if (qdf_unlikely(!stats_ctx)) {
 			qdf_warn("peer rate stats ctx is NULL, return");
-			qdf_warn("peer_mac:  " QDF_MAC_ADDR_STR,
-				 QDF_MAC_ADDR_ARRAY(ppdu_user->mac_addr));
+			qdf_warn("peer_mac:  " QDF_MAC_ADDR_FMT,
+				 QDF_MAC_ADDR_REF(ppdu_user->mac_addr));
 			STATS_CTX_LOCK_RELEASE(&soc_stats_ctx->rx_ctx_lock);
 			continue;
 		}
@@ -531,8 +531,8 @@
 
 		if (qdf_unlikely(!stats_ctx)) {
 			qdf_warn("peer rate stats ctx is NULL, return");
-			qdf_warn("peer_mac:  " QDF_MAC_ADDR_STR,
-				 QDF_MAC_ADDR_ARRAY(cdp_rx_ppdu->mac_addr));
+			qdf_warn("peer_mac:  " QDF_MAC_ADDR_FMT,
+				 QDF_MAC_ADDR_REF(cdp_rx_ppdu->mac_addr));
 			STATS_CTX_LOCK_RELEASE(&soc_stats_ctx->rx_ctx_lock);
 			continue;
 		}
@@ -658,8 +658,8 @@
 
 		if (qdf_unlikely(!stats_ctx)) {
 			qdf_debug("peer rate stats ctx is NULL, investigate");
-			qdf_debug("peer_mac: " QDF_MAC_ADDR_STR,
-				 QDF_MAC_ADDR_ARRAY(ppdu_user->mac_addr));
+			qdf_debug("peer_mac: " QDF_MAC_ADDR_FMT,
+				 QDF_MAC_ADDR_REF(ppdu_user->mac_addr));
 			STATS_CTX_LOCK_RELEASE(&soc_stats_ctx->tx_ctx_lock);
 			continue;
 		}
diff --git a/dp/wifi3.0/dp_tx_capture.c b/dp/wifi3.0/dp_tx_capture.c
index 9946795..fee5546 100644
--- a/dp/wifi3.0/dp_tx_capture.c
+++ b/dp/wifi3.0/dp_tx_capture.c
@@ -115,6 +115,8 @@
 /* Maximum number of retries */
 #define MAX_RETRY_Q_COUNT 20
 
+#define DP_PEER_TX_TID_INIT_DONE_BIT 0
+
 #ifdef WLAN_TX_PKT_CAPTURE_ENH
 
 /* stats counter */
@@ -489,8 +491,11 @@
 
 	for (tid = 0; tid < DP_MAX_TIDS; tid++) {
 		tx_tid = &peer->tx_capture.tx_tid[tid];
-		if (tx_tid->init_done)
+
+		if (qdf_atomic_test_and_set_bit(DP_PEER_TX_TID_INIT_DONE_BIT,
+						&tx_tid->tid_flags))
 			continue;
+
 		tx_tid->tid = tid;
 		qdf_nbuf_queue_init(&tx_tid->defer_msdu_q);
 		qdf_nbuf_queue_init(&tx_tid->msdu_comp_q);
@@ -510,6 +515,8 @@
 			for (i = 0; i < tid; i++) {
 				tx_tid = &peer->tx_capture.tx_tid[i];
 				qdf_mem_free(tx_tid->xretry_ppdu);
+				qdf_atomic_clear_bit(DP_PEER_TX_TID_INIT_DONE_BIT,
+							&tx_tid->tid_flags);
 			}
 			QDF_ASSERT(0);
 			return;
@@ -518,7 +525,6 @@
 		/* spinlock create */
 		qdf_spinlock_create(&tx_tid->tid_lock);
 		qdf_spinlock_create(&tx_tid->tasklet_tid_lock);
-		tx_tid->init_done = 1;
 	}
 
 	peer->tx_capture.is_tid_initialized = 1;
@@ -572,6 +578,11 @@
 
 	for (tid = 0; tid < DP_MAX_TIDS; tid++) {
 		tx_tid = &peer->tx_capture.tx_tid[tid];
+
+		if (!qdf_atomic_test_and_clear_bit(DP_PEER_TX_TID_INIT_DONE_BIT,
+						&tx_tid->tid_flags))
+			continue;
+
 		xretry_ppdu = tx_tid->xretry_ppdu;
 		xretry_user = &xretry_ppdu->user[0];
 
diff --git a/dp/wifi3.0/dp_tx_capture.h b/dp/wifi3.0/dp_tx_capture.h
index 5618d21..6e0e103 100644
--- a/dp/wifi3.0/dp_tx_capture.h
+++ b/dp/wifi3.0/dp_tx_capture.h
@@ -161,7 +161,7 @@
 	uint16_t first_data_seq_ctrl;
 	uint32_t mpdu_cnt;
 	uint32_t mpdu_fcs_ok_bitmap[QDF_MON_STATUS_MPDU_FCS_BMAP_NWORDS];
-	uint8_t init_done;
+	unsigned long tid_flags;
 };
 
 struct dp_peer_tx_capture {
diff --git a/dp/wifi3.0/dp_txrx_wds.c b/dp/wifi3.0/dp_txrx_wds.c
index f768523..760dfa2 100644
--- a/dp/wifi3.0/dp_txrx_wds.c
+++ b/dp/wifi3.0/dp_txrx_wds.c
@@ -664,8 +664,8 @@
 	 */
 	if (peer->vlan_id) {
 		dp_debug("peer already added to vdev multipass list"
-			 "MAC: "QDF_MAC_ADDR_STR" vlan: %d ",
-			 QDF_MAC_ADDR_ARRAY(peer->mac_addr.raw), peer->vlan_id);
+			 "MAC: "QDF_MAC_ADDR_FMT" vlan: %d ",
+			 QDF_MAC_ADDR_REF(peer->mac_addr.raw), peer->vlan_id);
 		dp_peer_unref_delete(peer, DP_MOD_ID_TX_MULTIPASS);
 		return;
 	}
diff --git a/tools/linux/cfg80211_ven_cmd.h b/tools/linux/cfg80211_ven_cmd.h
index 5b52eaa..5bfe789 100644
--- a/tools/linux/cfg80211_ven_cmd.h
+++ b/tools/linux/cfg80211_ven_cmd.h
@@ -1518,6 +1518,7 @@
 	{"get_rrmslwin",        IEEE80211_PARAM_RRM_SLWINDOW, GET_PARAM, 0},
 	{"rrmdbg",              IEEE80211_PARAM_RRM_DEBUG, SET_PARAM, 1},
 	{"get_rrmdbg",          IEEE80211_PARAM_RRM_DEBUG, GET_PARAM, 0},
+	{"rrm_filter",          IEEE80211_PARAM_RRM_FILTER, SET_PARAM, 1},
 	{"wnm_bss",             IEEE80211_PARAM_WNM_BSS_CAP, SET_PARAM, 1},
 	{"get_wnm_bss",         IEEE80211_PARAM_WNM_BSS_CAP, GET_PARAM, 0},
 	{"wnm",                 IEEE80211_PARAM_WNM_CAP, SET_PARAM, 1},
@@ -1530,6 +1531,7 @@
 	{"get_wnm_sleep",       IEEE80211_PARAM_WNM_SLEEP_CAP, GET_PARAM, 0},
 	{"wnm_fms",             IEEE80211_PARAM_WNM_FMS_CAP, SET_PARAM, 1},
 	{"get_wnm_fms",         IEEE80211_PARAM_WNM_FMS_CAP, GET_PARAM, 0},
+	{"wnm_filter",          IEEE80211_PARAM_WNM_FILTER, SET_PARAM, 1},
 #if WLAN_SUPPORT_GREEN_AP
 	{"ant_ps_on",           IEEE80211_IOCTL_GREEN_AP_PS_ENABLE, SET_PARAM, 1},
 	{"get_ant_ps_on",       IEEE80211_IOCTL_GREEN_AP_PS_ENABLE, GET_PARAM, 0},