Эх сурвалжийг харах

qcacld-3.0: Make the set HW mode & NSS update independent of each other

Typically set hw mode & Nss update happens at the same time. Since the
order of these 2 actions may not be same always, make them independent
of each other.

Change-Id: I652ad08e16680991535e0f064c7b5996f4f58792
CRs-Fixed: 2145006
Tushnim Bhattacharyya 7 жил өмнө
parent
commit
eab33ddd6f

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

@@ -8516,7 +8516,7 @@ static int iw_get_policy_manager_ut_ops(struct hdd_context *hdd_ctx,
 					HW_MODE_DBS_NONE,
 					HW_MODE_AGILE_DFS_NONE,
 					HW_MODE_SBS_NONE,
-					SIR_UPDATE_REASON_UT);
+					SIR_UPDATE_REASON_UT, PM_NOP);
 		} else if (apps_args[0] == 1) {
 			hdd_err("set hw mode for dual mac");
 			policy_mgr_pdev_set_hw_mode(hdd_ctx->hdd_psoc,
@@ -8527,7 +8527,7 @@ static int iw_get_policy_manager_ut_ops(struct hdd_context *hdd_ctx,
 					HW_MODE_DBS,
 					HW_MODE_AGILE_DFS_NONE,
 					HW_MODE_SBS_NONE,
-					SIR_UPDATE_REASON_UT);
+					SIR_UPDATE_REASON_UT, PM_NOP);
 		}
 	}
 	break;

+ 2 - 19
core/mac/inc/sir_api.h

@@ -3415,16 +3415,6 @@ struct sir_hw_mode_params {
 	uint8_t sbs_cap;
 };
 
-/**
- * struct sir_vdev_mac_map - vdev id-mac id map
- * @vdev_id: VDEV id
- * @mac_id: MAC id
- */
-struct sir_vdev_mac_map {
-	uint32_t vdev_id;
-	uint32_t mac_id;
-};
-
 /**
  * struct sir_set_hw_mode_resp - HW mode response
  * @status: Status
@@ -3436,7 +3426,7 @@ struct sir_set_hw_mode_resp {
 	uint32_t status;
 	uint32_t cfgd_hw_mode_index;
 	uint32_t num_vdev_mac_entries;
-	struct sir_vdev_mac_map vdev_mac_map[MAX_VDEV_SUPPORTED];
+	struct policy_mgr_vdev_mac_map vdev_mac_map[MAX_VDEV_SUPPORTED];
 };
 
 /**
@@ -6154,14 +6144,10 @@ struct send_extcap_ie {
 	uint8_t session_id;
 };
 
-typedef void (*hw_mode_cb)(uint32_t status, uint32_t cfgd_hw_mode_index,
-		uint32_t num_vdev_mac_entries,
-		struct sir_vdev_mac_map *vdev_mac_map,
-		struct wlan_objmgr_psoc *context);
 typedef void (*hw_mode_transition_cb)(uint32_t old_hw_mode_index,
 		uint32_t new_hw_mode_index,
 		uint32_t num_vdev_mac_entries,
-		struct sir_vdev_mac_map *vdev_mac_map);
+		struct policy_mgr_vdev_mac_map *vdev_mac_map);
 typedef void (*dual_mac_cb)(uint32_t status, uint32_t scan_config,
 		uint32_t fw_mode_config);
 typedef void (*antenna_mode_cb)(uint32_t status);
@@ -6191,9 +6177,6 @@ struct sir_beacon_tx_complete_rsp {
 	uint8_t tx_status;
 };
 
-typedef void (*nss_update_cb)(void *context, uint8_t tx_status, uint8_t vdev_id,
-		uint8_t next_action, enum sir_conn_update_reason reason);
-
 /**
  * OCB structures
  */

+ 6 - 2
core/sme/src/common/sme_api.c

@@ -149,7 +149,7 @@ static QDF_STATUS sme_process_set_hw_mode_resp(tpAniSirGlobal mac, uint8_t *msg)
 	tListElem *entry;
 	tSmeCmd *command = NULL;
 	bool found;
-	hw_mode_cb callback = NULL;
+	policy_mgr_pdev_set_hw_mode_cback callback = NULL;
 	struct sir_set_hw_mode_resp *param;
 	enum sir_conn_update_reason reason;
 	struct csr_roam_session *session;
@@ -207,6 +207,9 @@ static QDF_STATUS sme_process_set_hw_mode_resp(tpAniSirGlobal mac, uint8_t *msg)
 			param->cfgd_hw_mode_index,
 			param->num_vdev_mac_entries,
 			param->vdev_mac_map,
+			command->u.set_hw_mode_cmd.next_action,
+			command->u.set_hw_mode_cmd.reason,
+			command->u.set_hw_mode_cmd.session_id,
 			command->u.set_hw_mode_cmd.context);
 	session = CSR_GET_SESSION(mac, session_id);
 	if (reason == SIR_UPDATE_REASON_HIDDEN_STA) {
@@ -2470,7 +2473,7 @@ static QDF_STATUS sme_process_nss_update_resp(tpAniSirGlobal mac, uint8_t *msg)
 	tListElem *entry = NULL;
 	tSmeCmd *command = NULL;
 	bool found;
-	nss_update_cb callback = NULL;
+	policy_mgr_nss_update_cback callback = NULL;
 	struct sir_beacon_tx_complete_rsp *param;
 
 	param = (struct sir_beacon_tx_complete_rsp *)msg;
@@ -13426,6 +13429,7 @@ QDF_STATUS sme_pdev_set_hw_mode(struct policy_mgr_hw_mode msg)
 	cmd->u.set_hw_mode_cmd.set_hw_mode_cb = msg.set_hw_mode_cb;
 	cmd->u.set_hw_mode_cmd.reason = msg.reason;
 	cmd->u.set_hw_mode_cmd.session_id = msg.session_id;
+	cmd->u.set_hw_mode_cmd.next_action = msg.next_action;
 	cmd->u.set_hw_mode_cmd.context = msg.context;
 
 	sme_debug("Queuing set hw mode to CSR, session: %d reason: %d",