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},
