qcacmn: Move vdev resp timer to scheduler context for MCL
For MCL, vdev manager resp timer callback should be called in scheduler context. Hence vdev manager response timer callback code is refactored. To handle vdev response timer, MCL specific change is to post message to scheduler thread and handle timer callback in scheduler thread. This MCL specific change is protected using "SERIALIZE_VDEV_RESP_TIMER" macro. Change-Id: I4c5a24cd4c8afba92e407fc229a9d2c295cecb57 CRs-Fixed: 2507577
This commit is contained in:

committed by
nshrivas

parent
c42d8036c9
commit
47e709a62b
@@ -32,7 +32,7 @@
|
||||
#include <wlan_vdev_mlme_main.h>
|
||||
#include <wmi_unified_vdev_api.h>
|
||||
|
||||
void target_if_vdev_mgr_rsp_timer_mgmt_cb(void *arg)
|
||||
static void target_if_vdev_mgr_rsp_timer_cb(void *arg)
|
||||
{
|
||||
struct wlan_objmgr_vdev *vdev = arg;
|
||||
struct wlan_objmgr_psoc *psoc;
|
||||
@@ -153,6 +153,52 @@ void target_if_vdev_mgr_rsp_timer_mgmt_cb(void *arg)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef SERIALIZE_VDEV_RESP_TIMER
|
||||
static QDF_STATUS target_if_vdev_mgr_rsp_flush_cb(struct scheduler_msg *msg)
|
||||
{
|
||||
struct wlan_objmgr_vdev *vdev = msg->bodyptr;
|
||||
|
||||
if (vdev)
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_VDEV_TARGET_IF_ID);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static void
|
||||
target_if_vdev_mgr_rsp_cb_mc_ctx(void *arg)
|
||||
{
|
||||
struct scheduler_msg msg = {0};
|
||||
struct wlan_objmgr_vdev *vdev = arg;
|
||||
|
||||
msg.type = SYS_MSG_ID_MC_TIMER;
|
||||
msg.reserved = SYS_MSG_COOKIE;
|
||||
msg.callback = target_if_vdev_mgr_rsp_timer_cb;
|
||||
msg.bodyptr = arg;
|
||||
msg.bodyval = 0;
|
||||
msg.flush_callback = target_if_vdev_mgr_rsp_flush_cb;
|
||||
|
||||
if (scheduler_post_message(QDF_MODULE_ID_TARGET_IF,
|
||||
QDF_MODULE_ID_TARGET_IF,
|
||||
QDF_MODULE_ID_SYS, &msg) ==
|
||||
QDF_STATUS_SUCCESS)
|
||||
return;
|
||||
|
||||
mlme_err("Could not enqueue timer to timer queue");
|
||||
if (vdev)
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_VDEV_TARGET_IF_ID);
|
||||
}
|
||||
|
||||
void target_if_vdev_mgr_rsp_timer_mgmt_cb(void *arg)
|
||||
{
|
||||
target_if_vdev_mgr_rsp_cb_mc_ctx(arg);
|
||||
}
|
||||
#else
|
||||
void target_if_vdev_mgr_rsp_timer_mgmt_cb(void *arg)
|
||||
{
|
||||
target_if_vdev_mgr_rsp_timer_cb(arg);
|
||||
}
|
||||
#endif
|
||||
|
||||
static int target_if_vdev_mgr_start_response_handler(
|
||||
ol_scn_t scn,
|
||||
uint8_t *data,
|
||||
|
Reference in New Issue
Block a user