Merge "qca-wifi: Replace QDF_MAC_ADDR_STR and QDF_MAC_ADDR_ARRAY"
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_me.c b/dp/wifi3.0/dp_txrx_me.c
index c8c2c9c..215e6cb 100644
--- a/dp/wifi3.0/dp_txrx_me.c
+++ b/dp/wifi3.0/dp_txrx_me.c
@@ -210,6 +210,24 @@
return QDF_STATUS_E_FAILURE;
}
+/**
+ * dp_tx_prepare_send_igmp_me(): Call to check igmp ,convert mcast to ucast
+ * @vdev: DP VDEV handle
+ * @nbuf: Multicast buffer
+ *
+ * Return: no of packets transmitted
+ */
+QDF_STATUS
+dp_tx_prepare_send_igmp_me(struct dp_vdev *vdev, qdf_nbuf_t nbuf)
+{
+ if (dp_igmp_me_mcast_convert((struct cdp_soc_t *)(vdev->pdev->soc),
+ vdev->vdev_id, vdev->pdev->pdev_id,
+ nbuf) > 0)
+ return QDF_STATUS_SUCCESS;
+
+ return QDF_STATUS_E_FAILURE;
+}
+
/*
* dp_tx_me_mem_free(): Function to free allocated memory in mcast enahncement
* pdev: pointer to DP PDEV structure
@@ -249,6 +267,8 @@
* @nbuf: Multicast nbuf
* @newmac: Table of the clients to which packets have to be sent
* @new_mac_cnt: No of clients
+ * @tid: desired tid
+ * @is_igmp: flag to indicate if packet is igmp
*
* return: no of converted packets
*/
@@ -256,7 +276,8 @@
dp_tx_me_send_convert_ucast(struct cdp_soc_t *soc_hdl, uint8_t vdev_id,
qdf_nbuf_t nbuf,
uint8_t newmac[][QDF_MAC_ADDR_SIZE],
- uint8_t new_mac_cnt)
+ uint8_t new_mac_cnt, uint8_t tid,
+ bool is_igmp)
{
struct dp_soc *soc = cdp_soc_t_to_dp_soc(soc_hdl);
struct dp_pdev *pdev;
@@ -414,12 +435,22 @@
msdu_info.num_seg = new_mac_cnt;
msdu_info.frm_type = dp_tx_frm_me;
- msdu_info.tid = HTT_INVALID_TID;
- if (qdf_unlikely(vdev->mcast_enhancement_en > 0) &&
- qdf_unlikely(pdev->hmmc_tid_override_en))
- msdu_info.tid = pdev->hmmc_tid;
+ if (tid == HTT_INVALID_TID) {
+ msdu_info.tid = HTT_INVALID_TID;
+ if (qdf_unlikely(vdev->mcast_enhancement_en > 0) &&
+ qdf_unlikely(pdev->hmmc_tid_override_en))
+ msdu_info.tid = pdev->hmmc_tid;
+ } else {
+ msdu_info.tid = tid;
+ }
- DP_STATS_INC(vdev, tx_i.mcast_en.ucast, new_mac_cnt);
+ if (is_igmp) {
+ DP_STATS_INC(vdev, tx_i.igmp_mcast_en.igmp_ucast_converted,
+ new_mac_cnt);
+ } else {
+ DP_STATS_INC(vdev, tx_i.mcast_en.ucast, new_mac_cnt);
+ }
+
dp_tx_send_msdu_multiple(vdev, nbuf, &msdu_info);
while (seg_info_head->next) {
diff --git a/dp/wifi3.0/dp_txrx_me.h b/dp/wifi3.0/dp_txrx_me.h
index a716bdc..c801de7 100644
--- a/dp/wifi3.0/dp_txrx_me.h
+++ b/dp/wifi3.0/dp_txrx_me.h
@@ -21,15 +21,23 @@
dp_tx_me_send_convert_ucast(struct cdp_soc_t *soc, uint8_t vdev_id,
qdf_nbuf_t nbuf,
uint8_t newmac[][QDF_MAC_ADDR_SIZE],
- uint8_t new_mac_cnt);
+ uint8_t new_mac_cnt, uint8_t tid,
+ bool is_igmp);
void dp_tx_me_alloc_descriptor(struct cdp_soc_t *soc, uint8_t pdev_id);
void dp_tx_me_free_descriptor(struct cdp_soc_t *soc, uint8_t pdev_id);
void dp_tx_me_exit(struct dp_pdev *pdev);
QDF_STATUS
dp_tx_prepare_send_me(struct dp_vdev *vdev, qdf_nbuf_t nbuf);
+QDF_STATUS
+dp_tx_prepare_send_igmp_me(struct dp_vdev *vdev, qdf_nbuf_t nbuf);
extern int
dp_me_mcast_convert(struct cdp_soc_t *soc,
uint8_t vdev_id,
uint8_t pdev_id,
qdf_nbuf_t wbuf);
+extern int
+dp_igmp_me_mcast_convert(struct cdp_soc_t *soc,
+ uint8_t vdev_id,
+ uint8_t pdev_id,
+ qdf_nbuf_t wbuf);
#endif
diff --git a/tools/linux/cfg80211_ven_cmd.h b/tools/linux/cfg80211_ven_cmd.h
index 051a8af..c12fe62 100644
--- a/tools/linux/cfg80211_ven_cmd.h
+++ b/tools/linux/cfg80211_ven_cmd.h
@@ -777,6 +777,8 @@
IEEE80211_PARAM_TX_VAP = 708, /* Current Tx Vap */
IEEE80211_PARAM_FILS_IS_ENABLE = 709, /* Fils enable frames*/
IEEE80211_PARAM_MBSS_TXVDEV = 710,
+ IEEE80211_PARAM_IGMP_ME = 711, /* Set IGMP Mcast enhancement option: 0 disable, 1 enable */
+ IEEE80211_PARAM_HLOS_TID_OVERRIDE = 712, /* enable/disable hlos tid override support per vap */
};
enum {
@@ -1235,6 +1237,8 @@
OL_ATH_PARAM_ACS_PRECAC_SUPPORT = 457,
/* MBSSID AUTO MODE TX VDEV derivation */
OL_ATH_PARAM_MBSS_AUTOMODE = 458,
+ /* RNR selective addition */
+ OL_ATH_PARAM_RNR_SELECTIVE_ADD = 459,
};
#ifdef CONFIG_SUPPORT_LIBROXML
@@ -2211,6 +2215,10 @@
{"rxtimeout", 35839, SET_PARAM, 1},
{"oce_version_override ", IEEE80211_PARAM_OCE_VERSION_OVERRIDE, SET_PARAM, 1},
{"g_oce_version_override ", IEEE80211_PARAM_OCE_VERSION_OVERRIDE, GET_PARAM, 0},
+ {"igmpmcasten", IEEE80211_PARAM_IGMP_ME, SET_PARAM, 1},
+ {"g_igmpmcasten", IEEE80211_PARAM_IGMP_ME, GET_PARAM, 0},
+ {"hlos_tidoverride ", IEEE80211_PARAM_HLOS_TID_OVERRIDE, SET_PARAM, 1},
+ {"g_hlos_tidoverride ", IEEE80211_PARAM_HLOS_TID_OVERRIDE, GET_PARAM, 0},
};
struct vendor_commands radio_vendor_cmds[] = {
@@ -3134,9 +3142,9 @@
OL_ATH_PARAM_SHIFT | OL_ATH_PARAM_NO_BACKHAUL_RADIO, SET_PARAM, 1},
{"g_nobckhlradio",
OL_ATH_PARAM_SHIFT | OL_ATH_PARAM_NO_BACKHAUL_RADIO, GET_PARAM, 0},
- {"enable_additional_triplets",
+ {"set_triplets_bw",
OL_ATH_PARAM_SHIFT | OL_ATH_PARAM_ENABLE_ADDITIONAL_TRIPLETS, SET_PARAM, 1},
- {"g_enable_additional_triplets",
+ {"get_triplets_bw",
OL_ATH_PARAM_SHIFT | OL_ATH_PARAM_ENABLE_ADDITIONAL_TRIPLETS, GET_PARAM, 0},
#ifdef QCA_SUPPORT_DFS_CHAN_POSTNOL
{"setpostNOLfreq",
@@ -3180,6 +3188,12 @@
OL_ATH_PARAM_SHIFT | OL_ATH_PARAM_MBSS_AUTOMODE, SET_PARAM, 1},
{"g_mbss_auto",
OL_ATH_PARAM_SHIFT | OL_ATH_PARAM_MBSS_AUTOMODE, GET_PARAM, 0},
+ {"selective_rnr_nontx",
+ OL_ATH_PARAM_SHIFT | OL_ATH_PARAM_RNR_SELECTIVE_ADD,
+ SET_PARAM, 1},
+ {"g_selective_rnr_nontx",
+ OL_ATH_PARAM_SHIFT | OL_ATH_PARAM_RNR_SELECTIVE_ADD,
+ GET_PARAM, 0},
};
#endif
#endif
diff --git a/umac/dfs/core/src/misc/dfs_zero_cac.c b/umac/dfs/core/src/misc/dfs_zero_cac.c
index 2134008..3192af4 100644
--- a/umac/dfs/core/src/misc/dfs_zero_cac.c
+++ b/umac/dfs/core/src/misc/dfs_zero_cac.c
@@ -2993,6 +2993,7 @@
return false;
}
+#ifdef ATH_SUPPORT_ZERO_CAC_DFS
enum precac_status_for_chan
dfs_precac_status_for_channel(struct wlan_dfs *dfs,
struct dfs_channel *deschan)
@@ -3005,6 +3006,7 @@
return DFS_PRECAC_REQUIRED_CHAN;
}
+#endif
void dfs_print_precaclists(struct wlan_dfs *dfs)
{
diff --git a/umac/mlme/conn_mgr/core/src/wlan_cm_blm_main.c b/umac/mlme/conn_mgr/core/src/wlan_cm_blm_main.c
index 08ed235..5d0738f 100644
--- a/umac/mlme/conn_mgr/core/src/wlan_cm_blm_main.c
+++ b/umac/mlme/conn_mgr/core/src/wlan_cm_blm_main.c
@@ -17,7 +17,6 @@
/**
* DOC: Implement APIs related to the Blacklist manager
*/
-#if 0
#include <wlan_objmgr_cmn.h>
#include <wlan_objmgr_pdev_obj.h>
#include <wlan_scan_utils_api.h>
@@ -124,4 +123,3 @@
return CM_BLM_NO_ACTION;
}
-#endif
diff --git a/umac/mlme/conn_mgr/core/src/wlan_cm_blm_main.h b/umac/mlme/conn_mgr/core/src/wlan_cm_blm_main.h
index 7f84de1..3fa3138 100644
--- a/umac/mlme/conn_mgr/core/src/wlan_cm_blm_main.h
+++ b/umac/mlme/conn_mgr/core/src/wlan_cm_blm_main.h
@@ -20,7 +20,6 @@
#ifndef _WLAN_CM_BLM_MAIN_H_
#define _WLAN_CM_BLM_MAIN_H_
-#if 0
#include <wlan_scan_public_structs.h>
/**
@@ -35,4 +34,3 @@
bool match;
};
#endif
-#endif
diff --git a/umac/mlme/conn_mgr/dispatcher/inc/wlan_cm_blm.h b/umac/mlme/conn_mgr/dispatcher/inc/wlan_cm_blm.h
index e9e932a..22a9eac 100644
--- a/umac/mlme/conn_mgr/dispatcher/inc/wlan_cm_blm.h
+++ b/umac/mlme/conn_mgr/dispatcher/inc/wlan_cm_blm.h
@@ -20,7 +20,6 @@
#ifndef _WLAN_CM_BLM_H_
#define _WLAN_CM_BLM_H_
-#if 0
#include <wlan_scan_utils_api.h>
/*
@@ -88,4 +87,3 @@
*/
qdf_time_t wlan_cm_get_bad_ap_timeout(struct wlan_objmgr_vdev *vdev);
#endif
-#endif
diff --git a/umac/rnr/inc/wlan_rnr.h b/umac/rnr/inc/wlan_rnr.h
new file mode 100644
index 0000000..e306774
--- /dev/null
+++ b/umac/rnr/inc/wlan_rnr.h
@@ -0,0 +1,157 @@
+/*
+ * Copyright (c) 2020 The Linux Foundation. All rights reserved.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#ifndef _WLAN_RNR_H_
+#define _WLAN_RNR_H_
+#include <qdf_atomic.h>
+#include <wlan_objmgr_pdev_obj.h>
+
+/**
+ * struct rnr_global_info - Global context for RNR
+ * @vdev_lower_band_cnt: 5ghz/2ghz vdev count
+ * @vdev_6ghz_band_cnt: 6ghz vdev count
+ * @pdev_6ghz_ctx: 6Ghz pdev context
+ */
+struct rnr_global_info {
+ qdf_atomic_t vdev_lower_band_cnt;
+ qdf_atomic_t vdev_6ghz_band_cnt;
+ uint32_t rnr_mbss_idx_map;
+ struct wlan_objmgr_pdev *pdev_6ghz_ctx;
+};
+
+/**
+ * wlan_rnr_lower_band_vdev_inc - Atomic increment of
+ * global lower band vdev counter
+ *
+ * API to increment global lower band vdev counter
+ *
+ * Return:void
+ */
+void wlan_rnr_lower_band_vdev_inc(void);
+
+/**
+ * wlan_rnr_lower_band_vdev_dec - Atomic decrement of
+ * global lower band vdev counter
+ *
+ * API to decrement global lower band vdev counter
+ *
+ * Return:void
+ */
+void wlan_rnr_lower_band_vdev_dec(void);
+
+/**
+ * wlan_rnr_6ghz_vdev_inc - Atomic increment of
+ * 6ghz vdev counter
+ *
+ * API to increment of 6Ghz vdev counter
+ *
+ * Return:void
+ */
+void wlan_rnr_6ghz_vdev_inc(void);
+
+/**
+ * wlan_rnr_6ghz_vdev_dec - Atomic decrement of
+ * 6ghz vdev counter
+ *
+ * API to decrement of 6Ghz vdev counter
+ *
+ * Return:void
+ */
+void wlan_rnr_6ghz_vdev_dec(void);
+
+/**
+ * wlan_global_6ghz_pdev_set - Store 6Ghz pdev in
+ * global context
+ *
+ * API to save 6Ghz pdev in global context for
+ * faster access
+ *
+ * Return:void
+ */
+void wlan_global_6ghz_pdev_set(struct wlan_objmgr_pdev *pdev);
+
+/**
+ * wlan_global_6ghz_pdev_destroy - Delete 6Ghz pdev in
+ * global context
+ *
+ * API to delete 6Ghz pdev in global context for
+ * faster access
+ *
+ * Return:void
+ */
+void wlan_global_6ghz_pdev_destroy(void);
+
+/**
+ * wlan_lower_band_ap_cnt_get - Get lower band AP count
+ *
+ * API to get lower band vdev from global context for
+ * faster access
+ *
+ * Return: int32_t
+ */
+int32_t wlan_lower_band_ap_cnt_get(void);
+
+/**
+ * wlan_rnr_init_cnt - Initialize counters for
+ * 6Ghz vdev and lower band vdev
+ *
+ * API to initialize atomic counters used for 6Ghz vdev
+ * and lower band vdev
+ *
+ * Return: void
+ */
+void wlan_rnr_init_cnt(void);
+
+/**
+ * wlan_gbl_6ghz_pdev_get - Retrieve 6Ghz pdev pointer
+ *
+ * API to get 6Ghz pdev pointer
+ *
+ * Return: struct wlan_objmgr_pdev
+ */
+struct wlan_objmgr_pdev *wlan_gbl_6ghz_pdev_get(void);
+
+/**
+ * wlan_rnr_set_bss_idx - Set bit corresponding to bss index
+ *
+ * API to set bss index bitmap for adding Non Tx APs
+ * not included in Mbss IE in the RNR IE
+ *
+ * Return: void
+ */
+void wlan_rnr_set_bss_idx(uint32_t bss_idx);
+
+/**
+ * wlan_rnr_get_bss_idx - Get bit corresponding to bss index
+ *
+ * API to Get bss index bitmap for adding Non Tx APs
+ * not included in Mbss IE in the RNR IE
+ *
+ * Return: void
+ */
+uint32_t wlan_rnr_get_bss_idx(void);
+
+/**
+ * wlan_rnr_clear_bss_idx - Clear bits corresponding to bss index map
+ *
+ * API to clear bss index bitmap for adding Non Tx APs
+ * not included in Mbss IE in the RNR IE
+ *
+ * Return: void
+ */
+void wlan_rnr_clear_bss_idx(void);
+
+#endif /* End of _WLAN_RNR_H_ */
diff --git a/umac/rnr/src/wlan_rnr.c b/umac/rnr/src/wlan_rnr.c
new file mode 100644
index 0000000..bfc9ee5
--- /dev/null
+++ b/umac/rnr/src/wlan_rnr.c
@@ -0,0 +1,102 @@
+/*
+ * Copyright (c) 2020 The Linux Foundation. All rights reserved.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <wlan_rnr.h>
+#include <qdf_module.h>
+#include <qdf_status.h>
+#include <qdf_types.h>
+
+struct rnr_global_info g_rnr_info;
+
+void wlan_rnr_init_cnt(void)
+{
+ qdf_atomic_init(&(g_rnr_info.vdev_lower_band_cnt));
+ qdf_atomic_init(&(g_rnr_info.vdev_6ghz_band_cnt));
+}
+
+qdf_export_symbol(wlan_rnr_init_cnt);
+
+void wlan_rnr_lower_band_vdev_inc(void)
+{
+ qdf_atomic_inc(&(g_rnr_info.vdev_lower_band_cnt));
+}
+
+qdf_export_symbol(wlan_rnr_lower_band_vdev_inc);
+
+void wlan_rnr_lower_band_vdev_dec(void)
+{
+ qdf_atomic_dec(&(g_rnr_info.vdev_lower_band_cnt));
+}
+
+qdf_export_symbol(wlan_rnr_lower_band_vdev_dec);
+
+void wlan_rnr_6ghz_vdev_inc(void)
+{
+ qdf_atomic_inc(&(g_rnr_info.vdev_6ghz_band_cnt));
+}
+
+qdf_export_symbol(wlan_rnr_6ghz_vdev_inc);
+
+void wlan_rnr_6ghz_vdev_dec(void)
+{
+ qdf_atomic_dec(&(g_rnr_info.vdev_6ghz_band_cnt));
+}
+
+qdf_export_symbol(wlan_rnr_6ghz_vdev_dec);
+
+void wlan_global_6ghz_pdev_set(struct wlan_objmgr_pdev *pdev)
+{
+ if (pdev)
+ g_rnr_info.pdev_6ghz_ctx = pdev;
+}
+
+qdf_export_symbol(wlan_global_6ghz_pdev_set);
+
+void wlan_global_6ghz_pdev_destroy(void)
+{
+ g_rnr_info.pdev_6ghz_ctx = NULL;
+}
+
+qdf_export_symbol(wlan_global_6ghz_pdev_destroy);
+
+int32_t wlan_lower_band_ap_cnt_get(void)
+{
+ return qdf_atomic_read(&(g_rnr_info.vdev_lower_band_cnt));
+}
+
+qdf_export_symbol(wlan_lower_band_ap_cnt_get);
+
+struct wlan_objmgr_pdev *wlan_gbl_6ghz_pdev_get(void)
+{
+ return g_rnr_info.pdev_6ghz_ctx;
+}
+
+qdf_export_symbol(wlan_gbl_6ghz_pdev_get);
+
+void wlan_rnr_set_bss_idx(uint32_t bss_idx)
+{
+ g_rnr_info.rnr_mbss_idx_map |= (1 << (bss_idx-1));
+}
+
+uint32_t wlan_rnr_get_bss_idx(void)
+{
+ return g_rnr_info.rnr_mbss_idx_map;
+}
+
+void wlan_rnr_clear_bss_idx(void)
+{
+ g_rnr_info.rnr_mbss_idx_map = 0;
+}