qca-wifi: Define restart bitmap using qdf_bitmap

Add change to define restart bitmap using the generalized bitmap
declaration. Also use generalized function to check if any of the
bits are set in the bitmap.

Change-Id: Ice0682ed7a59de962e9e46cf598643139c7c2313
This commit is contained in:
Santosh Anbu
2020-04-28 16:35:00 +05:30
szülő 7bef6dba9b
commit 577e6ed419

Fájl megtekintése

@@ -214,10 +214,12 @@ static QDF_STATUS mlme_stop_pending_restart(struct wlan_objmgr_pdev *pdev,
wlan_vdev_get_id(vdev), 0);
status = QDF_STATUS_SUCCESS;
}
if ((!pdev_mlme->restart_pend_vdev_bmap[0] &&
!pdev_mlme->restart_pend_vdev_bmap[1]) &&
(!pdev_mlme->restart_send_vdev_bmap[0] &&
!pdev_mlme->restart_send_vdev_bmap[1])) {
if (!wlan_util_map_is_any_index_set(
pdev_mlme->restart_pend_vdev_bmap,
sizeof(pdev_mlme->restart_pend_vdev_bmap)) &&
!wlan_util_map_is_any_index_set(
pdev_mlme->restart_send_vdev_bmap,
sizeof(pdev_mlme->restart_send_vdev_bmap))) {
wlan_pdev_mlme_op_clear
(pdev,
WLAN_PDEV_OP_RESTART_INPROGRESS);
@@ -283,9 +285,9 @@ static void mlme_multivdev_restart(struct pdev_mlme_obj *pdev_mlme)
* that vdev bit, if pending vdev is still in SUSPEND (CSA_RESTART or
* SUSPEND_RESTART), then restart the timer
*/
if (!pdev_mlme->restart_pend_vdev_bmap[0] &&
!pdev_mlme->restart_pend_vdev_bmap[1]) {
if (!wlan_util_map_is_any_index_set(
pdev_mlme->restart_pend_vdev_bmap,
sizeof(pdev_mlme->restart_pend_vdev_bmap))) {
wlan_pdev_mlme_op_clear(pdev, WLAN_PDEV_OP_MBSSID_RESTART);
wlan_pdev_mlme_op_clear(pdev, WLAN_PDEV_OP_RESTART_INPROGRESS);
@@ -320,7 +322,8 @@ static void mlme_multivdev_restart(struct pdev_mlme_obj *pdev_mlme)
#define MULTIVDEV_RESTART_MAX_RETRY_CNT 100
static os_timer_func(mlme_restart_req_timeout)
{
unsigned long restart_pend_vdev_bmap[2];
qdf_bitmap(tmp_restart_pend_vdev_bmap, WLAN_UMAC_PSOC_MAX_VDEVS);
qdf_bitmap(tmp_dest_bmap, WLAN_UMAC_PSOC_MAX_VDEVS);
struct wlan_objmgr_pdev *pdev;
struct pdev_mlme_obj *pdev_mlme;
@@ -328,26 +331,34 @@ static os_timer_func(mlme_restart_req_timeout)
pdev = pdev_mlme->pdev;
qdf_mem_zero(tmp_restart_pend_vdev_bmap,
sizeof(tmp_restart_pend_vdev_bmap));
qdf_mem_zero(tmp_dest_bmap, sizeof(tmp_dest_bmap));
qdf_spin_lock_bh(&pdev_mlme->vdev_restart_lock);
if (wlan_pdev_mlme_op_get(pdev, WLAN_PDEV_OP_RESTART_INPROGRESS)) {
wlan_pdev_chan_change_pending_vdevs(pdev,
restart_pend_vdev_bmap,
tmp_restart_pend_vdev_bmap,
WLAN_MLME_SB_ID);
qdf_atomic_inc(&pdev_mlme->multivdev_restart_wait_cnt);
if (qdf_atomic_read(&pdev_mlme->multivdev_restart_wait_cnt) > MULTIVDEV_RESTART_MAX_RETRY_CNT) {
mlme_err("Multivdev Restart_pend_vdev_bmap 0x%lx 0x%lx",
pdev_mlme->restart_pend_vdev_bmap[1],
pdev_mlme->restart_pend_vdev_bmap[0]);
if (qdf_atomic_read(&pdev_mlme->multivdev_restart_wait_cnt) >
MULTIVDEV_RESTART_MAX_RETRY_CNT) {
mlme_err("Multivdev restart_pend_vdev_bmap is");
qdf_trace_hex_dump(
QDF_MODULE_ID_CMN_MLME, QDF_TRACE_LEVEL_ERROR,
pdev_mlme->restart_pend_vdev_bmap,
sizeof(pdev_mlme->restart_pend_vdev_bmap));
QDF_BUG(0);
}
/* If all the pending vdevs goes down, this would fail,
* otherwise start timer
*/
if ((restart_pend_vdev_bmap[0] &
pdev_mlme->restart_pend_vdev_bmap[0]) ||
((restart_pend_vdev_bmap[1] &
pdev_mlme->restart_pend_vdev_bmap[1])))
qdf_bitmap_and(tmp_dest_bmap, tmp_restart_pend_vdev_bmap,
pdev_mlme->restart_pend_vdev_bmap,
QDF_CHAR_BIT * sizeof(tmp_dest_bmap));
if (wlan_util_map_is_any_index_set(tmp_dest_bmap,
sizeof(tmp_dest_bmap)))
mlme_restart_req_timer_start(pdev_mlme);
else
mlme_multivdev_restart(pdev_mlme);
@@ -383,10 +394,11 @@ static QDF_STATUS mlme_vdev_restart_is_allowed(struct wlan_objmgr_pdev *pdev,
(pdev,
pdev_mlme->restart_pend_vdev_bmap,
WLAN_MLME_SB_ID);
pdev_mlme->restart_send_vdev_bmap[0] = 0;
pdev_mlme->restart_send_vdev_bmap[1] = 0;
if (!pdev_mlme->restart_pend_vdev_bmap[0] &&
!pdev_mlme->restart_pend_vdev_bmap[1])
qdf_mem_zero(pdev_mlme->restart_send_vdev_bmap,
sizeof(pdev_mlme->restart_send_vdev_bmap));
if (!wlan_util_map_is_any_index_set(
pdev_mlme->restart_pend_vdev_bmap,
sizeof(pdev_mlme->restart_pend_vdev_bmap)))
QDF_BUG(0);
wlan_pdev_mlme_op_set(pdev, WLAN_PDEV_OP_RESTART_INPROGRESS);
@@ -409,8 +421,9 @@ static QDF_STATUS mlme_vdev_restart_is_allowed(struct wlan_objmgr_pdev *pdev,
/* If all vdev id bits are enabled, start vdev restart for all
* vdevs, otherwise, start timer and return
*/
if (!pdev_mlme->restart_pend_vdev_bmap[0] &&
!pdev_mlme->restart_pend_vdev_bmap[1]) {
if (!wlan_util_map_is_any_index_set(
pdev_mlme->restart_pend_vdev_bmap,
sizeof(pdev_mlme->restart_pend_vdev_bmap))) {
mlme_restart_req_timer_stop(pdev_mlme);
mlme_multivdev_restart(pdev_mlme);
status = QDF_STATUS_E_FAILURE;