فهرست منبع

qcacmn: Fix to avoid using mutex lock after holding spin lock

Avoid using mutex lock after holding spin lock, use spin lock
for the required calls only and not for set and clear MLO
VDEV which uses mutex if WLAN_MLO_USE_SPINLOCK is not
defined.

Change-Id: I9b989aa6a965107bff642e9d1e1009e57e7dddc2
CRs-Fixed: 3204328
Abhishek Singh 3 سال پیش
والد
کامیت
5076250707
1فایلهای تغییر یافته به همراه4 افزوده شده و 2 حذف شده
  1. 4 2
      umac/mlme/connection_mgr/core/src/wlan_cm_connect.c

+ 4 - 2
umac/mlme/connection_mgr/core/src/wlan_cm_connect.c

@@ -470,14 +470,16 @@ static void cm_update_vdev_mlme_macaddr(struct cnx_mgr *cm_ctx,
 	if (wlan_vdev_mlme_get_opmode(cm_ctx->vdev) != QDF_STA_MODE)
 		return;
 
-	wlan_vdev_obj_lock(cm_ctx->vdev);
 	if (req->cur_candidate->entry->ie_list.multi_link) {
+		wlan_vdev_obj_lock(cm_ctx->vdev);
 		/* Use link address for ML connection */
 		wlan_vdev_mlme_set_macaddr(cm_ctx->vdev,
 					   cm_ctx->vdev->vdev_mlme.linkaddr);
+		wlan_vdev_obj_unlock(cm_ctx->vdev);
 		wlan_vdev_mlme_set_mlo_vdev(cm_ctx->vdev);
 		mlme_debug("set link address for ML connection");
 	} else {
+		wlan_vdev_obj_lock(cm_ctx->vdev);
 		/* Use net_dev address for non-ML connection */
 		mac = (struct qdf_mac_addr *)cm_ctx->vdev->vdev_mlme.mldaddr;
 		if (!qdf_is_macaddr_zero(mac)) {
@@ -485,11 +487,11 @@ static void cm_update_vdev_mlme_macaddr(struct cnx_mgr *cm_ctx,
 			mlme_debug(QDF_MAC_ADDR_FMT " for non-ML connection",
 				   QDF_MAC_ADDR_REF(mac->bytes));
 		}
+		wlan_vdev_obj_unlock(cm_ctx->vdev);
 
 		wlan_vdev_mlme_clear_mlo_vdev(cm_ctx->vdev);
 		mlme_debug("clear MLO cap for non-ML connection");
 	}
-	wlan_vdev_obj_unlock(cm_ctx->vdev);
 }
 #else
 static inline