ソースを参照

Merge "qcacmn: Add original vdev info for NSS update API"

Linux Build Service Account 6 年 前
コミット
ea8c5466eb

+ 6 - 3
umac/cmn_services/policy_mgr/inc/wlan_policy_mgr_api.h

@@ -1021,6 +1021,7 @@ typedef void (*policy_mgr_pdev_set_hw_mode_cback)(uint32_t status,
  * @next_action: next action to happen at policy mgr after
  *		beacon update
  * @reason: Reason for nss update
+ * @original_vdev_id: original request hwmode change vdev id
  *
  * This function is the callback registered with SME at nss
  * update request time
@@ -1031,7 +1032,8 @@ typedef void (*policy_mgr_nss_update_cback)(struct wlan_objmgr_psoc *psoc,
 		uint8_t tx_status,
 		uint8_t vdev_id,
 		uint8_t next_action,
-		enum policy_mgr_conn_update_reason reason);
+		enum policy_mgr_conn_update_reason reason,
+		uint32_t original_vdev_id);
 
 /**
  * struct policy_mgr_sme_cbacks - SME Callbacks to be invoked
@@ -1055,9 +1057,10 @@ struct policy_mgr_sme_cbacks {
 	QDF_STATUS (*sme_pdev_set_hw_mode)(struct policy_mgr_hw_mode msg);
 	QDF_STATUS (*sme_pdev_set_pcl)(struct policy_mgr_pcl_list *msg);
 	QDF_STATUS (*sme_nss_update_request)(uint32_t vdev_id,
-		uint8_t  new_nss, policy_mgr_nss_update_cback cback,
+		uint8_t new_nss, policy_mgr_nss_update_cback cback,
 		uint8_t next_action, struct wlan_objmgr_psoc *psoc,
-		enum policy_mgr_conn_update_reason reason);
+		enum policy_mgr_conn_update_reason reason,
+		uint32_t original_vdev_id);
 	QDF_STATUS (*sme_change_mcc_beacon_interval)(uint8_t session_id);
 	QDF_STATUS (*sme_get_ap_channel_from_scan)(
 		void *roam_profile,

+ 8 - 4
umac/cmn_services/policy_mgr/src/wlan_policy_mgr_action.c

@@ -1066,7 +1066,8 @@ QDF_STATUS policy_mgr_next_actions(
 		 * intially. If yes, update the beacon template & notify FW.
 		 */
 		status = policy_mgr_nss_update(psoc, POLICY_MGR_RX_NSS_1,
-					PM_NOP, POLICY_MGR_ANY, reason);
+					PM_NOP, POLICY_MGR_ANY, reason,
+					session_id);
 		break;
 	case PM_UPGRADE:
 		/*
@@ -1074,7 +1075,8 @@ QDF_STATUS policy_mgr_next_actions(
 		 * intially. If yes, update the beacon template & notify FW.
 		 */
 		status = policy_mgr_nss_update(psoc, POLICY_MGR_RX_NSS_2,
-					PM_NOP, POLICY_MGR_ANY, reason);
+					PM_NOP, POLICY_MGR_ANY, reason,
+					session_id);
 		break;
 	case PM_DBS1_DOWNGRADE:
 		status = policy_mgr_complete_action(psoc, POLICY_MGR_RX_NSS_1,
@@ -1133,12 +1135,14 @@ QDF_STATUS policy_mgr_next_actions(
 	case PM_UPGRADE_5G:
 		status = policy_mgr_nss_update(
 					psoc, POLICY_MGR_RX_NSS_2,
-					PM_NOP, POLICY_MGR_BAND_5, reason);
+					PM_NOP, POLICY_MGR_BAND_5, reason,
+					session_id);
 		break;
 	case PM_UPGRADE_2G:
 		status = policy_mgr_nss_update(
 					psoc, POLICY_MGR_RX_NSS_2,
-					PM_NOP, POLICY_MGR_BAND_24, reason);
+					PM_NOP, POLICY_MGR_BAND_24, reason,
+					session_id);
 		break;
 	default:
 		policy_mgr_err("unexpected action value %d", action);

+ 15 - 7
umac/cmn_services/policy_mgr/src/wlan_policy_mgr_core.c

