Merge "qcacmn: Add flush callback for scan module"

This commit is contained in:
Linux Build Service Account 2017-06-11 06:23:44 -07:00 • committed by Gerrit - the friendly Code Review server
commit ebeeeef745
4 changed files with 117 additions and 0 deletions

View file

@ -600,3 +600,75 @@ exit:
return QDF_STATUS_SUCCESS;
}
QDF_STATUS scm_scan_event_flush_callback(struct scheduler_msg *msg)
{
struct wlan_objmgr_vdev *vdev;
struct scan_event_info *event_info;
if (!msg || !msg->bodyptr) {
scm_err("msg: %p, bodyptr: %p", msg, msg->bodyptr);
return QDF_STATUS_E_NULL_VALUE;
}
event_info = msg->bodyptr;
vdev = event_info->vdev;
/* free event info memory */
qdf_mem_free(event_info);
wlan_objmgr_vdev_release_ref(vdev, WLAN_SCAN_ID);
return QDF_STATUS_SUCCESS;
}
QDF_STATUS scm_bcn_probe_flush_callback(struct scheduler_msg *msg)
{
struct scan_bcn_probe_event *bcn;
bcn = msg->bodyptr;
if (!bcn) {
scm_err("bcn is NULL");
return QDF_STATUS_E_NULL_VALUE;
}
if (bcn->psoc)
wlan_objmgr_psoc_release_ref(bcn->psoc, WLAN_SCAN_ID);
if (bcn->rx_data)
qdf_mem_free(bcn->rx_data);
if (bcn->buf)
qdf_nbuf_free(bcn->buf);
qdf_mem_free(bcn);
return QDF_STATUS_SUCCESS;
}
QDF_STATUS scm_scan_start_flush_callback(struct scheduler_msg *msg)
{
struct scan_start_request *req;
if (!msg || !msg->bodyptr) {
scm_err("msg: 0x%p, bodyptr: 0x%p", msg, msg->bodyptr);
return QDF_STATUS_E_NULL_VALUE;
}
req = msg->bodyptr;
wlan_objmgr_vdev_release_ref(req->vdev, WLAN_SCAN_ID);
scm_scan_free_scan_request_mem(req);
return QDF_STATUS_SUCCESS;
}
QDF_STATUS scm_scan_cancel_flush_callback(struct scheduler_msg *msg)
{
struct scan_cancel_request *req;
if (!msg || !msg->bodyptr) {
scm_err("msg: 0x%p, bodyptr: 0x%p", msg, msg->bodyptr);
return QDF_STATUS_E_NULL_VALUE;
}
req = msg->bodyptr;
wlan_objmgr_vdev_release_ref(req->vdev, WLAN_SCAN_ID);
/* Free cancel request memory */
qdf_mem_free(req);
return QDF_STATUS_SUCCESS;
}

View file

@ -85,4 +85,44 @@ QDF_STATUS scm_scan_event_handler(struct scheduler_msg *msg);
*/
QDF_STATUS scm_scan_free_scan_request_mem(struct scan_start_request *req);
/**
* scm_scan_event_flush_callback() - flush scan event
* @msg: scheduler message object containing scan event
*
* This function call is invoked when scheduler thread is going down
*
* Return: QDF_STATUS
*/
QDF_STATUS scm_scan_event_flush_callback(struct scheduler_msg *msg);
/**
* scm_bcn_probe_flush_callback() - flush beacon/probe response
* @msg: scheduler message object containing scan event
*
* This function call is invoked when scheduler thread is going down
*
* Return: QDF_STATUS
*/
QDF_STATUS scm_bcn_probe_flush_callback(struct scheduler_msg *msg);
/**
* scm_scan_start_flush_callback() - flush scan start request
* @msg: scheduler message object containing scan event
*
* This function call is invoked when scheduler thread is going down
*
* Return: QDF_STATUS
*/
QDF_STATUS scm_scan_start_flush_callback(struct scheduler_msg *msg);
/**
* scm_scan_cancel_flush_callback() - flush scan cancel request
* @msg: scheduler message object containing scan event
*
* This function call is invoked when scheduler thread is going down
*
* Return: QDF_STATUS
*/
QDF_STATUS scm_scan_cancel_flush_callback(struct scheduler_msg *msg);
#endif

View file

@ -209,6 +209,7 @@ tgt_scan_event_handler(struct wlan_objmgr_psoc *psoc,
}
msg.bodyptr = event_info;
msg.callback = scm_scan_event_handler;
msg.flush_callback = scm_scan_event_flush_callback;
status = scheduler_post_msg(QDF_MODULE_ID_TARGET_IF, &msg);
if (QDF_IS_STATUS_ERROR(status)) {
@ -269,6 +270,7 @@ QDF_STATUS tgt_scan_bcn_probe_rx_callback(struct wlan_objmgr_psoc *psoc,
msg.bodyptr = bcn;
msg.callback = scm_handle_bcn_probe;
msg.flush_callback = scm_bcn_probe_flush_callback;
status = scheduler_post_msg(QDF_MODULE_ID_TARGET_IF, &msg);
@ -279,6 +281,7 @@ QDF_STATUS tgt_scan_bcn_probe_rx_callback(struct wlan_objmgr_psoc *psoc,
qdf_mem_free(bcn);
qdf_nbuf_free(buf);
}
return status;
}

View file

@ -358,6 +358,7 @@ ucfg_scan_start(struct scan_start_request *req)
msg.bodyptr = req;
msg.callback = scm_scan_start_req;
msg.flush_callback = scm_scan_start_flush_callback;
status = scheduler_post_msg(QDF_MODULE_ID_OS_IF, &msg);
if (QDF_IS_STATUS_ERROR(status)) {
@ -393,6 +394,7 @@ ucfg_scan_cancel(struct scan_cancel_request *req)
msg.bodyptr = req;
msg.callback = scm_scan_cancel_req;
msg.flush_callback = scm_scan_cancel_flush_callback;
status = scheduler_post_msg(QDF_MODULE_ID_OS_IF, &msg);
if (QDF_IS_STATUS_ERROR(status)) {