diff --git a/umac/cmn_services/serialization/src/wlan_serialization_api.c b/umac/cmn_services/serialization/src/wlan_serialization_api.c index 6cf61b7cf3cb..1fb6f52163b0 100644 --- a/umac/cmn_services/serialization/src/wlan_serialization_api.c +++ b/umac/cmn_services/serialization/src/wlan_serialization_api.c @@ -37,14 +37,39 @@ bool wlan_serialization_is_cmd_present_in_pending_queue( struct wlan_serialization_command *cmd) { bool status = false; + struct wlan_objmgr_pdev *pdev; + struct wlan_ser_pdev_obj *ser_pdev_obj; + struct wlan_serialization_pdev_queue *pdev_queue; if (!cmd) { ser_err("invalid cmd"); goto error; } + pdev = wlan_serialization_get_pdev_from_cmd(cmd); + if (!pdev) { + ser_err("invalid pdev"); + goto error; + } + + ser_pdev_obj = wlan_serialization_get_pdev_obj(pdev); + if (!ser_pdev_obj) { + ser_err("invalid ser pdev obj"); + goto error; + } + + pdev_queue = wlan_serialization_get_pdev_queue_obj(ser_pdev_obj, + cmd->cmd_type); + if (!pdev_queue) { + ser_err("pdev_queue is invalid"); + goto error; + } + + wlan_serialization_acquire_lock(&pdev_queue->pdev_queue_lock); + status = wlan_serialization_is_cmd_present_queue(cmd, false); + wlan_serialization_release_lock(&pdev_queue->pdev_queue_lock); error: return status; } @@ -53,16 +78,41 @@ bool wlan_serialization_is_cmd_present_in_active_queue( struct wlan_objmgr_psoc *psoc, struct wlan_serialization_command *cmd) { - bool status; + bool status = false; + struct wlan_objmgr_pdev *pdev; + struct wlan_ser_pdev_obj *ser_pdev_obj; + struct wlan_serialization_pdev_queue *pdev_queue; if (!cmd) { ser_err("invalid cmd"); - status = false; goto error; } + pdev = wlan_serialization_get_pdev_from_cmd(cmd); + if (!pdev) { + ser_err("invalid pdev"); + goto error; + } + + ser_pdev_obj = wlan_serialization_get_pdev_obj(pdev); + if (!ser_pdev_obj) { + ser_err("invalid ser pdev obj"); + goto error; + } + + pdev_queue = wlan_serialization_get_pdev_queue_obj(ser_pdev_obj, + cmd->cmd_type); + if (!pdev_queue) { + ser_err("pdev_queue is invalid"); + goto error; + } + + wlan_serialization_acquire_lock(&pdev_queue->pdev_queue_lock); + status = wlan_serialization_is_cmd_present_queue(cmd, true); + wlan_serialization_release_lock(&pdev_queue->pdev_queue_lock); + error: return status; }