qcacmn: Flush target_if response timers for vdev
Flush target_if response timers for vdev for given psoc. This API used to flush target_if response timers for vdev while wlan driver shutdown. Change-Id: I1700893cdf0b0eb9d3419505c88c71fc86da0dab CRs-Fixed: 2529284
This commit is contained in:

committed by
nshrivas

parent
21116dd976
commit
f1feeae916
@@ -51,6 +51,34 @@ static inline bool target_if_vdev_mgr_is_panic_allowed(void)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* target_if_timer_flush_handler() - API to handle target_if timer flush
|
||||||
|
* request
|
||||||
|
* @pdev: pointer to pdev object
|
||||||
|
* @object: pointer to vdev object
|
||||||
|
* @arg: pointer to arguments passed
|
||||||
|
*
|
||||||
|
* This is a target_if timer flush handler used to flush target_if response
|
||||||
|
* timer. This API used while wlan driver shut down.
|
||||||
|
*
|
||||||
|
* Return: none
|
||||||
|
*/
|
||||||
|
void target_if_timer_flush_handler(struct wlan_objmgr_pdev *pdev,
|
||||||
|
void *object,
|
||||||
|
void *arg);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* target_if_flush_vdev_timers() - API to flush target_if response timers
|
||||||
|
* for vdev
|
||||||
|
* @pdev: pointer to pdev object
|
||||||
|
*
|
||||||
|
* This API is used to flush target_if response timer. This API used while
|
||||||
|
* wlan driver shut down.
|
||||||
|
*
|
||||||
|
* Return: none
|
||||||
|
*/
|
||||||
|
void target_if_flush_vdev_timers(struct wlan_objmgr_pdev *pdev);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* target_if_vdev_mgr_delete_response_handler() - API to handle vdev delete
|
* target_if_vdev_mgr_delete_response_handler() - API to handle vdev delete
|
||||||
* response
|
* response
|
||||||
|
@@ -150,6 +150,39 @@ static void target_if_vdev_mgr_rsp_timer_cb(void *arg)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void target_if_timer_flush_handler(struct wlan_objmgr_pdev *pdev,
|
||||||
|
void *object,
|
||||||
|
void *arg)
|
||||||
|
{
|
||||||
|
struct vdev_response_timer *vdev_rsp;
|
||||||
|
struct wlan_lmac_if_mlme_rx_ops *rx_ops;
|
||||||
|
struct wlan_objmgr_psoc *psoc;
|
||||||
|
struct wlan_objmgr_vdev *vdev = object;
|
||||||
|
|
||||||
|
psoc = wlan_pdev_get_psoc(pdev);
|
||||||
|
if (!psoc) {
|
||||||
|
mlme_err("PSOC is NULL");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
rx_ops = target_if_vdev_mgr_get_rx_ops(psoc);
|
||||||
|
if (!rx_ops || !rx_ops->vdev_mgr_get_response_timer_info) {
|
||||||
|
mlme_err("No Rx Ops");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
vdev_rsp = rx_ops->vdev_mgr_get_response_timer_info(vdev);
|
||||||
|
if (qdf_timer_sync_cancel(&vdev_rsp->rsp_timer))
|
||||||
|
target_if_vdev_mgr_rsp_timer_cb(vdev);
|
||||||
|
}
|
||||||
|
|
||||||
|
void target_if_flush_vdev_timers(struct wlan_objmgr_pdev *pdev)
|
||||||
|
{
|
||||||
|
wlan_objmgr_pdev_iterate_obj_list(pdev, WLAN_VDEV_OP,
|
||||||
|
target_if_timer_flush_handler,
|
||||||
|
NULL, true, WLAN_VDEV_TARGET_IF_ID);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef SERIALIZE_VDEV_RESP_TIMER
|
#ifdef SERIALIZE_VDEV_RESP_TIMER
|
||||||
static QDF_STATUS target_if_vdev_mgr_rsp_flush_cb(struct scheduler_msg *msg)
|
static QDF_STATUS target_if_vdev_mgr_rsp_flush_cb(struct scheduler_msg *msg)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user