@@ -2517,6 +2517,7 @@ bool policy_mgr_is_5g_channel_allowed(struct wlan_objmgr_psoc *psoc,
  * @next_action: next action to happen at policy mgr after
  *		beacon update
  * @reason: Reason for nss update
+ * @original_vdev_id: original request hwmode change vdev id
  *
  * This function is the callback registered with SME at nss
  * update request time
@@ -2527,7 +2528,8 @@ static void policy_mgr_nss_update_cb(struct wlan_objmgr_psoc *psoc,
 		uint8_t tx_status,
 		uint8_t vdev_id,
 		uint8_t next_action,
-		enum policy_mgr_conn_update_reason reason)
+		enum policy_mgr_conn_update_reason reason,
+		uint32_t original_vdev_id)
 {
 	uint32_t conn_index = 0;
 	QDF_STATUS ret;
@@ -2545,9 +2547,11 @@ static void policy_mgr_nss_update_cb(struct wlan_objmgr_psoc *psoc,
 		return;
 	}
 
-	policy_mgr_debug("nss update successful for vdev:%d", vdev_id);
+	policy_mgr_debug("nss update successful for vdev:%d ori %d reason %d",
+			 vdev_id, original_vdev_id, reason);
 	if (PM_NOP != next_action)
-		policy_mgr_next_actions(psoc, vdev_id, next_action, reason);
+		policy_mgr_next_actions(psoc, original_vdev_id, next_action,
+					reason);
 	else {
 		policy_mgr_debug("No action needed right now");
 		ret = policy_mgr_set_opportunistic_update(psoc);
@@ -2561,7 +2565,8 @@ static void policy_mgr_nss_update_cb(struct wlan_objmgr_psoc *psoc,
 QDF_STATUS policy_mgr_nss_update(struct wlan_objmgr_psoc *psoc,
 		uint8_t  new_nss, uint8_t next_action,
 		enum policy_mgr_band band,
-		enum policy_mgr_conn_update_reason reason)
+		enum policy_mgr_conn_update_reason reason,
+		uint32_t original_vdev_id)
 {
 	QDF_STATUS status = QDF_STATUS_E_FAILURE;
 	uint32_t index, count;
@@ -2604,7 +2609,8 @@ QDF_STATUS policy_mgr_nss_update(struct wlan_objmgr_psoc *psoc,
 			status = pm_ctx->sme_cbacks.sme_nss_update_request(
 					vdev_id, new_nss,
 					policy_mgr_nss_update_cb,
-					next_action, psoc, reason);
+					next_action, psoc, reason,
+					original_vdev_id);
 			if (!QDF_IS_STATUS_SUCCESS(status)) {
 				policy_mgr_err("sme_nss_update_request() failed for vdev %d",
 				vdev_id);
@@ -2637,7 +2643,8 @@ QDF_STATUS policy_mgr_nss_update(struct wlan_objmgr_psoc *psoc,
 			status = pm_ctx->sme_cbacks.sme_nss_update_request(
 					vdev_id, new_nss,
 					policy_mgr_nss_update_cb,
-					next_action, psoc, reason);
+					next_action, psoc, reason,
+					original_vdev_id);
 			if (!QDF_IS_STATUS_SUCCESS(status)) {
 				policy_mgr_err("sme_nss_update_request() failed for vdev %d",
 				vdev_id);
@@ -2690,7 +2697,8 @@ QDF_STATUS policy_mgr_complete_action(struct wlan_objmgr_psoc *psoc,
 		downgrade_band = POLICY_MGR_ANY;
 
 	status = policy_mgr_nss_update(psoc, new_nss, next_action,
-				       downgrade_band, reason);
+				       downgrade_band, reason,
+				       session_id);
 	if (!QDF_IS_STATUS_SUCCESS(status))
 		status = policy_mgr_next_actions(psoc, session_id,
 						next_action, reason);

+ 3 - 1
umac/cmn_services/policy_mgr/src/wlan_policy_mgr_i.h

@@ -534,6 +534,7 @@ void policy_mgr_reg_chan_change_callback(struct wlan_objmgr_psoc *psoc,
  * @next_action: Next action after nss update
  * @band: update AP vdev on the Band.
  * @reason: action reason
+ * @original_vdev_id: original request hwmode change vdev id
  *
  * The function will update AP vdevs on specific band.
  *  eg. band = POLICY_MGR_ANY will request to update all band (2g and 5g)
@@ -543,7 +544,8 @@ void policy_mgr_reg_chan_change_callback(struct wlan_objmgr_psoc *psoc,
 QDF_STATUS policy_mgr_nss_update(struct wlan_objmgr_psoc *psoc,
 		uint8_t  new_nss, uint8_t next_action,
 		enum policy_mgr_band band,
-		enum policy_mgr_conn_update_reason reason);
+		enum policy_mgr_conn_update_reason reason,
+		uint32_t original_vdev_id);
 
 /**
  * policy_mgr_is_concurrency_allowed() - Check for allowed