qcacld-3.0: Update to match scheduler_msg callback
This change corresponds to the callback updates in scheduler_msg. Changes include: 1. Update hdd_data_stall_process_event and its caller 2. Update umac_stop logic to allocate buffer for callback and update its caller 3. Register beacon reporting callback as a direct function call without message posting. Change-Id: Ic07a6102ea75d8bccb57a800e9670750e98356ce CRs-fixed: 2718977
Dieser Commit ist enthalten in:

committet von
nshrivas

Ursprung
3bbb4610b6
Commit
2d357482b9
@@ -65,12 +65,20 @@ static inline void hdd_data_stall_send_event(uint32_t reason)
|
||||
*
|
||||
* Process data stall message
|
||||
*
|
||||
* Return: void
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
static void hdd_data_stall_process_event(
|
||||
struct data_stall_event_info *data_stall_info)
|
||||
static QDF_STATUS hdd_data_stall_process_event(struct scheduler_msg *msg)
|
||||
{
|
||||
struct data_stall_event_info *data_stall_info;
|
||||
|
||||
if (!msg)
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
|
||||
data_stall_info = msg->bodyptr;
|
||||
|
||||
hdd_data_stall_send_event(data_stall_info->data_stall_type);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2011-2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2011-2020 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
@@ -111,4 +111,20 @@ void mac_register_sesssion_open_close_cb(mac_handle_t mac_handle,
|
||||
csr_session_close_cb close_session,
|
||||
csr_roam_complete_cb callback);
|
||||
|
||||
#ifdef WLAN_BCN_RECV_FEATURE
|
||||
/**
|
||||
* mac_register_bcn_report_send_cb() - Register bcn receive start
|
||||
* indication handler callback
|
||||
* @mac: Pointer to Global MAC structure
|
||||
* @cb: A pointer to store the callback
|
||||
*
|
||||
* Once driver gets QCA_NL80211_VENDOR_SUBCMD_BEACON_REPORTING vendor
|
||||
* command with attribute for start only. MAC layer register a sme
|
||||
* callback through this function.
|
||||
*
|
||||
* Return: None.
|
||||
*/
|
||||
void mac_register_bcn_report_send_cb(struct mac_context *mac,
|
||||
beacon_report_cb cb);
|
||||
#endif /* WLAN_BCN_RECV_FEATURE */
|
||||
#endif /* __MAC_INIT_API_H */
|
||||
|
@@ -233,7 +233,7 @@ enum eWniMsgTypes {
|
||||
eWNI_SME_HIDDEN_SSID_RESTART_RSP = SIR_SME_MSG_TYPES_BEGIN + 151,
|
||||
eWNI_SME_FW_STATUS_IND = SIR_SME_MSG_TYPES_BEGIN + 152,
|
||||
eWNI_SME_STA_CSA_CONTINUE_REQ = SIR_SME_MSG_TYPES_BEGIN + 153,
|
||||
WNI_SME_REGISTER_BCN_REPORT_SEND_CB = SIR_SME_MSG_TYPES_BEGIN + 154,
|
||||
/* 154 unused */
|
||||
eWNI_SME_ANTENNA_ISOLATION_RSP = SIR_SME_MSG_TYPES_BEGIN + 155,
|
||||
eWNI_SME_MON_DEINIT_SESSION = SIR_SME_MSG_TYPES_BEGIN + 156,
|
||||
eWNI_SME_VDEV_DELETE_RSP = SIR_SME_MSG_TYPES_BEGIN + 157,
|
||||
|
@@ -1765,7 +1765,6 @@ static void lim_process_messages(struct mac_context *mac_ctx,
|
||||
case WNI_SME_UPDATE_MU_EDCA_PARAMS:
|
||||
case eWNI_SME_UPDATE_SESSION_EDCA_TXQ_PARAMS:
|
||||
case WNI_SME_CFG_ACTION_FRM_HE_TB_PPDU:
|
||||
case WNI_SME_REGISTER_BCN_REPORT_SEND_CB:
|
||||
/* These messages are from HDD.No need to respond to HDD */
|
||||
lim_process_normal_hdd_msg(mac_ctx, msg, false);
|
||||
break;
|
||||
|
@@ -386,36 +386,6 @@ static bool __lim_process_sme_sys_ready_ind(struct mac_context *mac,
|
||||
return false;
|
||||
}
|
||||
|
||||
#ifdef WLAN_BCN_RECV_FEATURE
|
||||
/**
|
||||
* lim_register_bcn_report_send_cb() - Register bcn receive start
|
||||
* indication handler callback
|
||||
* @mac: Pointer to Global MAC structure
|
||||
* @msg: A pointer to the SME message buffer
|
||||
*
|
||||
* Once driver gets QCA_NL80211_VENDOR_SUBCMD_BEACON_REPORTING vendor
|
||||
* command with attribute for start only. LIM layer register a sme
|
||||
* callback through this function.
|
||||
*
|
||||
* Return: None.
|
||||
*/
|
||||
static void lim_register_bcn_report_send_cb(struct mac_context *mac,
|
||||
struct scheduler_msg *msg)
|
||||
{
|
||||
if (!msg) {
|
||||
pe_err("Invalid message");
|
||||
return;
|
||||
}
|
||||
|
||||
mac->lim.sme_bcn_rcv_callback = msg->callback;
|
||||
}
|
||||
#else
|
||||
static inline
|
||||
void lim_register_bcn_report_send_cb(struct mac_context *mac,
|
||||
struct scheduler_msg *msg)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
/**
|
||||
*lim_configure_ap_start_bss_session() - Configure the AP Start BSS in session.
|
||||
*@mac_ctx: Pointer to Global MAC structure
|
||||
@@ -4685,9 +4655,6 @@ bool lim_process_sme_req_messages(struct mac_context *mac,
|
||||
lim_process_sme_cfg_action_frm_in_tb_ppdu(mac,
|
||||
(struct sir_cfg_action_frm_tb_ppdu *)msg_buf);
|
||||
break;
|
||||
case WNI_SME_REGISTER_BCN_REPORT_SEND_CB:
|
||||
lim_register_bcn_report_send_cb(mac, pMsg);
|
||||
break;
|
||||
default:
|
||||
qdf_mem_free((void *)pMsg->bodyptr);
|
||||
pMsg->bodyptr = NULL;
|
||||
|
@@ -952,8 +952,10 @@ void sch_send_beacon_report(struct mac_context *mac_ctx,
|
||||
struct pe_session *session)
|
||||
{
|
||||
struct wlan_beacon_report beacon_report;
|
||||
beacon_report_cb sme_bcn_cb;
|
||||
|
||||
if (!mac_ctx->lim.sme_bcn_rcv_callback)
|
||||
sme_bcn_cb = mac_ctx->lim.sme_bcn_rcv_callback;
|
||||
if (!sme_bcn_cb)
|
||||
return;
|
||||
|
||||
if (!LIM_IS_STA_ROLE(session))
|
||||
@@ -981,8 +983,7 @@ void sch_send_beacon_report(struct mac_context *mac_ctx,
|
||||
beacon_report.vdev_id = session->vdev_id;
|
||||
|
||||
/* Send report to upper layer */
|
||||
mac_ctx->lim.sme_bcn_rcv_callback(mac_ctx->hdd_handle,
|
||||
&beacon_report);
|
||||
sme_bcn_cb(mac_ctx->hdd_handle, &beacon_report);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -50,24 +50,26 @@ QDF_STATUS sys_build_message_header(SYS_MSG_ID msg_id,
|
||||
|
||||
/**
|
||||
* umac_stop_complete_cb() - a callback when system stop completes
|
||||
* @user_data: pointer to user provided data context
|
||||
* @msg: pointer to actual message being handled
|
||||
*
|
||||
* this callback is used once system stop is completed.
|
||||
*
|
||||
* Return: none
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
#ifdef QDF_ENABLE_TRACING
|
||||
static void umac_stop_complete_cb(void *user_data)
|
||||
static QDF_STATUS umac_stop_complete_cb(struct scheduler_msg *msg)
|
||||
{
|
||||
qdf_event_t *stop_evt = (qdf_event_t *) user_data;
|
||||
qdf_event_t *stop_evt = msg->bodyptr;
|
||||
QDF_STATUS qdf_status = qdf_event_set(stop_evt);
|
||||
|
||||
QDF_ASSERT(QDF_IS_STATUS_SUCCESS(qdf_status));
|
||||
|
||||
return qdf_status;
|
||||
}
|
||||
#else
|
||||
static void umac_stop_complete_cb(void *user_data)
|
||||
static QDF_STATUS umac_stop_complete_cb(struct scheduler_msg *msg)
|
||||
{
|
||||
return;
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -129,7 +131,6 @@ QDF_STATUS umac_stop(void)
|
||||
static QDF_STATUS sys_mc_process_msg(struct scheduler_msg *pMsg)
|
||||
{
|
||||
QDF_STATUS qdf_status = QDF_STATUS_SUCCESS;
|
||||
data_stall_detect_cb data_stall_detect_callback;
|
||||
mac_handle_t mac_handle;
|
||||
|
||||
if (!pMsg) {
|
||||
@@ -163,14 +164,12 @@ static QDF_STATUS sys_mc_process_msg(struct scheduler_msg *pMsg)
|
||||
QDF_ASSERT(QDF_IS_STATUS_SUCCESS(qdf_status));
|
||||
qdf_status = mac_stop(mac_handle);
|
||||
QDF_ASSERT(QDF_IS_STATUS_SUCCESS(qdf_status));
|
||||
((sys_rsp_cb) pMsg->callback)(pMsg->bodyptr);
|
||||
qdf_status = QDF_STATUS_SUCCESS;
|
||||
qdf_status = pMsg->callback(pMsg);
|
||||
break;
|
||||
|
||||
case SYS_MSG_ID_DATA_STALL_MSG:
|
||||
data_stall_detect_callback = pMsg->callback;
|
||||
if (data_stall_detect_callback)
|
||||
data_stall_detect_callback(pMsg->bodyptr);
|
||||
if (pMsg->callback)
|
||||
qdf_status = pMsg->callback(pMsg);
|
||||
|
||||
qdf_mem_free(pMsg->bodyptr);
|
||||
break;
|
||||
default:
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2011-2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2011-2020 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
@@ -196,3 +196,17 @@ void mac_register_sesssion_open_close_cb(mac_handle_t mac_handle,
|
||||
mac->session_close_cb = close_session;
|
||||
mac->session_roam_complete_cb = callback;
|
||||
}
|
||||
|
||||
#ifdef WLAN_BCN_RECV_FEATURE
|
||||
void mac_register_bcn_report_send_cb(struct mac_context *mac,
|
||||
beacon_report_cb cb)
|
||||
{
|
||||
if (!mac) {
|
||||
pe_err("Invalid MAC");
|
||||
return;
|
||||
}
|
||||
|
||||
mac->lim.sme_bcn_rcv_callback = cb;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@@ -63,6 +63,7 @@
|
||||
#include "wlan_crypto_global_api.h"
|
||||
#include "wlan_mlme_ucfg_api.h"
|
||||
#include "wlan_psoc_mlme_api.h"
|
||||
#include "mac_init_api.h"
|
||||
|
||||
static QDF_STATUS init_sme_cmd_list(struct mac_context *mac);
|
||||
|
||||
@@ -1117,17 +1118,19 @@ QDF_STATUS sme_hdd_ready_ind(mac_handle_t mac_handle)
|
||||
QDF_STATUS
|
||||
sme_register_bcn_report_pe_cb(mac_handle_t mac_handle, beacon_report_cb cb)
|
||||
{
|
||||
struct scheduler_msg msg = {0};
|
||||
QDF_STATUS status;
|
||||
struct mac_context *mac = MAC_CONTEXT(mac_handle);
|
||||
|
||||
msg.type = WNI_SME_REGISTER_BCN_REPORT_SEND_CB;
|
||||
msg.callback = cb;
|
||||
if (!mac) {
|
||||
sme_err("Invalid mac context");
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
status = scheduler_post_message(QDF_MODULE_ID_SME,
|
||||
QDF_MODULE_ID_PE,
|
||||
QDF_MODULE_ID_PE, &msg);
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
sme_err("Failed to post message to LIM");
|
||||
status = sme_acquire_global_lock(&mac->sme);
|
||||
if (QDF_IS_STATUS_SUCCESS(status)) {
|
||||
mac_register_bcn_report_send_cb(mac, cb);
|
||||
sme_release_global_lock(&mac->sme);
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
In neuem Issue referenzieren
Einen Benutzer sperren