|
@@ -2459,64 +2459,6 @@ lim_check_ft_initial_im_association(struct roam_offload_synch_ind *roam_synch,
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-/**
|
|
|
|
- * lim_get_assoc_resp_from_roam_sync() - get assoc response from
|
|
|
|
- * roam sync event
|
|
|
|
- * @mac_ctx: mac context
|
|
|
|
- * @session: pe session
|
|
|
|
- * @roam_sync_ind_ptr: roam sync indication
|
|
|
|
- *
|
|
|
|
- * This function is to get parsed assoc response data
|
|
|
|
- *
|
|
|
|
- * Return: assoc response data struct
|
|
|
|
- */
|
|
|
|
-static tpSirAssocRsp
|
|
|
|
-lim_get_assoc_resp_from_roam_sync(
|
|
|
|
- struct mac_context *mac_ctx,
|
|
|
|
- struct pe_session *session,
|
|
|
|
- struct roam_offload_synch_ind *roam_sync_ind_ptr)
|
|
|
|
-{
|
|
|
|
- uint8_t *reassoc_resp;
|
|
|
|
- tpSirAssocRsp assoc_rsp;
|
|
|
|
- uint32_t frame_len;
|
|
|
|
- uint8_t *frm_body;
|
|
|
|
-
|
|
|
|
- if (roam_sync_ind_ptr->reassocRespLength <= SIR_MAC_HDR_LEN_3A) {
|
|
|
|
- pe_warn("invalid roam sync assoc rsp");
|
|
|
|
- return NULL;
|
|
|
|
- }
|
|
|
|
- reassoc_resp = (uint8_t *)roam_sync_ind_ptr +
|
|
|
|
- roam_sync_ind_ptr->reassocRespOffset +
|
|
|
|
- SIR_MAC_HDR_LEN_3A;
|
|
|
|
- frame_len = roam_sync_ind_ptr->reassocRespLength - SIR_MAC_HDR_LEN_3A;
|
|
|
|
-
|
|
|
|
- assoc_rsp = qdf_mem_malloc(sizeof(*assoc_rsp));
|
|
|
|
- if (!assoc_rsp) {
|
|
|
|
- pe_warn("err to malloc assoc rsp");
|
|
|
|
- return NULL;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- frm_body = qdf_mem_malloc(frame_len);
|
|
|
|
- if (!frm_body) {
|
|
|
|
- pe_warn("err to malloc assoc rsp body");
|
|
|
|
- qdf_mem_free(assoc_rsp);
|
|
|
|
- return NULL;
|
|
|
|
- }
|
|
|
|
- qdf_mem_copy(frm_body, reassoc_resp, frame_len);
|
|
|
|
- /* parse Re/Association Response frame. */
|
|
|
|
- if (sir_convert_assoc_resp_frame2_struct(
|
|
|
|
- mac_ctx, session, frm_body,
|
|
|
|
- frame_len, assoc_rsp) == QDF_STATUS_E_FAILURE) {
|
|
|
|
- pe_err("Parse error Assoc resp length: %d", frame_len);
|
|
|
|
- qdf_mem_free(frm_body);
|
|
|
|
- qdf_mem_free(assoc_rsp);
|
|
|
|
- return NULL;
|
|
|
|
- }
|
|
|
|
- qdf_mem_free(frm_body);
|
|
|
|
-
|
|
|
|
- return assoc_rsp;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
QDF_STATUS
|
|
QDF_STATUS
|
|
pe_roam_synch_callback(struct mac_context *mac_ctx,
|
|
pe_roam_synch_callback(struct mac_context *mac_ctx,
|
|
struct roam_offload_synch_ind *roam_sync_ind_ptr,
|
|
struct roam_offload_synch_ind *roam_sync_ind_ptr,
|
|
@@ -2533,7 +2475,6 @@ pe_roam_synch_callback(struct mac_context *mac_ctx,
|
|
QDF_STATUS status = QDF_STATUS_E_FAILURE;
|
|
QDF_STATUS status = QDF_STATUS_E_FAILURE;
|
|
struct bss_description *bss_desc = NULL;
|
|
struct bss_description *bss_desc = NULL;
|
|
uint16_t ric_tspec_len;
|
|
uint16_t ric_tspec_len;
|
|
- tpSirAssocRsp assoc_rsp;
|
|
|
|
|
|
|
|
if (!roam_sync_ind_ptr) {
|
|
if (!roam_sync_ind_ptr) {
|
|
pe_err("LFR3:roam_sync_ind_ptr is NULL");
|
|
pe_err("LFR3:roam_sync_ind_ptr is NULL");
|
|
@@ -2632,11 +2573,8 @@ pe_roam_synch_callback(struct mac_context *mac_ctx,
|
|
ft_session_ptr->csaOffloadEnable = session_ptr->csaOffloadEnable;
|
|
ft_session_ptr->csaOffloadEnable = session_ptr->csaOffloadEnable;
|
|
|
|
|
|
/* Next routine will update nss and vdev_nss with AP's capabilities */
|
|
/* Next routine will update nss and vdev_nss with AP's capabilities */
|
|
- assoc_rsp = lim_get_assoc_resp_from_roam_sync(
|
|
|
|
- mac_ctx, ft_session_ptr, roam_sync_ind_ptr);
|
|
|
|
lim_fill_ft_session(mac_ctx, bss_desc, ft_session_ptr,
|
|
lim_fill_ft_session(mac_ctx, bss_desc, ft_session_ptr,
|
|
- session_ptr, roam_sync_ind_ptr->phy_mode,
|
|
|
|
- assoc_rsp);
|
|
|
|
|
|
+ session_ptr, roam_sync_ind_ptr->phy_mode);
|
|
roam_sync_ind_ptr->ssid.length =
|
|
roam_sync_ind_ptr->ssid.length =
|
|
qdf_min((qdf_size_t)ft_session_ptr->ssId.length,
|
|
qdf_min((qdf_size_t)ft_session_ptr->ssId.length,
|
|
sizeof(roam_sync_ind_ptr->ssid.ssid));
|
|
sizeof(roam_sync_ind_ptr->ssid.ssid));
|
|
@@ -2645,8 +2583,7 @@ pe_roam_synch_callback(struct mac_context *mac_ctx,
|
|
pe_set_rmf_caps(mac_ctx, ft_session_ptr, roam_sync_ind_ptr);
|
|
pe_set_rmf_caps(mac_ctx, ft_session_ptr, roam_sync_ind_ptr);
|
|
/* Next routine may update nss based on dot11Mode */
|
|
/* Next routine may update nss based on dot11Mode */
|
|
|
|
|
|
- lim_ft_prepare_add_bss_req(mac_ctx, ft_session_ptr, bss_desc,
|
|
|
|
- assoc_rsp);
|
|
|
|
|
|
+ lim_ft_prepare_add_bss_req(mac_ctx, ft_session_ptr, bss_desc);
|
|
qdf_mem_free(bss_desc);
|
|
qdf_mem_free(bss_desc);
|
|
|
|
|
|
if (session_ptr->is11Rconnection)
|
|
if (session_ptr->is11Rconnection)
|
|
@@ -2661,7 +2598,6 @@ pe_roam_synch_callback(struct mac_context *mac_ctx,
|
|
if (!curr_sta_ds) {
|
|
if (!curr_sta_ds) {
|
|
pe_err("LFR3:failed to lookup hash entry");
|
|
pe_err("LFR3:failed to lookup hash entry");
|
|
ft_session_ptr->bRoamSynchInProgress = false;
|
|
ft_session_ptr->bRoamSynchInProgress = false;
|
|
- qdf_mem_free(assoc_rsp);
|
|
|
|
return status;
|
|
return status;
|
|
}
|
|
}
|
|
session_ptr->limSmeState = eLIM_SME_IDLE_STATE;
|
|
session_ptr->limSmeState = eLIM_SME_IDLE_STATE;
|
|
@@ -2679,7 +2615,6 @@ pe_roam_synch_callback(struct mac_context *mac_ctx,
|
|
pe_err("LFR3:failed to add hash entry for "QDF_MAC_ADDR_FMT,
|
|
pe_err("LFR3:failed to add hash entry for "QDF_MAC_ADDR_FMT,
|
|
QDF_MAC_ADDR_REF(add_bss_params->staContext.staMac));
|
|
QDF_MAC_ADDR_REF(add_bss_params->staContext.staMac));
|
|
ft_session_ptr->bRoamSynchInProgress = false;
|
|
ft_session_ptr->bRoamSynchInProgress = false;
|
|
- qdf_mem_free(assoc_rsp);
|
|
|
|
return status;
|
|
return status;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -2718,7 +2653,6 @@ pe_roam_synch_callback(struct mac_context *mac_ctx,
|
|
qdf_mem_malloc(ric_tspec_len);
|
|
qdf_mem_malloc(ric_tspec_len);
|
|
if (!roam_sync_ind_ptr->ric_tspec_data) {
|
|
if (!roam_sync_ind_ptr->ric_tspec_data) {
|
|
ft_session_ptr->bRoamSynchInProgress = false;
|
|
ft_session_ptr->bRoamSynchInProgress = false;
|
|
- qdf_mem_free(assoc_rsp);
|
|
|
|
return QDF_STATUS_E_NOMEM;
|
|
return QDF_STATUS_E_NOMEM;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -2751,7 +2685,6 @@ pe_roam_synch_callback(struct mac_context *mac_ctx,
|
|
ft_session_ptr->limSmeState = eLIM_SME_LINK_EST_STATE;
|
|
ft_session_ptr->limSmeState = eLIM_SME_LINK_EST_STATE;
|
|
ft_session_ptr->limPrevSmeState = ft_session_ptr->limSmeState;
|
|
ft_session_ptr->limPrevSmeState = ft_session_ptr->limSmeState;
|
|
ft_session_ptr->bRoamSynchInProgress = false;
|
|
ft_session_ptr->bRoamSynchInProgress = false;
|
|
- qdf_mem_free(assoc_rsp);
|
|
|
|
|
|
|
|
return QDF_STATUS_SUCCESS;
|
|
return QDF_STATUS_SUCCESS;
|
|
}
|
|
}
|