qcacmn: Fix compilation errors for roaming in connection manager

Fix compilation errors for roaming in connection manager.

Change-Id: If154b1b0ca4adfe9f398b37f6d4485de40e2e351
CRs-Fixed: 2849276
Bu işleme şunda yer alıyor:
gaurank kathpalia
2021-01-06 12:53:19 +05:30
işlemeyi yapan: snandini
ebeveyn 45a300ce7b
işleme 99e2ae6712
5 değiştirilmiş dosya ile 139 ekleme ve 106 silme

Dosyayı Görüntüle

@@ -17,7 +17,7 @@
#include "wlan_cm_main.h"
#include "wlan_cm_roam_sm.h"
#include "wlan_cm_sm.h"
#include <wlan_mlme_cmn.h>
#include <include/wlan_mlme_cmn.h>
#include "wlan_cm_main_api.h"
#include <wlan_scan_api.h>
#include <wlan_serialization_api.h>
@@ -162,10 +162,9 @@ static void cm_connect_prepare_scan_filter_for_roam(
filter->pmf_cap = WLAN_PMF_DISABLED;
}
QDF_STATUS cm_roam_get_candidates(
struct wlan_objmgr_pdev *pdev,
struct cnx_mgr *cm_ctx,
struct cm_roam_req *cm_req)
static QDF_STATUS cm_roam_get_candidates(struct wlan_objmgr_pdev *pdev,
struct cnx_mgr *cm_ctx,
struct cm_roam_req *cm_req)
{
struct scan_filter *filter;
uint32_t num_bss = 0;
@@ -213,22 +212,6 @@ QDF_STATUS cm_roam_get_candidates(
return QDF_STATUS_SUCCESS;
}
QDF_STATUS cm_start_roam_req(struct cnx_mgr *cm_ctx,
struct cm_req *cm_req)
{
cm_req->roam_req.cm_id =
cm_get_cm_id(cm_ctx, cm_req->roam_req.req.source);
cm_req->cm_id = cm_req->roam_req.cm_id;
cm_req->roam_req.req.vdev_id = wlan_vdev_get_id(cm_ctx->vdev);
cm_add_req_to_list_and_indicate_osif(cm_ctx, cm_req,
cm_req->roam_req.req.source);
cm_sm_transition_to(cm_ctx, WLAN_CM_SS_PREAUTH);
return cm_sm_deliver_event_sync(cm_ctx, WLAN_CM_SM_EV_ROAM_START,
sizeof(*cm_req), cm_req);
}
QDF_STATUS cm_host_roam_start_req(struct cnx_mgr *cm_ctx,
struct cm_req *cm_req)
{
@@ -470,7 +453,7 @@ reassoc_fail:
return QDF_STATUS_SUCCESS;
}
void
static void
cm_reassoc_handle_event_post_fail(struct cnx_mgr *cm_ctx, wlan_cm_id cm_id)
{
struct wlan_cm_roam_resp *resp;
@@ -740,6 +723,7 @@ QDF_STATUS cm_reassoc_rsp(struct wlan_objmgr_vdev *vdev,
QDF_STATUS qdf_status;
wlan_cm_id cm_id;
uint32_t prefix;
enum wlan_cm_sm_evt event;
cm_ctx = cm_get_cm_ctx(vdev);
if (!cm_ctx)
@@ -765,12 +749,15 @@ QDF_STATUS cm_reassoc_rsp(struct wlan_objmgr_vdev *vdev,
if (cm_is_cm_id_current_candidate_single_pmk(cm_ctx, cm_id))
wlan_crypto_selective_clear_sae_single_pmk_entries(
vdev, &resp->bssid);
qdf_status = cm_sm_deliver_event(vdev,
WLAN_CM_SM_EV_REASSOC_DONE,
sizeof(*resp), resp);
if (QDF_IS_STATUS_SUCCESS(qdf_status))
return qdf_status;
event = WLAN_CM_SM_EV_REASSOC_DONE;
} else {
event = WLAN_CM_SM_EV_REASSOC_FAILURE;
}
qdf_status = cm_sm_deliver_event(cm_ctx->vdev, event, sizeof(*resp),
resp);
if (QDF_IS_STATUS_SUCCESS(qdf_status))
return qdf_status;
post_err:
cm_reassoc_complete(cm_ctx, resp);
@@ -856,11 +843,3 @@ disconnect_complete:
cm_reassoc_handle_event_post_fail(cm_ctx, cm_id);
return qdf_status;
}
void cm_start_roam_invoke(struct cnx_mgr *cm_ctx)
{
}
void cm_fw_roam_start(struct cnx_mgr *cm_ctx)
{
}

Dosyayı Görüntüle

@@ -23,22 +23,7 @@
#ifndef __WLAN_CM_ROAM_H__
#define __WLAN_CM_ROAM_H__
/**
* cm_check_and_prepare_roam_req() - Initiate roam request
* @cm_ctx: connection manager context
* @connect_req: connection manager request
* @roam_req: Roam request
*
* Context: Can be called only while handling connection manager event
* ie holding state machine lock
*
* Return: QDF_STATUS
*/
QDF_STATUS
cm_check_and_prepare_roam_req(struct cnx_mgr *cm_ctx,
struct cm_connect_req *connect_req,
struct cm_req **roam_req);
#ifdef WLAN_FEATURE_HOST_ROAM
/**
* cm_roam_bss_peer_create_rsp() - handle bss peer create response for roam
* @vdev: vdev
@@ -83,25 +68,8 @@ QDF_STATUS cm_roam_disconnect_rsp(struct wlan_objmgr_vdev *vdev,
*
* Return: QDF status
*/
#ifdef WLAN_FEATURE_HOST_ROAM
QDF_STATUS cm_reassoc_complete(struct cnx_mgr *cm_ctx,
struct wlan_cm_roam_resp *resp);
#else
static inline QDF_STATUS cm_reassoc_complete(struct cnx_mgr *cm_ctx,
struct wlan_cm_roam_resp *resp)
{
return QDF_STATUS_SUCCESS;
}
#endif
/**
* cm_free_roam_req_mem() - free croam req internal memory, to be called
* before cm_req is freed
* @roam_req: roam req
*
* Return: void
*/
void cm_free_roam_req_mem(struct cm_roam_req *roam_req);
/**
* cm_get_active_reassoc_req() - Get copy of active reassoc request
@@ -116,17 +84,6 @@ void cm_free_roam_req_mem(struct cm_roam_req *roam_req);
bool cm_get_active_reassoc_req(struct wlan_objmgr_vdev *vdev,
struct wlan_cm_vdev_reassoc_req *req);
/**
* cm_start_roam_req() - Initiate roam request
* @cm_ctx: Connection manager context
* @cm_req: Struct containing the roam request
*
* Return: QDF_STATUS_SUCCESS if roam initiation delivers the event
* to connection state machine else error value.
*/
QDF_STATUS cm_start_roam_req(struct cnx_mgr *cm_ctx,
struct cm_req *cm_req);
/**
* cm_host_roam_start_req() - Start host roam request
* @cm_ctx: Connection manager context
@@ -138,22 +95,6 @@ QDF_STATUS cm_start_roam_req(struct cnx_mgr *cm_ctx,
QDF_STATUS cm_host_roam_start_req(struct cnx_mgr *cm_ctx,
struct cm_req *cm_req);
/**
* cm_start_roam_invoke() - Start roam request
* @cm_ctx: Connection manager context
*
* Return: void
*/
void cm_start_roam_invoke(struct cnx_mgr *cm_ctx);
/**
* cm_fw_roam_start() - Initiate FW roam request
* @cm_ctx: Connection manager context
*
* Return: void
*/
void cm_fw_roam_start(struct cnx_mgr *cm_ctx);
/**
* cm_reassoc_start() - This API will be called to initiate the reassoc
* process
@@ -222,6 +163,64 @@ cm_send_reassoc_start_fail(struct cnx_mgr *cm_ctx,
wlan_cm_id cm_id,
enum wlan_cm_connect_fail_reason reason);
#else
static inline QDF_STATUS cm_reassoc_complete(struct cnx_mgr *cm_ctx,
struct wlan_cm_roam_resp *resp)
{
return QDF_STATUS_SUCCESS;
}
static inline
QDF_STATUS cm_roam_disconnect_rsp(struct wlan_objmgr_vdev *vdev,
struct wlan_cm_discon_rsp *resp)
{
return QDF_STATUS_SUCCESS;
}
static inline
QDF_STATUS cm_roam_bss_peer_create_rsp(struct wlan_objmgr_vdev *vdev,
QDF_STATUS status,
struct qdf_mac_addr *peer_mac)
{
return QDF_STATUS_SUCCESS;
}
#endif
/**
* cm_check_and_prepare_roam_req() - Initiate roam request
* @cm_ctx: connection manager context
* @connect_req: connection manager request
* @roam_req: Roam request
*
* Context: Can be called only while handling connection manager event
* ie holding state machine lock
*
* Return: QDF_STATUS
*/
QDF_STATUS
cm_check_and_prepare_roam_req(struct cnx_mgr *cm_ctx,
struct cm_connect_req *connect_req,
struct cm_req **roam_req);
/**
* cm_free_roam_req_mem() - free croam req internal memory, to be called
* before cm_req is freed
* @roam_req: roam req
*
* Return: void
*/
void cm_free_roam_req_mem(struct cm_roam_req *roam_req);
/**
* cm_add_roam_req_to_list() - add connect req to the connection manager
* req list
* @vdev: vdev on which connect is received
* @cm_req: Roam req provided
*
* Return: QDF status
*/
QDF_STATUS cm_add_roam_req_to_list(struct cnx_mgr *cm_ctx,
struct cm_req *cm_req);
/**
* cm_fill_bss_info_in_roam_rsp_by_cm_id() - fill bss info for the cm id
* @cm_ctx: connection manager context
@@ -235,4 +234,23 @@ cm_fill_bss_info_in_roam_rsp_by_cm_id(struct cnx_mgr *cm_ctx,
wlan_cm_id cm_id,
struct wlan_cm_roam_resp *resp);
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
/**
* cm_roam_offload_enabled() - check if roam offload(LFR3) is enabled
* @psoc: psoc pointer to get the INI
*
* Return: bool
*/
static inline bool cm_roam_offload_enabled(struct wlan_objmgr_psoc *psoc)
{
/* use INI CFG_LFR3_ROAMING_OFFLOAD,return true for now */
return true;
}
#else
static inline bool cm_roam_offload_enabled(struct wlan_objmgr_psoc *psoc)
{
return false;
}
#endif
#endif /* __WLAN_CM_ROAM_H__ */

Dosyayı Görüntüle

@@ -40,18 +40,34 @@ bool cm_state_roaming_event(void *ctx, uint16_t event,
{
struct cnx_mgr *cm_ctx = ctx;
bool event_handled = true;
struct wlan_objmgr_psoc *psoc;
switch (event) {
case WLAN_CM_SM_EV_ROAM_REQ:
cm_start_roam_req(cm_ctx, data);
psoc = wlan_vdev_get_psoc(cm_ctx->vdev);
if (!psoc) {
event_handled = false;
break;
}
if (cm_roam_offload_enabled(psoc)) {
cm_sm_deliver_event_sync(cm_ctx,
WLAN_CM_SM_EV_ROAM_INVOKE,
data_len, data);
} else {
cm_add_roam_req_to_list(cm_ctx, data);
cm_sm_transition_to(cm_ctx, WLAN_CM_SS_PREAUTH);
cm_sm_deliver_event_sync(cm_ctx,
WLAN_CM_SM_EV_ROAM_START,
data_len, data);
}
break;
case WLAN_CM_SM_EV_ROAM_INVOKE:
cm_add_connect_req_to_list(cm_ctx, data);
cm_start_roam_invoke(cm_ctx);
cm_add_roam_req_to_list(cm_ctx, data);
/* cm_start_roam_invoke(cm_ctx); define in LFR3/FW roam file */
break;
case WLAN_CM_SM_EV_ROAM_START:
cm_add_connect_req_to_list(cm_ctx, data);
cm_fw_roam_start(cm_ctx);
cm_add_roam_req_to_list(cm_ctx, data);
/* cm_fw_roam_start(cm_ctx); define in LFR3/FW roam file */
break;
default:
event_handled = false;

Dosyayı Görüntüle

@@ -25,6 +25,12 @@
#include "wlan_cm_roam.h"
#include <wlan_scan_api.h>
void cm_free_roam_req_mem(struct cm_roam_req *roam_req)
{
if (roam_req->candidate_list)
wlan_scan_purge_results(roam_req->candidate_list);
}
QDF_STATUS cm_check_and_prepare_roam_req(struct cnx_mgr *cm_ctx,
struct cm_connect_req *connect_req,
struct cm_req **roam_req)
@@ -86,6 +92,22 @@ QDF_STATUS cm_check_and_prepare_roam_req(struct cnx_mgr *cm_ctx,
return QDF_STATUS_SUCCESS;
}
QDF_STATUS cm_add_roam_req_to_list(struct cnx_mgr *cm_ctx,
struct cm_req *cm_req)
{
QDF_STATUS status;
cm_req->roam_req.cm_id =
cm_get_cm_id(cm_ctx, cm_req->roam_req.req.source);
cm_req->cm_id = cm_req->roam_req.cm_id;
cm_req->roam_req.req.vdev_id = wlan_vdev_get_id(cm_ctx->vdev);
status =
cm_add_req_to_list_and_indicate_osif(cm_ctx, cm_req,
cm_req->roam_req.req.source);
return status;
}
#ifdef WLAN_FEATURE_HOST_ROAM
bool cm_get_active_reassoc_req(struct wlan_objmgr_vdev *vdev,
struct wlan_cm_vdev_reassoc_req *req)

Dosyayı Görüntüle

@@ -23,6 +23,10 @@
#include "wlan_cm_public_struct.h"
#include "wlan_serialization_api.h"
#include "wlan_cm_bss_score_param.h"
#ifdef WLAN_POLICY_MGR_ENABLE
#include <wlan_policy_mgr_api.h>
#endif
#include "wlan_cm_roam.h"
static uint32_t cm_get_prefix_for_cm_id(enum wlan_cm_source source) {
switch (source) {
@@ -660,12 +664,6 @@ void cm_free_connect_req_mem(struct cm_connect_req *connect_req)
qdf_mem_zero(connect_req, sizeof(*connect_req));
}
void cm_free_roam_req_mem(struct cm_roam_req *roam_req)
{
if (roam_req->candidate_list)
wlan_scan_purge_results(roam_req->candidate_list);
}
QDF_STATUS
cm_delete_req_from_list(struct cnx_mgr *cm_ctx, wlan_cm_id cm_id)
{