qcacmn: Move legacy serialization flush cmds to common api
Move legacy serialization flush cmds to common api Change-Id: I7a1a46a615c90e112c91efc4aec1461023b6ad5c CRs-Fixed: 2452518
This commit is contained in:
@@ -620,4 +620,28 @@ void wlan_serialization_purge_all_pdev_cmd(struct wlan_objmgr_pdev *pdev);
|
||||
* Return: void
|
||||
*/
|
||||
void wlan_serialization_purge_all_cmd(struct wlan_objmgr_psoc *psoc);
|
||||
|
||||
/**
|
||||
* wlan_serialization_purge_all_pending_cmd_by_vdev_id() - Purge all pending
|
||||
* scan and non scan commands for vdev id
|
||||
* @pdev: pointer to pdev
|
||||
* @vdev_id: vdev_id variable
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
void wlan_serialization_purge_all_pending_cmd_by_vdev_id(
|
||||
struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t vdev_id);
|
||||
|
||||
/**
|
||||
* wlan_serialization_purge_all_scan_cmd_by_vdev_id() - Purge all pending/active
|
||||
* scan commands for vdev id
|
||||
* @pdev: pointer to pdev
|
||||
* @vdev_id: vdev_id variable
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
void wlan_serialization_purge_all_scan_cmd_by_vdev_id(
|
||||
struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t vdev_id);
|
||||
#endif
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2017-2018 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2017-2019 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
@@ -123,74 +123,4 @@ uint32_t wlan_serialization_get_active_list_count(struct wlan_objmgr_psoc *psoc,
|
||||
uint32_t wlan_serialization_get_pending_list_count(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t is_cmd_from_pending_scan_queue);
|
||||
|
||||
/**
|
||||
* wlan_serialization_purge_cmd_list_by_vdev_id() - Purge given list
|
||||
* @psoc: pointer to soc
|
||||
* @vdev_id: vdev_id variable
|
||||
* @purge_scan_active_queue: whether to purge active scan queue
|
||||
* @purge_scan_pending_queue: whether to purge pending scan queue
|
||||
* @purge_nonscan_active_queue: whether to purge active nonscan queue
|
||||
* @purge_nonscan_pending_queue: whether to purge pending nonscan queue
|
||||
* @purge_all_queues: whether to purge all queues.
|
||||
*
|
||||
* This API will purge queue based given flags and vdev_id. If vdev
|
||||
* is invalid then it will return immediately. If correct vdev_id is given then
|
||||
* it will purge the queues per vdev.
|
||||
*
|
||||
* Example:
|
||||
* 1) If you want to purge scan active queue for particular vdev then
|
||||
* provide correct vdev_id value and purge_scan_active_queue flag set to
|
||||
* TRUE and rest of the flags set to false.
|
||||
* 2) If you want to purge all queues for particular vdev then provide
|
||||
* correct vdev_id value and set purge_all_queues flag set to TRUE and rest
|
||||
* of the flags set to false.
|
||||
* 3) If you want to purge active scan and active non-scan queues to be flushed
|
||||
* then set purge_scan_active_queue and purge_nonscan_active_queue flags to
|
||||
* be set TRUE and rest of the flags to be FALSE
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
void wlan_serialization_purge_cmd_list_by_vdev_id(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t vdev_id,
|
||||
bool purge_scan_active_queue,
|
||||
bool purge_scan_pending_queue,
|
||||
bool purge_nonscan_active_queue,
|
||||
bool purge_nonscan_pending_queue,
|
||||
bool purge_all_queues);
|
||||
/**
|
||||
* wlan_serialization_purge_cmd_list() - Purge given list
|
||||
* @psoc: pointer to soc
|
||||
* @vdev: pointer to vdev object
|
||||
* @purge_scan_active_queue: whether to purge active scan queue
|
||||
* @purge_scan_pending_queue: whether to purge pending scan queue
|
||||
* @purge_nonscan_active_queue: whether to purge active nonscan queue
|
||||
* @purge_nonscan_pending_queue: whether to purge pending nonscan queue
|
||||
* @purge_all_queues: whether to purge all queues.
|
||||
*
|
||||
* This API will purge queue based given flags and vdev object. If vdev
|
||||
* is null then it will purge the queues per pdev by default.
|
||||
* If vdev is given then it will purge the queues per vdev.
|
||||
*
|
||||
* Example:
|
||||
* 1) If you want to purge scan active queue for particular vdev then
|
||||
* provide correct vdev object and purge_scan_active_queue flag set to
|
||||
* TRUE and rest of the flags set to false.
|
||||
* 2) If you want to purge all queues for particular vdev then provide
|
||||
* correct vdev object value & set purge_all_queues flag set to TRUE and rest
|
||||
* of the flags set to false.
|
||||
* 3) If you want to purge active scan and active non-scan queues to be flushed
|
||||
* for pdev then set purge_scan_active_queue and purge_nonscan_active_queue
|
||||
* flags to be set TRUE and rest of the flags to be FALSE with vdev object
|
||||
* passed as NULL.
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
void wlan_serialization_purge_cmd_list(struct wlan_objmgr_psoc *psoc,
|
||||
struct wlan_objmgr_vdev *vdev,
|
||||
bool purge_scan_active_queue,
|
||||
bool purge_scan_pending_queue,
|
||||
bool purge_nonscan_active_queue,
|
||||
bool purge_nonscan_pending_queue,
|
||||
bool purge_all_queues);
|
||||
#endif
|
||||
|
@@ -822,3 +822,69 @@ void wlan_serialization_purge_all_cmd(struct wlan_objmgr_psoc *psoc)
|
||||
wlan_ser_purge_pdev_cmd_cb, NULL, 1,
|
||||
WLAN_SERIALIZATION_ID);
|
||||
}
|
||||
|
||||
void wlan_serialization_purge_all_pending_cmd_by_vdev_id(
|
||||
struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t vdev_id)
|
||||
{
|
||||
struct wlan_objmgr_vdev *vdev;
|
||||
struct wlan_ser_pdev_obj *ser_pdev_obj;
|
||||
|
||||
if (!pdev) {
|
||||
ser_err("Invalid pdev");
|
||||
return;
|
||||
}
|
||||
|
||||
ser_pdev_obj = wlan_serialization_get_pdev_obj(pdev);
|
||||
if (!ser_pdev_obj) {
|
||||
ser_err("invalid ser_pdev_obj");
|
||||
return;
|
||||
}
|
||||
|
||||
vdev = wlan_objmgr_get_vdev_by_id_from_pdev(pdev, vdev_id,
|
||||
WLAN_SERIALIZATION_ID);
|
||||
if (!vdev) {
|
||||
ser_err("Invalid vdev");
|
||||
return;
|
||||
}
|
||||
|
||||
wlan_ser_cancel_scan_cmd(ser_pdev_obj, pdev, vdev, NULL,
|
||||
WLAN_SER_CMD_SCAN, false);
|
||||
wlan_ser_cancel_non_scan_cmd(ser_pdev_obj, pdev, vdev, NULL,
|
||||
WLAN_SER_CMD_NONSCAN, false);
|
||||
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_SERIALIZATION_ID);
|
||||
}
|
||||
|
||||
void wlan_serialization_purge_all_scan_cmd_by_vdev_id(
|
||||
struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t vdev_id)
|
||||
{
|
||||
struct wlan_objmgr_vdev *vdev;
|
||||
struct wlan_ser_pdev_obj *ser_pdev_obj;
|
||||
|
||||
if (!pdev) {
|
||||
ser_err("Invalid pdev");
|
||||
return;
|
||||
}
|
||||
|
||||
ser_pdev_obj = wlan_serialization_get_pdev_obj(pdev);
|
||||
if (!ser_pdev_obj) {
|
||||
ser_err("invalid ser_pdev_obj");
|
||||
return;
|
||||
}
|
||||
|
||||
vdev = wlan_objmgr_get_vdev_by_id_from_pdev(pdev, vdev_id,
|
||||
WLAN_SERIALIZATION_ID);
|
||||
if (!vdev) {
|
||||
ser_err("Invalid vdev");
|
||||
return;
|
||||
}
|
||||
|
||||
wlan_ser_cancel_scan_cmd(ser_pdev_obj, pdev, vdev, NULL,
|
||||
WLAN_SER_CMD_SCAN, false);
|
||||
wlan_ser_cancel_scan_cmd(ser_pdev_obj, pdev, vdev, NULL,
|
||||
WLAN_SER_CMD_SCAN, true);
|
||||
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_SERIALIZATION_ID);
|
||||
}
|
||||
|
@@ -343,94 +343,3 @@ wlan_serialization_get_pending_list_next_node_using_psoc(
|
||||
return wlan_serialization_get_list_next_node(queue, prev_cmd,
|
||||
ser_pdev_obj);
|
||||
}
|
||||
|
||||
void wlan_serialization_purge_cmd_list_by_vdev_id(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t vdev_id, bool purge_scan_active_queue,
|
||||
bool purge_scan_pending_queue,
|
||||
bool purge_nonscan_active_queue,
|
||||
bool purge_nonscan_pending_queue,
|
||||
bool purge_all_queues)
|
||||
{
|
||||
struct wlan_objmgr_vdev *vdev;
|
||||
|
||||
vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id,
|
||||
WLAN_SERIALIZATION_ID);
|
||||
if (!vdev) {
|
||||
ser_err("Invalid vdev");
|
||||
return;
|
||||
}
|
||||
wlan_serialization_purge_cmd_list(
|
||||
psoc, vdev, purge_scan_active_queue,
|
||||
purge_scan_pending_queue,
|
||||
purge_nonscan_active_queue,
|
||||
purge_nonscan_pending_queue,
|
||||
purge_all_queues);
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_SERIALIZATION_ID);
|
||||
}
|
||||
|
||||
void wlan_serialization_purge_cmd_list(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
struct wlan_objmgr_vdev *vdev,
|
||||
bool purge_scan_active_queue,
|
||||
bool purge_scan_pending_queue,
|
||||
bool purge_nonscan_active_queue,
|
||||
bool purge_nonscan_pending_queue,
|
||||
bool purge_all_queues)
|
||||
{
|
||||
struct wlan_ser_pdev_obj *ser_pdev_obj;
|
||||
struct wlan_objmgr_pdev *pdev = NULL;
|
||||
|
||||
if (!psoc) {
|
||||
ser_err("Invalid psoc");
|
||||
return;
|
||||
}
|
||||
ser_pdev_obj = wlan_serialization_get_pdev_priv_obj_using_psoc(psoc);
|
||||
if (!ser_pdev_obj) {
|
||||
ser_err("Invalid ser_pdev_obj");
|
||||
return;
|
||||
}
|
||||
|
||||
pdev = wlan_serialization_get_first_pdev(psoc);
|
||||
if (!pdev) {
|
||||
ser_err("Invalid pdev");
|
||||
return;
|
||||
}
|
||||
|
||||
if (purge_all_queues || purge_scan_active_queue) {
|
||||
wlan_ser_cancel_scan_cmd(ser_pdev_obj,
|
||||
pdev,
|
||||
vdev,
|
||||
NULL,
|
||||
WLAN_SER_CMD_SCAN,
|
||||
true);
|
||||
}
|
||||
if (purge_all_queues || purge_scan_pending_queue) {
|
||||
wlan_ser_cancel_scan_cmd(ser_pdev_obj,
|
||||
pdev,
|
||||
vdev,
|
||||
NULL,
|
||||
WLAN_SER_CMD_SCAN,
|
||||
false);
|
||||
}
|
||||
if (purge_all_queues || purge_nonscan_active_queue) {
|
||||
wlan_ser_cancel_non_scan_cmd(
|
||||
ser_pdev_obj,
|
||||
pdev, vdev,
|
||||
NULL,
|
||||
WLAN_SER_CMD_NONSCAN,
|
||||
true);
|
||||
}
|
||||
if (purge_all_queues || purge_nonscan_pending_queue) {
|
||||
wlan_ser_cancel_non_scan_cmd(
|
||||
ser_pdev_obj,
|
||||
pdev, vdev,
|
||||
NULL,
|
||||
WLAN_SER_CMD_NONSCAN,
|
||||
false);
|
||||
}
|
||||
wlan_objmgr_pdev_release_ref(pdev, WLAN_SERIALIZATION_ID);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user