Prechádzať zdrojové kódy

qcacld-3.0: Use link info to get VDEV connected status

Modify hdd_cm_is_vdev_connected() API to take link_info
as functional argument to retrieve the corresponding VDEV's
connected status.
Existing callers moved to deflink.

Change-Id: I438269e683c6931f8509c62a77939c0f1b15fadd
CRs-Fixed: 3464281
Vinod Kumar Pirla 2 rokov pred
rodič
commit
28ee4a6ed5

+ 2 - 2
core/hdd/src/wlan_hdd_assoc.c

@@ -592,7 +592,7 @@ bool hdd_is_any_sta_connected(struct hdd_context *hdd_ctx)
 					   dbgid) {
 		if (QDF_STA_MODE == adapter->device_mode ||
 		    QDF_P2P_CLIENT_MODE == adapter->device_mode) {
-			if (hdd_cm_is_vdev_connected(adapter)) {
+			if (hdd_cm_is_vdev_connected(adapter->deflink)) {
 				hdd_adapter_dev_put_debug(adapter, dbgid);
 				if (next_adapter)
 					hdd_adapter_dev_put_debug(next_adapter,
@@ -621,7 +621,7 @@ QDF_STATUS hdd_get_first_connected_sta_vdev_id(struct hdd_context *hdd_ctx,
 					   dbgid) {
 		if (adapter->device_mode == QDF_STA_MODE ||
 		    adapter->device_mode == QDF_P2P_CLIENT_MODE) {
-			if (hdd_cm_is_vdev_connected(adapter)) {
+			if (hdd_cm_is_vdev_connected(adapter->deflink)) {
 				*vdev_id = adapter->deflink->vdev_id;
 				hdd_adapter_dev_put_debug(adapter, dbgid);
 				if (next_adapter)

+ 1 - 1
core/hdd/src/wlan_hdd_cfg.c

@@ -2234,7 +2234,7 @@ int hdd_update_channel_width(struct hdd_adapter *adapter,
 	}
 
 	if (ucfg_mlme_is_chwidth_with_notify_supported(hdd_ctx->psoc) &&
-	    hdd_cm_is_vdev_connected(adapter)) {
+	    hdd_cm_is_vdev_connected(adapter->deflink)) {
 		ch_width = hdd_convert_chwidth_to_phy_chwidth(chwidth);
 		hdd_debug("vdev %d : process update ch width request to %d",
 			  adapter->deflink->vdev_id, ch_width);

+ 2 - 2
core/hdd/src/wlan_hdd_cm_api.h

@@ -336,11 +336,11 @@ bool hdd_cm_is_vdev_associated(struct wlan_hdd_link_info *link_info);
 
 /**
  * hdd_cm_is_vdev_connected() - Checks if vdev is connected or not
- * @adapter: pointer to the adapter structure
+ * @link_info: pointer to the link_info structure
  *
  * Returns: True if vdev is connected else false
  */
-bool hdd_cm_is_vdev_connected(struct hdd_adapter *adapter);
+bool hdd_cm_is_vdev_connected(struct wlan_hdd_link_info *link_info);
 
 /**
  * hdd_cm_is_connecting() - Function to check connection in progress

+ 8 - 10
core/hdd/src/wlan_hdd_cm_connect.c

@@ -85,27 +85,25 @@ bool hdd_cm_is_vdev_associated(struct wlan_hdd_link_info *link_info)
 	return is_vdev_active;
 }
 
-bool hdd_cm_is_vdev_connected(struct hdd_adapter *adapter)
+bool hdd_cm_is_vdev_connected(struct wlan_hdd_link_info *link_info)
 {
 	struct wlan_objmgr_vdev *vdev;
 	bool is_vdev_connected;
-	enum QDF_OPMODE opmode;
 	struct hdd_station_ctx *sta_ctx;
+	enum QDF_OPMODE opmode = link_info->adapter->device_mode;
 
-	sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(adapter->deflink);
-	if (adapter->device_mode == QDF_NDI_MODE)
+	sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(link_info);
+	if (opmode == QDF_NDI_MODE)
 		return (sta_ctx->conn_info.conn_state ==
 			eConnectionState_NdiConnected);
 
-	vdev = hdd_objmgr_get_vdev_by_user(adapter->deflink, WLAN_OSIF_CM_ID);
-	if (!vdev)
+	if (opmode != QDF_STA_MODE && opmode != QDF_P2P_CLIENT_MODE)
 		return false;
 
-	opmode = wlan_vdev_mlme_get_opmode(vdev);
-	if (opmode != QDF_STA_MODE && opmode != QDF_P2P_CLIENT_MODE) {
-		hdd_objmgr_put_vdev_by_user(vdev, WLAN_OSIF_CM_ID);
+	vdev = hdd_objmgr_get_vdev_by_user(link_info, WLAN_OSIF_CM_ID);
+	if (!vdev)
 		return false;
-	}
+
 	is_vdev_connected = ucfg_cm_is_vdev_connected(vdev);
 
 	hdd_objmgr_put_vdev_by_user(vdev, WLAN_OSIF_CM_ID);

+ 1 - 2
core/hdd/src/wlan_hdd_he.c

@@ -663,8 +663,7 @@ static bool hdd_check_mode_support_for_sr(struct hdd_adapter *adapter,
 					  uint8_t sr_ctrl)
 {
 	if ((adapter->device_mode == QDF_STA_MODE) &&
-	    (!hdd_cm_is_vdev_connected(adapter) ||
-	    !sr_ctrl ||
+	    (!hdd_cm_is_vdev_connected(adapter->deflink) || !sr_ctrl ||
 	    ((sr_ctrl & NON_SRG_PD_SR_DISALLOWED) &&
 	    !(sr_ctrl & SRG_INFO_PRESENT)))) {
 		hdd_err("mode %d doesn't supports SR", adapter->device_mode);

+ 1 - 1
core/hdd/src/wlan_hdd_station_info.c

@@ -972,7 +972,7 @@ static int hdd_get_station_info(struct hdd_context *hdd_ctx,
 
 	hdd_sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(adapter->deflink);
 
-	if (hdd_cm_is_vdev_connected(adapter)) {
+	if (hdd_cm_is_vdev_connected(adapter->deflink)) {
 		hdd_err("Station is connected, command is not supported");
 		return -EINVAL;
 	}

+ 1 - 1
core/hdd/src/wlan_hdd_stats.c

@@ -3963,7 +3963,7 @@ __wlan_hdd_cfg80211_connected_chan_stats_request(struct wiphy *wiphy,
 	enum QDF_OPMODE mode;
 	QDF_STATUS status;
 
-	is_vdev_connected = hdd_cm_is_vdev_connected(adapter);
+	is_vdev_connected = hdd_cm_is_vdev_connected(adapter->deflink);
 	mode = adapter->device_mode;
 
 	if (mode != QDF_STA_MODE || !is_vdev_connected) {