qcacmn: Introduce new api to disable the vdev serialization queue
MCL presently sends the vdev delete to firmware via serialization, with a new requirement vdev delete cannot be sent via serialization. So, disable the serialization for the vdev before sending the vdev delete to firmware. Change-Id: Ieffccaf815eff7627d39b0191a7be121e85965fd CRs-Fixed: 2566113
This commit is contained in:

کامیت شده توسط
nshrivas

والد
a95ba1312a
کامیت
5377f457a1
@@ -701,4 +701,14 @@ void wlan_serialization_purge_all_pending_cmd_by_vdev_id(
|
||||
void wlan_serialization_purge_all_scan_cmd_by_vdev_id(
|
||||
struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t vdev_id);
|
||||
|
||||
/**
|
||||
* wlan_ser_vdev_queue_disable -Disable vdev specific serialization queue
|
||||
* @vdev: Vdev Object
|
||||
*
|
||||
* This function disables the serialization for the vdev queue
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS wlan_ser_vdev_queue_disable(struct wlan_objmgr_vdev *vdev);
|
||||
#endif
|
||||
|
@@ -910,3 +910,47 @@ void wlan_serialization_purge_all_scan_cmd_by_vdev_id(
|
||||
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_SERIALIZATION_ID);
|
||||
}
|
||||
|
||||
QDF_STATUS wlan_ser_vdev_queue_disable(struct wlan_objmgr_vdev *vdev)
|
||||
{
|
||||
struct wlan_objmgr_pdev *pdev;
|
||||
struct wlan_ser_vdev_obj *ser_vdev_obj;
|
||||
struct wlan_serialization_vdev_queue *vdev_queue;
|
||||
struct wlan_ser_pdev_obj *ser_pdev_obj;
|
||||
struct wlan_serialization_pdev_queue *pdev_q;
|
||||
|
||||
pdev = wlan_vdev_get_pdev(vdev);
|
||||
if (!pdev) {
|
||||
ser_err("invalid PDEV object");
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
ser_pdev_obj = wlan_serialization_get_pdev_obj(pdev);
|
||||
if (!ser_pdev_obj) {
|
||||
ser_err("invalid ser_pdev_obj");
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
ser_vdev_obj = wlan_serialization_get_vdev_obj(vdev);
|
||||
if (!ser_vdev_obj) {
|
||||
ser_err("invalid ser_vdev_obj");
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
pdev_q = &ser_pdev_obj->pdev_q[SER_PDEV_QUEUE_COMP_NON_SCAN];
|
||||
|
||||
vdev_queue = wlan_serialization_get_vdev_queue_obj(
|
||||
ser_vdev_obj, WLAN_SER_CMD_NONSCAN);
|
||||
if (!vdev_queue) {
|
||||
ser_err("invalid vdev_queue object");
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
wlan_serialization_acquire_lock(&pdev_q->pdev_queue_lock);
|
||||
vdev_queue->queue_disable = true;
|
||||
wlan_serialization_release_lock(&pdev_q->pdev_queue_lock);
|
||||
ser_info("Disabling the serialization for vdev:%d",
|
||||
wlan_vdev_get_id(vdev));
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
مرجع در شماره جدید
Block a user