qcacmn: Fix incompatible function pointer assignment

Fix incompatible function pointer assignment.
Define a wrapper around mc timer callbacks to
make them compatible with standard scheduler
message callback function signatures.

Change-Id: I07829680d1758ccbd53e8b1fe10b0e30e100a2c6
CRs-Fixed: 3305719
This commit is contained in:
sandhu
2022-10-19 17:53:49 -07:00
committed by Madan Koyyalamudi
父節點 db19d5296d
當前提交 901120c066
共有 4 個文件被更改,包括 153 次插入42 次删除

查看文件

@@ -194,7 +194,7 @@ void target_if_vdev_mgr_rsp_timer_cb(void *arg)
}
#ifdef SERIALIZE_VDEV_RESP
static QDF_STATUS target_if_vdev_mgr_rsp_flush_cb(struct scheduler_msg *msg)
static QDF_STATUS target_if_vdev_mgr_rsp_flush_cb_mc(struct scheduler_msg *msg)
{
struct vdev_response_timer *vdev_rsp;
struct wlan_objmgr_psoc *psoc;
@@ -204,7 +204,7 @@ static QDF_STATUS target_if_vdev_mgr_rsp_flush_cb(struct scheduler_msg *msg)
return QDF_STATUS_E_INVAL;
}
vdev_rsp = msg->bodyptr;
vdev_rsp = scheduler_qdf_mc_timer_deinit_return_data_ptr(msg->bodyptr);
if (!vdev_rsp) {
mlme_err("vdev response timer is NULL");
return QDF_STATUS_E_INVAL;
@@ -228,6 +228,7 @@ target_if_vdev_mgr_rsp_cb_mc_ctx(void *arg)
struct scheduler_msg msg = {0};
struct vdev_response_timer *vdev_rsp = arg;
struct wlan_objmgr_psoc *psoc;
struct sched_qdf_mc_timer_cb_wrapper *mc_timer_wrapper;
psoc = vdev_rsp->psoc;
if (!psoc) {
@@ -238,17 +239,19 @@ target_if_vdev_mgr_rsp_cb_mc_ctx(void *arg)
msg.type = SYS_MSG_ID_MC_TIMER;
msg.reserved = SYS_MSG_COOKIE;
/* msg.callback will explicitly cast back to qdf_mc_timer_callback_t
* in scheduler_timer_q_mq_handler.
* but in future we do not want to introduce more this kind of
* typecast by properly using QDF MC timer for MCC from get go in
* common code.
*/
msg.callback =
(scheduler_msg_process_fn_t)target_if_vdev_mgr_rsp_timer_cb;
msg.bodyptr = arg;
mc_timer_wrapper = scheduler_qdf_mc_timer_init(
target_if_vdev_mgr_rsp_timer_cb,
arg);
if (!mc_timer_wrapper) {
mlme_err("failed to allocate sched_qdf_mc_timer_cb_wrapper");
return;
}
msg.callback = scheduler_qdf_mc_timer_callback_t_wrapper;
msg.bodyptr = mc_timer_wrapper;
msg.bodyval = 0;
msg.flush_callback = target_if_vdev_mgr_rsp_flush_cb;
msg.flush_callback = target_if_vdev_mgr_rsp_flush_cb_mc;
if (scheduler_post_message(QDF_MODULE_ID_TARGET_IF,
QDF_MODULE_ID_TARGET_IF,
@@ -257,6 +260,7 @@ target_if_vdev_mgr_rsp_cb_mc_ctx(void *arg)
return;
mlme_err("Could not enqueue timer to timer queue");
qdf_mem_free(mc_timer_wrapper);
if (psoc)
wlan_objmgr_psoc_release_ref(psoc, WLAN_PSOC_TARGET_IF_ID);
}