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
This commit is contained in:
Tushnim Bhattacharyya 2017-11-15 15:20:02 -08:00 • committed by snandini
commit eab33ddd6f
3 changed files with 10 additions and 23 deletions

View file

@ -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;

View file

@ -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
*/

View file

@ -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",