Browse Source

Merge "qca-wifi: Define restart bitmap using qdf_bitmap"

Linux Build Service Account 5 years ago
parent
commit
7a28bb183e
1 changed files with 36 additions and 23 deletions
  1. 36 23
      umac/mlme/vdev_mgr/core/src/vdev_mlme_sm_actions.c

+ 36 - 23
umac/mlme/vdev_mgr/core/src/vdev_mlme_sm_actions.c

@@ -214,10 +214,12 @@ static QDF_STATUS mlme_stop_pending_restart(struct wlan_objmgr_pdev *pdev,
 					wlan_vdev_get_id(vdev), 0);
 					wlan_vdev_get_id(vdev), 0);
 			status = QDF_STATUS_SUCCESS;
 			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
 			wlan_pdev_mlme_op_clear
 					(pdev,
 					(pdev,
 					 WLAN_PDEV_OP_RESTART_INPROGRESS);
 					 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
 	 * that vdev bit, if pending vdev is still in SUSPEND (CSA_RESTART or
 	 * SUSPEND_RESTART), then restart the timer
 	 * 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_MBSSID_RESTART);
 		wlan_pdev_mlme_op_clear(pdev, WLAN_PDEV_OP_RESTART_INPROGRESS);
 		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
 #define MULTIVDEV_RESTART_MAX_RETRY_CNT 100
 static os_timer_func(mlme_restart_req_timeout)
 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 wlan_objmgr_pdev *pdev;
 	struct pdev_mlme_obj *pdev_mlme;
 	struct pdev_mlme_obj *pdev_mlme;
 
 
@@ -328,26 +331,34 @@ static os_timer_func(mlme_restart_req_timeout)
 
 
 	pdev = pdev_mlme->pdev;
 	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);
 	qdf_spin_lock_bh(&pdev_mlme->vdev_restart_lock);
 	if (wlan_pdev_mlme_op_get(pdev, WLAN_PDEV_OP_RESTART_INPROGRESS)) {
 	if (wlan_pdev_mlme_op_get(pdev, WLAN_PDEV_OP_RESTART_INPROGRESS)) {
 		wlan_pdev_chan_change_pending_vdevs(pdev,
 		wlan_pdev_chan_change_pending_vdevs(pdev,
-						    restart_pend_vdev_bmap,
+						    tmp_restart_pend_vdev_bmap,
 						    WLAN_MLME_SB_ID);
 						    WLAN_MLME_SB_ID);
 		qdf_atomic_inc(&pdev_mlme->multivdev_restart_wait_cnt);
 		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);
 			QDF_BUG(0);
 		}
 		}
 
 
 		/* If all the pending vdevs goes down, this would fail,
 		/* If all the pending vdevs goes down, this would fail,
 		 * otherwise start timer
 		 * 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);
 			mlme_restart_req_timer_start(pdev_mlme);
 		else
 		else
 			mlme_multivdev_restart(pdev_mlme);
 			mlme_multivdev_restart(pdev_mlme);
@@ -383,10 +394,11 @@ static QDF_STATUS mlme_vdev_restart_is_allowed(struct wlan_objmgr_pdev *pdev,
 				(pdev,
 				(pdev,
 				 pdev_mlme->restart_pend_vdev_bmap,
 				 pdev_mlme->restart_pend_vdev_bmap,
 				 WLAN_MLME_SB_ID);
 				 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);
 			QDF_BUG(0);
 
 
 		wlan_pdev_mlme_op_set(pdev, WLAN_PDEV_OP_RESTART_INPROGRESS);
 		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
 		/* If all vdev id bits are enabled, start vdev restart for all
 		 * vdevs, otherwise, start timer and return
 		 * 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_restart_req_timer_stop(pdev_mlme);
 			mlme_multivdev_restart(pdev_mlme);
 			mlme_multivdev_restart(pdev_mlme);
 			status = QDF_STATUS_E_FAILURE;
 			status = QDF_STATUS_E_FAILURE;