diff --git a/core/mac/src/pe/include/lim_session.h b/core/mac/src/pe/include/lim_session.h index bc376ac045d6..014fff54a405 100644 --- a/core/mac/src/pe/include/lim_session.h +++ b/core/mac/src/pe/include/lim_session.h @@ -158,7 +158,6 @@ struct pe_session { tLimSmeStates limPrevSmeState; /* Previous SME State */ tLimSystemRole limSystemRole; enum bss_type bssType; - uint8_t operMode; /* AP - 0; STA - 1 ; */ tSirNwType nwType; struct start_bss_req *pLimStartBssReq; /* handle to start bss req */ struct join_req *lim_join_req; /* handle to sme join req */ @@ -616,6 +615,7 @@ static inline void pe_free_dph_node_array_buffer(void) * @numSta: number of stations * @bssType: bss type of new session to do conditional memory allocation. * @vdev_id: vdev_id + * @opmode: operating mode * * This function returns the session context and the session ID if the session * corresponding to the passed BSSID is found in the PE session table. @@ -623,10 +623,9 @@ static inline void pe_free_dph_node_array_buffer(void) * Return: ptr to the session context or NULL if session can not be created. */ struct pe_session *pe_create_session(struct mac_context *mac, - uint8_t *bssid, - uint8_t *sessionId, - uint16_t numSta, enum bss_type bssType, - uint8_t vdev_id); + uint8_t *bssid, uint8_t *sessionId, + uint16_t numSta, enum bss_type bssType, + uint8_t vdev_id, enum QDF_OPMODE opmode); /** * pe_find_session_by_bssid() - looks up the PE session given the BSSID. diff --git a/core/mac/src/pe/lim/lim_api.c b/core/mac/src/pe/lim/lim_api.c index 9f7d39c47e2b..d1c16f1c1170 100644 --- a/core/mac/src/pe/lim/lim_api.c +++ b/core/mac/src/pe/lim/lim_api.c @@ -2346,8 +2346,9 @@ pe_roam_synch_callback(struct mac_context *mac_ctx, status = QDF_STATUS_E_FAILURE; ft_session_ptr = pe_create_session(mac_ctx, bss_desc->bssId, &session_id, mac_ctx->lim.maxStation, - eSIR_INFRASTRUCTURE_MODE, - session_ptr->smeSessionId); + session_ptr->bssType, + session_ptr->vdev_id, + session_ptr->opmode); if (!ft_session_ptr) { pe_err("LFR3:Cannot create PE Session"); lim_print_mac_addr(mac_ctx, bss_desc->bssId, LOGE); @@ -2698,7 +2699,8 @@ void lim_mon_init_session(struct mac_context *mac_ptr, &session_id, mac_ptr->lim.maxStation, eSIR_MONITOR_MODE, - msg->vdev_id); + msg->vdev_id, + QDF_MONITOR_MODE); if (!psession_entry) { pe_err("Monitor mode: Session Can not be created"); lim_print_mac_addr(mac_ptr, msg->bss_id.bytes, LOGE); diff --git a/core/mac/src/pe/lim/lim_ft_preauth.c b/core/mac/src/pe/lim/lim_ft_preauth.c index 84615a81c89e..8a2c00586bdf 100644 --- a/core/mac/src/pe/lim/lim_ft_preauth.c +++ b/core/mac/src/pe/lim/lim_ft_preauth.c @@ -441,7 +441,8 @@ void lim_handle_ft_pre_auth_rsp(struct mac_context *mac, QDF_STATUS status, pe_create_session(mac, pbssDescription->bssId, &sessionId, mac->lim.maxStation, pe_session->bssType, - pe_session->smeSessionId); + pe_session->vdev_id, + pe_session->opmode); if (!ft_session) { pe_err("Session not created for pre-auth 11R AP"); status = QDF_STATUS_E_FAILURE; diff --git a/core/mac/src/pe/lim/lim_link_monitoring_algo.c b/core/mac/src/pe/lim/lim_link_monitoring_algo.c index 576661473c8e..c046dc2da06a 100644 --- a/core/mac/src/pe/lim/lim_link_monitoring_algo.c +++ b/core/mac/src/pe/lim/lim_link_monitoring_algo.c @@ -575,7 +575,7 @@ void lim_rx_invalid_peer_process(struct mac_context *mac_ctx, } /* only if SAP mode */ - if (session_entry->operMode == BSS_OPERATIONAL_MODE_AP) { + if (session_entry->bssType == eSIR_INFRA_AP_MODE) { pe_debug("send deauth frame to non-assoc STA"); lim_send_deauth_mgmt_frame(mac_ctx, reason_code, diff --git a/core/mac/src/pe/lim/lim_process_sme_req_messages.c b/core/mac/src/pe/lim/lim_process_sme_req_messages.c index 1966fd6bde1e..7fb03e9cf645 100644 --- a/core/mac/src/pe/lim/lim_process_sme_req_messages.c +++ b/core/mac/src/pe/lim/lim_process_sme_req_messages.c @@ -562,7 +562,8 @@ __lim_handle_sme_start_bss_request(struct mac_context *mac_ctx, uint32_t *msg_bu sme_start_bss_req->bssid.bytes, &session_id, mac_ctx->lim.maxStation, sme_start_bss_req->bssType, - sme_start_bss_req->vdev_id); + sme_start_bss_req->vdev_id, + sme_start_bss_req->bssPersona); if (!session) { pe_warn("Session Can not be created"); ret_code = eSIR_SME_RESOURCES_UNAVAILABLE; @@ -616,8 +617,6 @@ __lim_handle_sme_start_bss_request(struct mac_context *mac_ctx, uint32_t *msg_bu (uint8_t *) &sme_start_bss_req->ssId, (sme_start_bss_req->ssId.length + 1)); - session->bssType = sme_start_bss_req->bssType; - session->nwType = sme_start_bss_req->nwType; session->beaconParams.beaconInterval = @@ -626,11 +625,6 @@ __lim_handle_sme_start_bss_request(struct mac_context *mac_ctx, uint32_t *msg_bu /* Store the oper freq in session Table */ session->curr_op_freq = sme_start_bss_req->oper_ch_freq; - /* Store Persona */ - session->opmode = sme_start_bss_req->bssPersona; - QDF_TRACE(QDF_MODULE_ID_PE, QDF_TRACE_LEVEL_DEBUG, - FL("PE PERSONA=%d"), session->opmode); - /* Update the phymode */ session->gLimPhyMode = sme_start_bss_req->nwType; @@ -1330,7 +1324,8 @@ __lim_process_sme_join_req(struct mac_context *mac_ctx, void *msg_buf) session = pe_create_session(mac_ctx, bss_desc->bssId, &session_id, mac_ctx->lim.maxStation, eSIR_INFRASTRUCTURE_MODE, - sme_join_req->vdev_id); + sme_join_req->vdev_id, + sme_join_req->staPersona); if (!session) { pe_err("Session Can not be created"); ret_code = eSIR_SME_RESOURCES_UNAVAILABLE; @@ -1365,7 +1360,6 @@ __lim_process_sme_join_req(struct mac_context *mac_ctx, void *msg_buf) /* Copying of bssId is already done, while creating session */ sir_copy_mac_addr(session->self_mac_addr, sme_join_req->self_mac_addr); - session->bssType = sme_join_req->bsstype; session->statypeForBss = STA_ENTRY_PEER; session->limWmeEnabled = sme_join_req->isWMEenabled; @@ -1410,20 +1404,11 @@ __lim_process_sme_join_req(struct mac_context *mac_ctx, void *msg_buf) * self and peer rates */ session->supported_nss_1x1 = true; - /*Store Persona */ - session->opmode = sme_join_req->staPersona; - pe_debug("enable Smps: %d mode: %d send action: %d supported nss 1x1: %d opmode %d cbMode %d", + pe_debug("enable Smps: %d mode: %d send action: %d supported nss 1x1: %d cbMode %d nwType: %d dot11mode: %d force_24ghz_in_ht20 %d", session->enableHtSmps, session->htSmpsvalue, session->send_smps_action, session->supported_nss_1x1, - session->opmode, sme_join_req->cbMode); - - /*Store Persona */ - session->opmode = sme_join_req->staPersona; - QDF_TRACE(QDF_MODULE_ID_PE, QDF_TRACE_LEVEL_DEBUG, - FL("PE PERSONA=%d cbMode %u nwType: %d dot11mode: %d force_24ghz_in_ht20 %d"), - session->opmode, sme_join_req->cbMode, - session->nwType, session->dot11mode, - sme_join_req->force_24ghz_in_ht20); + sme_join_req->cbMode, session->nwType, + session->dot11mode, sme_join_req->force_24ghz_in_ht20); /* Copy oper freq to the session Table */ session->curr_op_freq = bss_desc->chan_freq; diff --git a/core/mac/src/pe/lim/lim_session.c b/core/mac/src/pe/lim/lim_session.c index a1735bf10bff..c427343e2f39 100644 --- a/core/mac/src/pe/lim/lim_session.c +++ b/core/mac/src/pe/lim/lim_session.c @@ -530,10 +530,9 @@ void lim_update_bcn_probe_filter(struct mac_context *mac_ctx, } struct pe_session *pe_create_session(struct mac_context *mac, - uint8_t *bssid, - uint8_t *sessionId, - uint16_t numSta, enum bss_type bssType, - uint8_t vdev_id) + uint8_t *bssid, uint8_t *sessionId, + uint16_t numSta, enum bss_type bssType, + uint8_t vdev_id, enum QDF_OPMODE opmode) { QDF_STATUS status; uint8_t i; @@ -592,6 +591,7 @@ struct pe_session *pe_create_session(struct mac_context *mac, *sessionId = i; session_ptr->peSessionId = i; session_ptr->bssType = bssType; + session_ptr->opmode = opmode; session_ptr->gLimPhyMode = WNI_CFG_PHY_MODE_11G; /* Initialize CB mode variables when session is created */ session_ptr->htSupportedChannelWidthSet = 0; @@ -610,8 +610,9 @@ struct pe_session *pe_create_session(struct mac_context *mac, session_ptr->is_session_obss_color_collision_det_enabled = mac->mlme_cfg->obss_ht40.obss_color_collision_offload_enabled; - pe_debug("Create a new PE session: %d BSSID: "QDF_MAC_ADDR_STR" Max No of STA: %d", - *sessionId, QDF_MAC_ADDR_ARRAY(bssid), numSta); + pe_debug("Create PE session: %d opmode %d vdev_id %d BSSID: "QDF_MAC_ADDR_STR" Max No of STA: %d", + *sessionId, opmode, vdev_id, QDF_MAC_ADDR_ARRAY(bssid), + numSta); if (eSIR_INFRA_AP_MODE == bssType || eSIR_IBSS_MODE == bssType) { session_ptr->pSchProbeRspTemplate = @@ -797,14 +798,13 @@ void pe_delete_session(struct mac_context *mac_ctx, struct pe_session *session) struct wlan_objmgr_vdev *vdev; if (!session || (session && !session->valid)) { - pe_err("session is not valid"); + pe_err("session already deleted or not valid"); return; } - pe_debug("Trying to delete PE session: %d Opmode: %d vdev_id: %d BSSID: "QDF_MAC_ADDR_STR, - session->peSessionId, session->operMode, - session->vdev_id, - QDF_MAC_ADDR_ARRAY(session->bssId)); + pe_debug("Delete PE session: %d opmode: %d vdev_id: %d BSSID: "QDF_MAC_ADDR_STR, + session->peSessionId, session->opmode, session->vdev_id, + QDF_MAC_ADDR_ARRAY(session->bssId)); lim_reset_bcn_probe_filter(mac_ctx, session);