qcacld-3.0: Replace CDS_GET_HAL_CB in sap_module

Change "qcacld-3.0: Introduce sap_get_mac_context()" introduced a new
API for retrieving the MAC context. Update sap_module to use this API.

Change-Id: I906a57557d38b139728c7f2332e9580abf947d47
CRs-Fixed: 2346184
This commit is contained in:
Jeff Johnson
2018-10-31 14:15:55 -07:00
parent 9193fae699
commit 689d522974
2 ha cambiato i file con 191 aggiunte e 249 eliminazioni

Vedi File

@@ -1061,7 +1061,7 @@ QDF_STATUS wlansap_set_channel_change_with_csa(struct sap_context *sapContext,
/**
* wlansap_set_key_sta() - set keys for a stations.
* @sap_ctx: Pointer to the SAP context
* @pSetKeyInfo : tCsrRoamSetKey structure for the station
* @key_info : tCsrRoamSetKey structure for the station
*
* This api function provides for Ap App/HDD to set key for a station.
*
@@ -1069,7 +1069,7 @@ QDF_STATUS wlansap_set_channel_change_with_csa(struct sap_context *sapContext,
* QDF_STATUS_SUCCESS: Success
*/
QDF_STATUS wlansap_set_key_sta(struct sap_context *sap_ctx,
tCsrRoamSetKey *pSetKeyInfo);
tCsrRoamSetKey *key_info);
/**
* wlan_sap_getstation_ie_information() - RSNIE Population

Vedi File

@@ -18,7 +18,7 @@
/**
* ===========================================================================
* sapModule.C
* sap_module.c
* OVERVIEW:
* This software unit holds the implementation of the WLAN SAP modules
* functions providing EXTERNAL APIs. It is also where the global SAP module
@@ -277,9 +277,8 @@ QDF_STATUS sap_init_ctx(struct sap_context *sap_ctx,
enum QDF_OPMODE mode,
uint8_t *addr, uint32_t session_id, bool reinit)
{
QDF_STATUS qdf_ret_status;
tHalHandle hal;
tpAniSirGlobal pmac;
QDF_STATUS status;
struct mac_context *mac;
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO_HIGH,
"wlansap_start invoked successfully");
@@ -314,24 +313,23 @@ QDF_STATUS sap_init_ctx(struct sap_context *sap_ctx,
/* Now configure the auth type in the roaming profile. To open. */
sap_ctx->csr_roamProfile.negotiatedAuthType = eCSR_AUTH_TYPE_OPEN_SYSTEM; /* open is the default */
hal = (tHalHandle) CDS_GET_HAL_CB();
if (!hal) {
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
"%s: Invalid HAL pointer", __func__);
mac = sap_get_mac_context();
if (!mac) {
QDF_TRACE_ERROR(QDF_MODULE_ID_SAP, "Invalid MAC context");
return QDF_STATUS_E_INVAL;
}
pmac = PMAC_STRUCT(hal);
qdf_ret_status = sap_set_session_param(hal, sap_ctx, session_id);
if (QDF_STATUS_SUCCESS != qdf_ret_status) {
status = sap_set_session_param(MAC_HANDLE(mac), sap_ctx, session_id);
if (QDF_STATUS_SUCCESS != status) {
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
"In %s calling sap_set_session_param status = %d",
__func__, qdf_ret_status);
__func__, status);
return QDF_STATUS_E_FAILURE;
}
/* Register with scan component only during init */
if (!reinit)
sap_ctx->req_id =
ucfg_scan_register_requester(pmac->psoc, "SAP",
ucfg_scan_register_requester(mac->psoc, "SAP",
sap_scan_event_callback, sap_ctx);
return QDF_STATUS_SUCCESS;
@@ -339,8 +337,7 @@ QDF_STATUS sap_init_ctx(struct sap_context *sap_ctx,
QDF_STATUS sap_deinit_ctx(struct sap_context *sap_ctx)
{
tHalHandle hal;
tpAniSirGlobal pmac;
struct mac_context *mac;
/* Sanity check - Extract SAP control block */
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_DEBUG,
@@ -351,14 +348,13 @@ QDF_STATUS sap_deinit_ctx(struct sap_context *sap_ctx)
"%s: Invalid SAP pointer", __func__);
return QDF_STATUS_E_FAULT;
}
hal = CDS_GET_HAL_CB();
pmac = (tpAniSirGlobal) hal;
if (NULL == pmac) {
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
"%s: Invalid MAC context", __func__);
mac = sap_get_mac_context();
if (!mac) {
QDF_TRACE_ERROR(QDF_MODULE_ID_SAP, "Invalid MAC context");
return QDF_STATUS_E_FAULT;
}
ucfg_scan_unregister_requester(pmac->psoc, sap_ctx->req_id);
ucfg_scan_unregister_requester(mac->psoc, sap_ctx->req_id);
if (sap_ctx->channelList) {
qdf_mem_free(sap_ctx->channelList);
@@ -368,7 +364,8 @@ QDF_STATUS sap_deinit_ctx(struct sap_context *sap_ctx)
sap_free_roam_profile(&sap_ctx->csr_roamProfile);
if (sap_ctx->sessionId != CSR_SESSION_ID_INVALID) {
/* empty queues/lists/pkts if any */
sap_clear_session_param(hal, sap_ctx, sap_ctx->sessionId);
sap_clear_session_param(MAC_HANDLE(mac), sap_ctx,
sap_ctx->sessionId);
}
return QDF_STATUS_SUCCESS;
@@ -423,16 +420,13 @@ bool wlansap_is_channel_leaking_in_nol(struct sap_context *sap_ctx,
uint8_t channel,
uint8_t chan_bw)
{
tpAniSirGlobal mac_ctx;
struct mac_context *mac_ctx;
uint8_t leakage_adjusted_lst[1];
void *handle = NULL;
leakage_adjusted_lst[0] = channel;
handle = CDS_GET_HAL_CB();
mac_ctx = PMAC_STRUCT(handle);
mac_ctx = sap_get_mac_context();
if (!mac_ctx) {
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
"%s: Invalid mac pointer", __func__);
QDF_TRACE_ERROR(QDF_MODULE_ID_SAP, "Invalid MAC context");
return QDF_STATUS_E_FAULT;
}
if (QDF_IS_STATUS_ERROR(wlansap_mark_leaking_channel(mac_ctx->pdev,
@@ -448,17 +442,19 @@ bool wlansap_is_channel_leaking_in_nol(struct sap_context *sap_ctx,
#ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH
uint16_t wlansap_check_cc_intf(struct sap_context *sap_ctx)
{
tHalHandle hHal;
struct mac_context *mac;
uint16_t intf_ch;
eCsrPhyMode phy_mode;
hHal = (tHalHandle) CDS_GET_HAL_CB();
if (NULL == hHal) {
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
"%s: Invalid MAC context from p_cds_gctx", __func__);
mac = sap_get_mac_context();
if (!mac) {
QDF_TRACE_ERROR(QDF_MODULE_ID_SAP, "Invalid MAC context");
return 0;
}
intf_ch = sme_check_concurrent_channel_overlap(hHal, sap_ctx->channel,
sap_ctx->csr_roamProfile.phyMode,
phy_mode = sap_ctx->csr_roamProfile.phyMode;
intf_ch = sme_check_concurrent_channel_overlap(MAC_HANDLE(mac),
sap_ctx->channel,
phy_mode,
sap_ctx->cc_switch_mode);
return intf_ch;
}
@@ -479,11 +475,10 @@ uint16_t wlansap_check_cc_intf(struct sap_context *sap_ctx)
*/
static QDF_STATUS
wlansap_set_scan_acs_channel_params(tsap_config_t *pconfig,
struct sap_context *psap_ctx,
void *pusr_context)
struct sap_context *psap_ctx,
void *pusr_context)
{
tHalHandle h_hal = NULL;
tpAniSirGlobal pmac;
struct mac_context *mac;
QDF_STATUS status = QDF_STATUS_SUCCESS;
if (NULL == pconfig) {
@@ -525,24 +520,22 @@ wlansap_set_scan_acs_channel_params(tsap_config_t *pconfig,
qdf_mem_copy(psap_ctx->self_mac_addr,
pconfig->self_macaddr.bytes, QDF_MAC_ADDR_SIZE);
h_hal = (tHalHandle)CDS_GET_HAL_CB();
if (NULL == h_hal) {
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO_HIGH,
"%s: Invalid MAC context from pvosGCtx", __func__);
mac = sap_get_mac_context();
if (!mac) {
QDF_TRACE_ERROR(QDF_MODULE_ID_SAP, "Invalid MAC context");
return QDF_STATUS_E_FAULT;
}
pmac = PMAC_STRUCT(h_hal);
/*
* If concurrent session is running that is already associated
* then we just follow that sessions country info (whether
* present or not doesn't maater as we have to follow whatever
* present or not doesn't matter as we have to follow whatever
* STA session does)
*/
if ((0 == sme_get_concurrent_operation_channel(h_hal)) &&
pconfig->ieee80211d) {
if ((0 == sme_get_concurrent_operation_channel(MAC_HANDLE(mac))) &&
pconfig->ieee80211d) {
/* Setting the region/country information */
status = ucfg_reg_set_country(pmac->pdev,
pconfig->countryCode);
status = ucfg_reg_set_country(mac->pdev,
pconfig->countryCode);
if (QDF_IS_STATUS_ERROR(status))
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
FL("Failed to set country"));
@@ -649,8 +642,7 @@ QDF_STATUS wlansap_start_bss(struct sap_context *sap_ctx,
{
tWLAN_SAPEvent sapEvent; /* State machine event */
QDF_STATUS qdf_status = QDF_STATUS_SUCCESS;
tHalHandle hHal;
tpAniSirGlobal pmac = NULL;
struct mac_context *pmac = NULL;
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO_HIGH,
FL("sapContext=%pK"), sap_ctx);
@@ -702,21 +694,19 @@ QDF_STATUS wlansap_start_bss(struct sap_context *sap_ctx,
/* copy the configuration items to csrProfile */
sapconvert_to_csr_profile(pConfig, eCSR_BSS_TYPE_INFRA_AP,
&sap_ctx->csr_roamProfile);
hHal = (tHalHandle) CDS_GET_HAL_CB();
if (NULL == hHal) {
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO_HIGH,
"%s: Invalid MAC context from p_cds_gctx",
__func__);
pmac = sap_get_mac_context();
if (!pmac) {
QDF_TRACE_ERROR(QDF_MODULE_ID_SAP, "Invalid MAC context");
qdf_status = QDF_STATUS_E_FAULT;
goto fail;
}
pmac = PMAC_STRUCT(hHal);
/* If concurrent session is running that is already associated
* then we just follow that sessions country info (whether
* present or not doesn't maater as we have to follow whatever
* present or not doesn't matter as we have to follow whatever
* STA session does) */
if ((0 == sme_get_concurrent_operation_channel(hHal)) &&
pConfig->ieee80211d) {
if ((0 == sme_get_concurrent_operation_channel(MAC_HANDLE(pmac))) &&
pConfig->ieee80211d) {
/* Setting the region/country information */
qdf_status = ucfg_reg_set_country(pmac->pdev,
pConfig->countryCode);
@@ -1135,40 +1125,45 @@ QDF_STATUS wlansap_modify_acl(struct sap_context *sap_ctx,
}
QDF_STATUS wlansap_disassoc_sta(struct sap_context *sap_ctx,
struct csr_del_sta_params *p_del_sta_params)
struct csr_del_sta_params *params)
{
if (NULL == sap_ctx) {
tpAniSirGlobal mac;
if (!sap_ctx) {
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
"%s: Invalid SAP pointer", __func__);
return QDF_STATUS_E_FAULT;
}
sme_roam_disconnect_sta(CDS_GET_HAL_CB(),
sap_ctx->sessionId, p_del_sta_params);
mac = sap_get_mac_context();
if (!mac) {
QDF_TRACE_ERROR(QDF_MODULE_ID_SAP, "Invalid MAC context");
return QDF_STATUS_E_FAULT;
}
return QDF_STATUS_SUCCESS;
return sme_roam_disconnect_sta(MAC_HANDLE(mac), sap_ctx->sessionId,
params);
}
QDF_STATUS wlansap_deauth_sta(struct sap_context *sap_ctx,
struct csr_del_sta_params *pDelStaParams)
struct csr_del_sta_params *params)
{
QDF_STATUS qdf_ret_status = QDF_STATUS_E_FAILURE;
QDF_STATUS qdf_status = QDF_STATUS_E_FAULT;
struct mac_context *mac;
if (NULL == sap_ctx) {
if (!sap_ctx) {
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
"%s: Invalid SAP pointer", __func__);
return qdf_status;
return QDF_STATUS_E_FAULT;
}
qdf_ret_status =
sme_roam_deauth_sta(CDS_GET_HAL_CB(),
sap_ctx->sessionId, pDelStaParams);
if (qdf_ret_status == QDF_STATUS_SUCCESS) {
qdf_status = QDF_STATUS_SUCCESS;
mac = sap_get_mac_context();
if (!mac) {
QDF_TRACE_ERROR(QDF_MODULE_ID_SAP, "Invalid MAC context");
return QDF_STATUS_E_FAULT;
}
return qdf_status;
return sme_roam_deauth_sta(MAC_HANDLE(mac), sap_ctx->sessionId,
params);
}
/**
@@ -1183,19 +1178,15 @@ static QDF_STATUS
wlansap_update_csa_channel_params(struct sap_context *sap_context,
uint32_t channel)
{
void *hal;
tpAniSirGlobal mac_ctx;
struct mac_context *mac_ctx;
uint8_t bw;
hal = CDS_GET_HAL_CB();
if (!hal) {
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
"%s: Invalid hal pointer from p_cds_gctx", __func__);
mac_ctx = sap_get_mac_context();
if (!mac_ctx) {
QDF_TRACE_ERROR(QDF_MODULE_ID_SAP, "Invalid MAC context");
return QDF_STATUS_E_FAULT;
}
mac_ctx = PMAC_STRUCT(hal);
if (channel <= CHAN_ENUM_14) {
/*
* currently OBSS scan is done in hostapd, so to avoid
@@ -1265,8 +1256,8 @@ QDF_STATUS wlansap_set_channel_change_with_csa(struct sap_context *sapContext,
#ifndef CONFIG_VDEV_SM
tWLAN_SAPEvent sapEvent;
#endif
tpAniSirGlobal pMac = NULL;
void *hHal = NULL;
struct mac_context *mac;
mac_handle_t mac_handle;
bool valid;
QDF_STATUS status;
bool sta_sap_scc_on_dfs_chan;
@@ -1278,15 +1269,14 @@ QDF_STATUS wlansap_set_channel_change_with_csa(struct sap_context *sapContext,
return QDF_STATUS_E_FAULT;
}
hHal = CDS_GET_HAL_CB();
if (NULL == hHal) {
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
"%s: Invalid HAL pointer from p_cds_gctx", __func__);
mac = sap_get_mac_context();
if (!mac) {
QDF_TRACE_ERROR(QDF_MODULE_ID_SAP, "Invalid MAC context");
return QDF_STATUS_E_FAULT;
}
pMac = PMAC_STRUCT(hHal);
mac_handle = MAC_HANDLE(mac);
if (strict && !policy_mgr_is_safe_channel(pMac->psoc, targetChannel)) {
if (strict && !policy_mgr_is_safe_channel(mac->psoc, targetChannel)) {
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
"%u is unsafe channel", targetChannel);
return QDF_STATUS_E_FAULT;
@@ -1295,21 +1285,21 @@ QDF_STATUS wlansap_set_channel_change_with_csa(struct sap_context *sapContext,
"%s: sap chan:%d target:%d conn on 5GHz:%d",
__func__, sapContext->channel, targetChannel,
policy_mgr_is_any_mode_active_on_band_along_with_session(
pMac->psoc, sapContext->sessionId, POLICY_MGR_BAND_5));
mac->psoc, sapContext->sessionId, POLICY_MGR_BAND_5));
sta_sap_scc_on_dfs_chan =
policy_mgr_is_sta_sap_scc_allowed_on_dfs_chan(pMac->psoc);
policy_mgr_is_sta_sap_scc_allowed_on_dfs_chan(mac->psoc);
/*
* Now, validate if the passed channel is valid in the
* current regulatory domain.
*/
if (sapContext->channel != targetChannel &&
((wlan_reg_get_channel_state(pMac->pdev, targetChannel) ==
((wlan_reg_get_channel_state(mac->pdev, targetChannel) ==
CHANNEL_STATE_ENABLE) ||
(wlan_reg_get_channel_state(pMac->pdev, targetChannel) ==
(wlan_reg_get_channel_state(mac->pdev, targetChannel) ==
CHANNEL_STATE_DFS &&
(!policy_mgr_is_any_mode_active_on_band_along_with_session(
pMac->psoc, sapContext->sessionId,
mac->psoc, sapContext->sessionId,
POLICY_MGR_BAND_5) ||
sta_sap_scc_on_dfs_chan)))) {
/*
@@ -1317,8 +1307,9 @@ QDF_STATUS wlansap_set_channel_change_with_csa(struct sap_context *sapContext,
* rules set.
*/
if (!strict) {
valid = wlan_sap_validate_channel_switch(hHal,
targetChannel, sapContext);
valid = wlan_sap_validate_channel_switch(mac_handle,
targetChannel,
sapContext);
if (!valid) {
QDF_TRACE(QDF_MODULE_ID_SAP,
QDF_TRACE_LEVEL_ERROR,
@@ -1343,9 +1334,9 @@ QDF_STATUS wlansap_set_channel_change_with_csa(struct sap_context *sapContext,
* Copy the requested target channel
* to sap context.
*/
pMac->sap.SapDfsInfo.target_channel = targetChannel;
pMac->sap.SapDfsInfo.new_ch_params.ch_width =
pMac->sap.SapDfsInfo.new_chanWidth;
mac->sap.SapDfsInfo.target_channel = targetChannel;
mac->sap.SapDfsInfo.new_ch_params.ch_width =
mac->sap.SapDfsInfo.new_chanWidth;
/* By this time, the best bandwidth is calculated for
* the given target channel. Now, if there was a
@@ -1366,20 +1357,20 @@ QDF_STATUS wlansap_set_channel_change_with_csa(struct sap_context *sapContext,
QDF_TRACE_LEVEL_INFO,
"%s: target bw:%d new width:%d",
__func__, target_bw,
pMac->sap.SapDfsInfo.
mac->sap.SapDfsInfo.
new_ch_params.ch_width);
pMac->sap.SapDfsInfo.new_ch_params.ch_width =
pMac->sap.SapDfsInfo.new_chanWidth =
QDF_MIN(pMac->sap.SapDfsInfo.
mac->sap.SapDfsInfo.new_ch_params.ch_width =
mac->sap.SapDfsInfo.new_chanWidth =
QDF_MIN(mac->sap.SapDfsInfo.
new_ch_params.ch_width,
target_bw);
}
wlan_reg_set_channel_params(pMac->pdev, targetChannel,
0, &pMac->sap.SapDfsInfo.new_ch_params);
wlan_reg_set_channel_params(mac->pdev, targetChannel,
0, &mac->sap.SapDfsInfo.new_ch_params);
/*
* Set the CSA IE required flag.
*/
pMac->sap.SapDfsInfo.csaIERequired = true;
mac->sap.SapDfsInfo.csaIERequired = true;
/*
* Set the radar found status to allow the channel
@@ -1389,12 +1380,12 @@ QDF_STATUS wlansap_set_channel_change_with_csa(struct sap_context *sapContext,
* that were suspended in HDD before the channel
* request was issued.
*/
pMac->sap.SapDfsInfo.sap_radar_found_status = true;
pMac->sap.SapDfsInfo.cac_state =
mac->sap.SapDfsInfo.sap_radar_found_status = true;
mac->sap.SapDfsInfo.cac_state =
eSAP_DFS_DO_NOT_SKIP_CAC;
sap_cac_reset_notify(hHal);
sap_cac_reset_notify(mac_handle);
#ifdef CONFIG_VDEV_SM
sme_csa_restart(hHal, sapContext->sessionId);
sme_csa_restart(mac, sapContext->sessionId);
#else
/*
* Post the eSAP_CHANNEL_SWITCH_ANNOUNCEMENT_START
@@ -1432,12 +1423,10 @@ QDF_STATUS wlansap_set_channel_change_with_csa(struct sap_context *sapContext,
}
QDF_STATUS wlansap_set_key_sta(struct sap_context *sap_ctx,
tCsrRoamSetKey *pSetKeyInfo)
tCsrRoamSetKey *key_info)
{
QDF_STATUS qdf_status = QDF_STATUS_SUCCESS;
void *hHal = NULL;
QDF_STATUS qdf_ret_status = QDF_STATUS_E_FAILURE;
uint32_t roamId = INVALID_ROAM_ID;
uint32_t roam_id = INVALID_ROAM_ID;
struct mac_context *mac;
if (!sap_ctx) {
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
@@ -1445,23 +1434,15 @@ QDF_STATUS wlansap_set_key_sta(struct sap_context *sap_ctx,
__func__);
return QDF_STATUS_E_FAULT;
}
hHal = CDS_GET_HAL_CB();
if (NULL == hHal) {
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
"%s: Invalid HAL pointer",
__func__);
mac = sap_get_mac_context();
if (!mac) {
QDF_TRACE_ERROR(QDF_MODULE_ID_SAP, "Invalid MAC context");
return QDF_STATUS_E_FAULT;
}
qdf_ret_status =
sme_roam_set_key(hHal, sap_ctx->sessionId, pSetKeyInfo,
&roamId);
if (qdf_ret_status == QDF_STATUS_SUCCESS)
qdf_status = QDF_STATUS_SUCCESS;
else
qdf_status = QDF_STATUS_E_FAULT;
return qdf_status;
return sme_roam_set_key(MAC_HANDLE(mac), sap_ctx->sessionId,
key_info, &roam_id);
}
QDF_STATUS wlan_sap_getstation_ie_information(struct sap_context *sap_ctx,
@@ -1634,8 +1615,8 @@ QDF_STATUS wlansap_register_mgmt_frame(struct sap_context *sap_ctx,
uint8_t *matchData,
uint16_t matchLen)
{
void *hHal = NULL;
QDF_STATUS qdf_ret_status = QDF_STATUS_E_FAILURE;
struct mac_context *mac;
QDF_STATUS status;
if (NULL == sap_ctx) {
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
@@ -1643,25 +1624,20 @@ QDF_STATUS wlansap_register_mgmt_frame(struct sap_context *sap_ctx,
__func__);
return QDF_STATUS_E_FAULT;
}
hHal = CDS_GET_HAL_CB();
if (NULL == hHal) {
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
FL("hal pointer null"));
mac = sap_get_mac_context();
if (!mac) {
QDF_TRACE_ERROR(QDF_MODULE_ID_SAP, "Invalid MAC context");
return QDF_STATUS_E_FAULT;
}
qdf_ret_status = sme_register_mgmt_frame(hHal, sap_ctx->sessionId,
frameType, matchData,
matchLen);
status = sme_register_mgmt_frame(MAC_HANDLE(mac), sap_ctx->sessionId,
frameType, matchData, matchLen);
if (QDF_IS_STATUS_ERROR(status))
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
"Failed to Register MGMT frame");
if (QDF_STATUS_SUCCESS == qdf_ret_status) {
return QDF_STATUS_SUCCESS;
}
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
"Failed to Register MGMT frame");
return QDF_STATUS_E_FAULT;
return status;
}
QDF_STATUS wlansap_de_register_mgmt_frame(struct sap_context *sap_ctx,
@@ -1669,8 +1645,8 @@ QDF_STATUS wlansap_de_register_mgmt_frame(struct sap_context *sap_ctx,
uint8_t *matchData,
uint16_t matchLen)
{
void *hHal = NULL;
QDF_STATUS qdf_ret_status = QDF_STATUS_E_FAILURE;
struct mac_context *mac;
QDF_STATUS status;
if (NULL == sap_ctx) {
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
@@ -1678,33 +1654,27 @@ QDF_STATUS wlansap_de_register_mgmt_frame(struct sap_context *sap_ctx,
__func__);
return QDF_STATUS_E_FAULT;
}
hHal = CDS_GET_HAL_CB();
if (NULL == hHal) {
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
FL("hal pointer null"));
mac = sap_get_mac_context();
if (!mac) {
QDF_TRACE_ERROR(QDF_MODULE_ID_SAP, "Invalid MAC context");
return QDF_STATUS_E_FAULT;
}
qdf_ret_status =
sme_deregister_mgmt_frame(hHal, sap_ctx->sessionId, frameType,
matchData, matchLen);
status = sme_deregister_mgmt_frame(MAC_HANDLE(mac), sap_ctx->sessionId,
frameType, matchData, matchLen);
if (QDF_IS_STATUS_ERROR(status))
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
"Failed to Deregister MGMT frame");
if (QDF_STATUS_SUCCESS == qdf_ret_status) {
return QDF_STATUS_SUCCESS;
}
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
"Failed to Deregister MGMT frame");
return QDF_STATUS_E_FAULT;
return status;
}
QDF_STATUS wlansap_channel_change_request(struct sap_context *sapContext,
uint8_t target_channel)
{
QDF_STATUS qdf_ret_status = QDF_STATUS_E_FAILURE;
void *hHal = NULL;
tpAniSirGlobal mac_ctx = NULL;
QDF_STATUS status = QDF_STATUS_E_FAILURE;
struct mac_context *mac_ctx;
eCsrPhyMode phy_mode;
struct ch_params *ch_params;
@@ -1720,13 +1690,12 @@ QDF_STATUS wlansap_channel_change_request(struct sap_context *sapContext,
return QDF_STATUS_E_FAULT;
}
hHal = CDS_GET_HAL_CB();
if (NULL == hHal) {
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
"%s: Invalid HAL pointer from p_cds_gctx", __func__);
mac_ctx = sap_get_mac_context();
if (!mac_ctx) {
QDF_TRACE_ERROR(QDF_MODULE_ID_SAP, "Invalid MAC context");
return QDF_STATUS_E_FAULT;
}
mac_ctx = PMAC_STRUCT(hHal);
phy_mode = sapContext->csr_roamProfile.phyMode;
/* Update phy_mode if the target channel is in the other band */
@@ -1773,8 +1742,10 @@ QDF_STATUS wlansap_channel_change_request(struct sap_context *sapContext,
ch_params->center_freq_seg1;
sap_dfs_set_current_channel(sapContext);
qdf_ret_status = sme_roam_channel_change_req(hHal, sapContext->bssid,
ch_params, &sapContext->csr_roamProfile);
status = sme_roam_channel_change_req(MAC_HANDLE(mac_ctx),
sapContext->bssid,
ch_params,
&sapContext->csr_roamProfile);
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO,
"%s: chan:%d phy_mode %d width:%d offset:%d seg0:%d seg1:%d",
@@ -1782,22 +1753,19 @@ QDF_STATUS wlansap_channel_change_request(struct sap_context *sapContext,
ch_params->sec_ch_offset, ch_params->center_freq_seg0,
ch_params->center_freq_seg1);
if (qdf_ret_status == QDF_STATUS_SUCCESS) {
if (QDF_IS_STATUS_SUCCESS(status))
sap_signal_hdd_event(sapContext, NULL,
eSAP_CHANNEL_CHANGE_EVENT,
(void *) eSAP_STATUS_SUCCESS);
eSAP_CHANNEL_CHANGE_EVENT,
(void *) eSAP_STATUS_SUCCESS);
return QDF_STATUS_SUCCESS;
}
return QDF_STATUS_E_FAULT;
return status;
}
QDF_STATUS wlansap_start_beacon_req(struct sap_context *sap_ctx)
{
QDF_STATUS qdf_ret_status = QDF_STATUS_E_FAILURE;
void *hHal = NULL;
uint8_t dfsCacWaitStatus = 0;
tpAniSirGlobal pMac = NULL;
QDF_STATUS status = QDF_STATUS_SUCCESS;
uint8_t dfs_cac_wait_status;
struct mac_context *mac;
if (NULL == sap_ctx) {
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
@@ -1805,36 +1773,28 @@ QDF_STATUS wlansap_start_beacon_req(struct sap_context *sap_ctx)
return QDF_STATUS_E_FAULT;
}
hHal = CDS_GET_HAL_CB();
if (NULL == hHal) {
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
"%s: Invalid HAL pointer", __func__);
mac = sap_get_mac_context();
if (!mac) {
QDF_TRACE_ERROR(QDF_MODULE_ID_SAP, "Invalid MAC context");
return QDF_STATUS_E_FAULT;
}
pMac = PMAC_STRUCT(hHal);
/* No Radar was found during CAC WAIT, So start Beaconing */
if (pMac->sap.SapDfsInfo.sap_radar_found_status == false) {
if (mac->sap.SapDfsInfo.sap_radar_found_status == false) {
/* CAC Wait done without any Radar Detection */
dfsCacWaitStatus = true;
dfs_cac_wait_status = true;
sap_ctx->pre_cac_complete = false;
qdf_ret_status = sme_roam_start_beacon_req(hHal,
sap_ctx->bssid,
dfsCacWaitStatus);
if (qdf_ret_status == QDF_STATUS_SUCCESS) {
return QDF_STATUS_SUCCESS;
}
return QDF_STATUS_E_FAULT;
status = sme_roam_start_beacon_req(MAC_HANDLE(mac),
sap_ctx->bssid,
dfs_cac_wait_status);
}
return QDF_STATUS_E_FAULT;
return status;
}
QDF_STATUS wlansap_dfs_send_csa_ie_request(struct sap_context *sap_ctx)
{
QDF_STATUS qdf_ret_status = QDF_STATUS_E_FAILURE;
void *hHal = NULL;
tpAniSirGlobal pMac = NULL;
struct mac_context *pMac;
if (NULL == sap_ctx) {
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
@@ -1842,13 +1802,11 @@ QDF_STATUS wlansap_dfs_send_csa_ie_request(struct sap_context *sap_ctx)
return QDF_STATUS_E_FAULT;
}
hHal = CDS_GET_HAL_CB();
if (NULL == hHal) {
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
"%s: Invalid HAL pointer", __func__);
pMac = sap_get_mac_context();
if (!pMac) {
QDF_TRACE_ERROR(QDF_MODULE_ID_SAP, "Invalid MAC context");
return QDF_STATUS_E_FAULT;
}
pMac = PMAC_STRUCT(hHal);
pMac->sap.SapDfsInfo.new_ch_params.ch_width =
pMac->sap.SapDfsInfo.new_chanWidth;
@@ -1863,17 +1821,11 @@ QDF_STATUS wlansap_dfs_send_csa_ie_request(struct sap_context *sap_ctx)
pMac->sap.SapDfsInfo.new_ch_params.ch_width,
pMac->sap.SapDfsInfo.new_ch_params.sec_ch_offset);
qdf_ret_status = sme_roam_csa_ie_request(hHal,
sap_ctx->bssid,
pMac->sap.SapDfsInfo.target_channel,
pMac->sap.SapDfsInfo.csaIERequired,
&pMac->sap.SapDfsInfo.new_ch_params);
if (qdf_ret_status == QDF_STATUS_SUCCESS) {
return QDF_STATUS_SUCCESS;
}
return QDF_STATUS_E_FAULT;
return sme_roam_csa_ie_request(MAC_HANDLE(pMac),
sap_ctx->bssid,
pMac->sap.SapDfsInfo.target_channel,
pMac->sap.SapDfsInfo.csaIERequired,
&pMac->sap.SapDfsInfo.new_ch_params);
}
/*==========================================================================
@@ -2374,8 +2326,7 @@ QDF_STATUS wlan_sap_set_vendor_acs(struct sap_context *sap_context,
QDF_STATUS wlansap_set_dfs_nol(struct sap_context *sap_ctx,
eSapDfsNolType conf)
{
void *hal = NULL;
tpAniSirGlobal mac = NULL;
struct mac_context *mac;
if (!sap_ctx) {
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
@@ -2383,15 +2334,12 @@ QDF_STATUS wlansap_set_dfs_nol(struct sap_context *sap_ctx,
return QDF_STATUS_E_FAULT;
}
hal = CDS_GET_HAL_CB();
if (!hal) {
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
"%s: Invalid HAL pointer", __func__);
mac = sap_get_mac_context();
if (!mac) {
QDF_TRACE_ERROR(QDF_MODULE_ID_SAP, "Invalid MAC context");
return QDF_STATUS_E_FAULT;
}
mac = PMAC_STRUCT(hal);
if (conf == eSAP_DFS_NOL_CLEAR) {
struct wlan_objmgr_pdev *pdev;
@@ -2465,9 +2413,8 @@ QDF_STATUS wlansap_acs_chselect(struct sap_context *sap_context,
tsap_config_t *pconfig,
void *pusr_context)
{
tHalHandle h_hal = NULL;
QDF_STATUS qdf_status = QDF_STATUS_E_FAILURE;
tpAniSirGlobal pmac = NULL;
struct mac_context *mac;
if (NULL == sap_context) {
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
@@ -2476,14 +2423,12 @@ QDF_STATUS wlansap_acs_chselect(struct sap_context *sap_context,
return QDF_STATUS_E_FAULT;
}
h_hal = (tHalHandle)CDS_GET_HAL_CB();
if (NULL == h_hal) {
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
"%s: Invalid MAC context", __func__);
mac = sap_get_mac_context();
if (!mac) {
QDF_TRACE_ERROR(QDF_MODULE_ID_SAP, "Invalid MAC context");
return QDF_STATUS_E_FAULT;
}
pmac = PMAC_STRUCT(h_hal);
sap_context->acs_cfg = &pconfig->acs_cfg;
sap_context->ch_width_orig = pconfig->acs_cfg.ch_width;
sap_context->csr_roamProfile.phyMode = pconfig->acs_cfg.hw_mode;
@@ -2611,8 +2556,7 @@ QDF_STATUS wlansap_set_invalid_session(struct sap_context *sap_ctx)
void wlansap_cleanup_cac_timer(struct sap_context *sap_ctx)
{
tHalHandle hal;
tpAniSirGlobal pmac;
struct mac_context *mac;
if (!sap_ctx) {
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
@@ -2620,20 +2564,18 @@ void wlansap_cleanup_cac_timer(struct sap_context *sap_ctx)
return;
}
hal = CDS_GET_HAL_CB();
if (!hal) {
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
FL("Invalid hal pointer"));
mac = sap_get_mac_context();
if (!mac) {
QDF_TRACE_ERROR(QDF_MODULE_ID_SAP, "Invalid MAC context");
return;
}
pmac = PMAC_STRUCT(hal);
if (pmac->sap.SapDfsInfo.is_dfs_cac_timer_running) {
qdf_mc_timer_stop(&pmac->sap.SapDfsInfo.
if (mac->sap.SapDfsInfo.is_dfs_cac_timer_running) {
qdf_mc_timer_stop(&mac->sap.SapDfsInfo.
sap_dfs_cac_timer);
pmac->sap.SapDfsInfo.is_dfs_cac_timer_running = 0;
mac->sap.SapDfsInfo.is_dfs_cac_timer_running = 0;
qdf_mc_timer_destroy(
&pmac->sap.SapDfsInfo.sap_dfs_cac_timer);
&mac->sap.SapDfsInfo.sap_dfs_cac_timer);
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
FL("sapdfs, force cleanup running dfs cac timer"));
}