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:
Abhishek Ambure
2019-08-09 17:54:43 +05:30
committed by nshrivas
parent c42d8036c9
commit 47e709a62b

View File

@@ -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,