|
@@ -26,6 +26,9 @@
|
|
|
#include "wlan_serialization_main_i.h"
|
|
|
#include "wlan_serialization_utils_i.h"
|
|
|
#include "wlan_objmgr_vdev_obj.h"
|
|
|
+#include "wlan_serialization_internal_i.h"
|
|
|
+#include "wlan_serialization_scan_i.h"
|
|
|
+#include "wlan_serialization_non_scan_i.h"
|
|
|
|
|
|
extern struct serialization_legacy_callback ser_legacy_cb;
|
|
|
|
|
@@ -36,7 +39,7 @@ static struct wlan_objmgr_pdev *wlan_serialization_get_first_pdev(
|
|
|
uint8_t i = 0;
|
|
|
|
|
|
if (!psoc) {
|
|
|
- serialization_err("invalid psoc");
|
|
|
+ ser_err("invalid psoc");
|
|
|
return NULL;
|
|
|
}
|
|
|
for (i = 0; i < WLAN_UMAC_MAX_PDEVS; i++) {
|
|
@@ -49,27 +52,27 @@ static struct wlan_objmgr_pdev *wlan_serialization_get_first_pdev(
|
|
|
return pdev;
|
|
|
}
|
|
|
|
|
|
-static struct wlan_serialization_pdev_priv_obj *
|
|
|
+static struct wlan_ser_pdev_obj *
|
|
|
wlan_serialization_get_pdev_priv_obj_using_psoc(struct wlan_objmgr_psoc *psoc)
|
|
|
{
|
|
|
struct wlan_objmgr_pdev *pdev = NULL;
|
|
|
- struct wlan_serialization_pdev_priv_obj *ser_pdev_obj;
|
|
|
+ struct wlan_ser_pdev_obj *ser_pdev_obj;
|
|
|
|
|
|
if (!psoc) {
|
|
|
- serialization_err("invalid psoc");
|
|
|
+ ser_err("invalid psoc");
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
pdev = wlan_serialization_get_first_pdev(psoc);
|
|
|
if (!pdev) {
|
|
|
- serialization_err("invalid pdev");
|
|
|
+ ser_err("invalid pdev");
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
- ser_pdev_obj = wlan_serialization_get_pdev_priv_obj(pdev);
|
|
|
+ ser_pdev_obj = wlan_serialization_get_pdev_obj(pdev);
|
|
|
wlan_objmgr_pdev_release_ref(pdev, WLAN_SERIALIZATION_ID);
|
|
|
if (!ser_pdev_obj) {
|
|
|
- serialization_err("invalid ser_pdev_obj");
|
|
|
+ ser_err("invalid ser_pdev_obj");
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
@@ -80,24 +83,27 @@ uint32_t wlan_serialization_get_active_list_count(
|
|
|
struct wlan_objmgr_psoc *psoc,
|
|
|
uint8_t is_cmd_from_active_scan_queue)
|
|
|
{
|
|
|
- struct wlan_serialization_pdev_priv_obj *ser_pdev_obj;
|
|
|
+ struct wlan_ser_pdev_obj *ser_pdev_obj;
|
|
|
qdf_list_t *queue;
|
|
|
+ struct wlan_serialization_pdev_queue *pdev_queue;
|
|
|
uint32_t count;
|
|
|
|
|
|
ser_pdev_obj = wlan_serialization_get_pdev_priv_obj_using_psoc(psoc);
|
|
|
if (!ser_pdev_obj) {
|
|
|
- serialization_err("invalid ser_pdev_obj");
|
|
|
+ ser_err("invalid ser_pdev_obj");
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
- wlan_serialization_acquire_lock(ser_pdev_obj);
|
|
|
if (is_cmd_from_active_scan_queue)
|
|
|
- queue = &ser_pdev_obj->active_scan_list;
|
|
|
+ pdev_queue = &ser_pdev_obj->pdev_q[SER_PDEV_QUEUE_COMP_SCAN];
|
|
|
else
|
|
|
- queue = &ser_pdev_obj->active_list;
|
|
|
+ pdev_queue =
|
|
|
+ &ser_pdev_obj->pdev_q[SER_PDEV_QUEUE_COMP_NON_SCAN];
|
|
|
|
|
|
+ wlan_serialization_acquire_lock(&pdev_queue->pdev_queue_lock);
|
|
|
+ queue = &pdev_queue->active_list;
|
|
|
count = qdf_list_size(queue);
|
|
|
- wlan_serialization_release_lock(ser_pdev_obj);
|
|
|
+ wlan_serialization_release_lock(&pdev_queue->pdev_queue_lock);
|
|
|
|
|
|
return count;
|
|
|
}
|
|
@@ -106,24 +112,26 @@ uint32_t wlan_serialization_get_pending_list_count(
|
|
|
struct wlan_objmgr_psoc *psoc,
|
|
|
uint8_t is_cmd_from_pending_scan_queue)
|
|
|
{
|
|
|
- struct wlan_serialization_pdev_priv_obj *ser_pdev_obj;
|
|
|
+ struct wlan_ser_pdev_obj *ser_pdev_obj;
|
|
|
qdf_list_t *queue;
|
|
|
uint32_t count = 0;
|
|
|
+ struct wlan_serialization_pdev_queue *pdev_queue;
|
|
|
|
|
|
ser_pdev_obj = wlan_serialization_get_pdev_priv_obj_using_psoc(psoc);
|
|
|
if (!ser_pdev_obj) {
|
|
|
- serialization_err("invalid ser_pdev_obj");
|
|
|
+ ser_err("invalid ser_pdev_obj");
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
- wlan_serialization_acquire_lock(ser_pdev_obj);
|
|
|
if (is_cmd_from_pending_scan_queue)
|
|
|
- queue = &ser_pdev_obj->pending_scan_list;
|
|
|
+ pdev_queue = &ser_pdev_obj->pdev_q[SER_PDEV_QUEUE_COMP_SCAN];
|
|
|
else
|
|
|
- queue = &ser_pdev_obj->pending_list;
|
|
|
-
|
|
|
+ pdev_queue =
|
|
|
+ &ser_pdev_obj->pdev_q[SER_PDEV_QUEUE_COMP_NON_SCAN];
|
|
|
+ queue = &pdev_queue->pending_list;
|
|
|
+ wlan_serialization_acquire_lock(&pdev_queue->pdev_queue_lock);
|
|
|
count = qdf_list_size(queue);
|
|
|
- wlan_serialization_release_lock(ser_pdev_obj);
|
|
|
+ wlan_serialization_release_lock(&pdev_queue->pdev_queue_lock);
|
|
|
|
|
|
return count;
|
|
|
}
|
|
@@ -133,38 +141,41 @@ wlan_serialization_peek_head_active_cmd_using_psoc(
|
|
|
struct wlan_objmgr_psoc *psoc,
|
|
|
uint8_t is_cmd_from_active_scan_queue)
|
|
|
{
|
|
|
- struct wlan_serialization_pdev_priv_obj *ser_pdev_obj;
|
|
|
+ struct wlan_ser_pdev_obj *ser_pdev_obj;
|
|
|
struct wlan_serialization_command_list *cmd_list = NULL;
|
|
|
struct wlan_serialization_command *cmd = NULL;
|
|
|
qdf_list_node_t *nnode = NULL;
|
|
|
qdf_list_t *queue;
|
|
|
+ struct wlan_serialization_pdev_queue *pdev_queue;
|
|
|
|
|
|
ser_pdev_obj = wlan_serialization_get_pdev_priv_obj_using_psoc(psoc);
|
|
|
if (!ser_pdev_obj) {
|
|
|
- serialization_err("invalid ser_pdev_obj");
|
|
|
+ ser_err("invalid ser_pdev_obj");
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
if (is_cmd_from_active_scan_queue)
|
|
|
- queue = &ser_pdev_obj->active_scan_list;
|
|
|
+ pdev_queue = &ser_pdev_obj->pdev_q[SER_PDEV_QUEUE_COMP_SCAN];
|
|
|
else
|
|
|
- queue = &ser_pdev_obj->active_list;
|
|
|
- if (wlan_serialization_list_empty(queue, ser_pdev_obj)) {
|
|
|
- serialization_err("Empty Queue");
|
|
|
+ pdev_queue =
|
|
|
+ &ser_pdev_obj->pdev_q[SER_PDEV_QUEUE_COMP_NON_SCAN];
|
|
|
+ queue = &pdev_queue->active_list;
|
|
|
+ if (wlan_serialization_list_empty(queue)) {
|
|
|
+ ser_err("Empty Queue");
|
|
|
goto end;
|
|
|
}
|
|
|
|
|
|
if (QDF_STATUS_SUCCESS != wlan_serialization_get_cmd_from_queue(queue,
|
|
|
- &nnode, ser_pdev_obj)) {
|
|
|
- serialization_err("Can't get command from queue");
|
|
|
+ &nnode)) {
|
|
|
+ ser_err("Can't get command from queue");
|
|
|
goto end;
|
|
|
}
|
|
|
|
|
|
cmd_list = qdf_container_of(nnode,
|
|
|
- struct wlan_serialization_command_list, node);
|
|
|
+ struct wlan_serialization_command_list, pdev_node);
|
|
|
cmd = &cmd_list->cmd;
|
|
|
- serialization_debug("cmd_type[%d], cmd_id[%d]",
|
|
|
- cmd_list->cmd.cmd_type, cmd_list->cmd.cmd_id);
|
|
|
+ ser_debug("cmd_type[%d], cmd_id[%d]",
|
|
|
+ cmd_list->cmd.cmd_type, cmd_list->cmd.cmd_id);
|
|
|
|
|
|
end:
|
|
|
return cmd;
|
|
@@ -175,36 +186,40 @@ wlan_serialization_peek_head_pending_cmd_using_psoc(
|
|
|
struct wlan_objmgr_psoc *psoc,
|
|
|
uint8_t is_cmd_from_pending_scan_queue)
|
|
|
{
|
|
|
- struct wlan_serialization_pdev_priv_obj *ser_pdev_obj;
|
|
|
+ struct wlan_ser_pdev_obj *ser_pdev_obj;
|
|
|
struct wlan_serialization_command_list *cmd_list = NULL;
|
|
|
struct wlan_serialization_command *cmd = NULL;
|
|
|
qdf_list_node_t *nnode = NULL;
|
|
|
qdf_list_t *queue;
|
|
|
+ struct wlan_serialization_pdev_queue *pdev_queue;
|
|
|
|
|
|
ser_pdev_obj = wlan_serialization_get_pdev_priv_obj_using_psoc(psoc);
|
|
|
if (!ser_pdev_obj) {
|
|
|
- serialization_err("invalid ser_pdev_obj");
|
|
|
+ ser_err("invalid ser_pdev_obj");
|
|
|
return NULL;
|
|
|
}
|
|
|
if (is_cmd_from_pending_scan_queue)
|
|
|
- queue = &ser_pdev_obj->pending_scan_list;
|
|
|
+ pdev_queue = &ser_pdev_obj->pdev_q[SER_PDEV_QUEUE_COMP_SCAN];
|
|
|
else
|
|
|
- queue = &ser_pdev_obj->pending_list;
|
|
|
- if (wlan_serialization_list_empty(queue, ser_pdev_obj)) {
|
|
|
- serialization_err("Empty Queue");
|
|
|
+ pdev_queue =
|
|
|
+ &ser_pdev_obj->pdev_q[SER_PDEV_QUEUE_COMP_NON_SCAN];
|
|
|
+ queue = &pdev_queue->pending_list;
|
|
|
+ if (wlan_serialization_list_empty(queue)) {
|
|
|
+ ser_err("Empty Queue");
|
|
|
goto end;
|
|
|
}
|
|
|
|
|
|
- if (QDF_STATUS_SUCCESS != wlan_serialization_get_cmd_from_queue(queue,
|
|
|
- &nnode, ser_pdev_obj)) {
|
|
|
- serialization_err("Can't get command from queue");
|
|
|
+ if (QDF_STATUS_SUCCESS != wlan_serialization_get_cmd_from_queue(
|
|
|
+ queue,
|
|
|
+ &nnode)) {
|
|
|
+ ser_err("Can't get command from queue");
|
|
|
goto end;
|
|
|
}
|
|
|
cmd_list = qdf_container_of(nnode,
|
|
|
- struct wlan_serialization_command_list, node);
|
|
|
+ struct wlan_serialization_command_list, pdev_node);
|
|
|
cmd = &cmd_list->cmd;
|
|
|
- serialization_debug("cmd_type[%d] cmd_id[%d]matched",
|
|
|
- cmd_list->cmd.cmd_type, cmd_list->cmd.cmd_id);
|
|
|
+ ser_debug("cmd_type[%d] cmd_id[%d]matched",
|
|
|
+ cmd_list->cmd.cmd_type, cmd_list->cmd.cmd_id);
|
|
|
|
|
|
end:
|
|
|
return cmd;
|
|
@@ -213,7 +228,7 @@ end:
|
|
|
static struct wlan_serialization_command*
|
|
|
wlan_serialization_get_list_next_node(qdf_list_t *queue,
|
|
|
struct wlan_serialization_command *cmd,
|
|
|
- struct wlan_serialization_pdev_priv_obj *ser_pdev_obj)
|
|
|
+ struct wlan_ser_pdev_obj *ser_pdev_obj)
|
|
|
{
|
|
|
struct wlan_serialization_command_list *cmd_list = NULL;
|
|
|
qdf_list_node_t *pnode = NULL, *nnode = NULL;
|
|
@@ -222,19 +237,17 @@ wlan_serialization_get_list_next_node(qdf_list_t *queue,
|
|
|
QDF_STATUS status;
|
|
|
struct wlan_serialization_command *ret_cmd = NULL;
|
|
|
|
|
|
- i = wlan_serialization_list_size(queue, ser_pdev_obj);
|
|
|
+ i = wlan_serialization_list_size(queue);
|
|
|
if (i == 0) {
|
|
|
- serialization_err("Empty Queue");
|
|
|
+ ser_err("Empty Queue");
|
|
|
return NULL;
|
|
|
}
|
|
|
while (i--) {
|
|
|
if (!cmd_list)
|
|
|
- status = wlan_serialization_peek_front(queue, &nnode,
|
|
|
- ser_pdev_obj);
|
|
|
+ status = wlan_serialization_peek_front(queue, &nnode);
|
|
|
else
|
|
|
status = wlan_serialization_peek_next(queue, pnode,
|
|
|
- &nnode,
|
|
|
- ser_pdev_obj);
|
|
|
+ &nnode);
|
|
|
|
|
|
if ((status != QDF_STATUS_SUCCESS) || found)
|
|
|
break;
|
|
@@ -243,26 +256,29 @@ wlan_serialization_get_list_next_node(qdf_list_t *queue,
|
|
|
cmd_list = qdf_container_of(
|
|
|
nnode,
|
|
|
struct wlan_serialization_command_list,
|
|
|
- node);
|
|
|
- if (wlan_serialization_match_cmd_id_type(nnode, cmd,
|
|
|
- ser_pdev_obj) &&
|
|
|
- wlan_serialization_match_cmd_vdev(nnode,
|
|
|
- cmd->vdev)) {
|
|
|
+ pdev_node);
|
|
|
+ if (wlan_serialization_match_cmd_id_type(
|
|
|
+ nnode, cmd, WLAN_SER_PDEV_NODE) &&
|
|
|
+ wlan_serialization_match_cmd_vdev(nnode,
|
|
|
+ cmd->vdev,
|
|
|
+ WLAN_SER_PDEV_NODE)) {
|
|
|
found = true;
|
|
|
}
|
|
|
nnode = NULL;
|
|
|
}
|
|
|
if (nnode && found) {
|
|
|
- cmd_list = qdf_container_of(nnode,
|
|
|
- struct wlan_serialization_command_list, node);
|
|
|
+ cmd_list = qdf_container_of(
|
|
|
+ nnode,
|
|
|
+ struct wlan_serialization_command_list,
|
|
|
+ pdev_node);
|
|
|
ret_cmd = &cmd_list->cmd;
|
|
|
}
|
|
|
if (!found) {
|
|
|
- serialization_err("Can't locate next command");
|
|
|
+ ser_err("Can't locate next command");
|
|
|
return NULL;
|
|
|
}
|
|
|
if (!nnode) {
|
|
|
- serialization_debug("next node is empty, so fine");
|
|
|
+ ser_debug("next node is empty, so fine");
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
@@ -275,25 +291,27 @@ wlan_serialization_get_active_list_next_node_using_psoc(
|
|
|
struct wlan_serialization_command *prev_cmd,
|
|
|
uint8_t is_cmd_for_active_scan_queue)
|
|
|
{
|
|
|
- struct wlan_serialization_pdev_priv_obj *ser_pdev_obj;
|
|
|
+ struct wlan_ser_pdev_obj *ser_pdev_obj;
|
|
|
qdf_list_t *queue;
|
|
|
+ struct wlan_serialization_pdev_queue *pdev_queue;
|
|
|
|
|
|
if (!prev_cmd) {
|
|
|
- serialization_err("invalid prev_cmd");
|
|
|
+ ser_err("invalid prev_cmd");
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
ser_pdev_obj = wlan_serialization_get_pdev_priv_obj_using_psoc(psoc);
|
|
|
if (!ser_pdev_obj) {
|
|
|
- serialization_err("invalid ser_pdev_obj");
|
|
|
+ ser_err("invalid ser_pdev_obj");
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
if (is_cmd_for_active_scan_queue)
|
|
|
- queue = &ser_pdev_obj->active_scan_list;
|
|
|
+ pdev_queue = &ser_pdev_obj->pdev_q[SER_PDEV_QUEUE_COMP_SCAN];
|
|
|
else
|
|
|
- queue = &ser_pdev_obj->active_list;
|
|
|
-
|
|
|
+ pdev_queue =
|
|
|
+ &ser_pdev_obj->pdev_q[SER_PDEV_QUEUE_COMP_NON_SCAN];
|
|
|
+ queue = &pdev_queue->active_list;
|
|
|
return wlan_serialization_get_list_next_node(queue, prev_cmd,
|
|
|
ser_pdev_obj);
|
|
|
}
|
|
@@ -304,24 +322,26 @@ wlan_serialization_get_pending_list_next_node_using_psoc(
|
|
|
struct wlan_serialization_command *prev_cmd,
|
|
|
uint8_t is_cmd_for_pending_scan_queue)
|
|
|
{
|
|
|
- struct wlan_serialization_pdev_priv_obj *ser_pdev_obj;
|
|
|
+ struct wlan_ser_pdev_obj *ser_pdev_obj;
|
|
|
qdf_list_t *queue;
|
|
|
+ struct wlan_serialization_pdev_queue *pdev_queue;
|
|
|
|
|
|
if (!prev_cmd) {
|
|
|
- serialization_err("invalid prev_cmd");
|
|
|
+ ser_err("invalid prev_cmd");
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
ser_pdev_obj = wlan_serialization_get_pdev_priv_obj_using_psoc(psoc);
|
|
|
if (!ser_pdev_obj) {
|
|
|
- serialization_err("invalid ser_pdev_obj");
|
|
|
+ ser_err("invalid ser_pdev_obj");
|
|
|
return NULL;
|
|
|
}
|
|
|
if (is_cmd_for_pending_scan_queue)
|
|
|
- queue = &ser_pdev_obj->pending_scan_list;
|
|
|
+ pdev_queue = &ser_pdev_obj->pdev_q[SER_PDEV_QUEUE_COMP_SCAN];
|
|
|
else
|
|
|
- queue = &ser_pdev_obj->pending_list;
|
|
|
-
|
|
|
+ pdev_queue =
|
|
|
+ &ser_pdev_obj->pdev_q[SER_PDEV_QUEUE_COMP_NON_SCAN];
|
|
|
+ queue = &pdev_queue->pending_list;
|
|
|
return wlan_serialization_get_list_next_node(queue, prev_cmd,
|
|
|
ser_pdev_obj);
|
|
|
}
|
|
@@ -332,7 +352,8 @@ void wlan_serialization_legacy_init_callback(void)
|
|
|
wlan_serialization_purge_cmd_list;
|
|
|
}
|
|
|
|
|
|
-void wlan_serialization_purge_cmd_list_by_vdev_id(struct wlan_objmgr_psoc *psoc,
|
|
|
+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,
|
|
@@ -344,10 +365,11 @@ void wlan_serialization_purge_cmd_list_by_vdev_id(struct wlan_objmgr_psoc *psoc,
|
|
|
vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id,
|
|
|
WLAN_SERIALIZATION_ID);
|
|
|
if (!vdev) {
|
|
|
- serialization_err("Invalid vdev");
|
|
|
+ ser_err("Invalid vdev");
|
|
|
return;
|
|
|
}
|
|
|
- wlan_serialization_purge_cmd_list(psoc, vdev, purge_scan_active_queue,
|
|
|
+ wlan_serialization_purge_cmd_list(
|
|
|
+ psoc, vdev, purge_scan_active_queue,
|
|
|
purge_scan_pending_queue,
|
|
|
purge_nonscan_active_queue,
|
|
|
purge_nonscan_pending_queue,
|
|
@@ -355,7 +377,8 @@ void wlan_serialization_purge_cmd_list_by_vdev_id(struct wlan_objmgr_psoc *psoc,
|
|
|
wlan_objmgr_vdev_release_ref(vdev, WLAN_SERIALIZATION_ID);
|
|
|
}
|
|
|
|
|
|
-void wlan_serialization_purge_cmd_list(struct wlan_objmgr_psoc *psoc,
|
|
|
+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,
|
|
@@ -364,28 +387,28 @@ void wlan_serialization_purge_cmd_list(struct wlan_objmgr_psoc *psoc,
|
|
|
bool purge_all_queues)
|
|
|
{
|
|
|
struct wlan_serialization_timer *ser_timer;
|
|
|
- struct wlan_serialization_psoc_priv_obj *psoc_ser_obj;
|
|
|
- struct wlan_serialization_pdev_priv_obj *ser_pdev_obj;
|
|
|
+ struct wlan_ser_psoc_obj *psoc_ser_obj;
|
|
|
+ struct wlan_ser_pdev_obj *ser_pdev_obj;
|
|
|
struct wlan_objmgr_pdev *pdev = NULL;
|
|
|
uint32_t i = 0;
|
|
|
|
|
|
if (!psoc) {
|
|
|
- serialization_err("Invalid psoc");
|
|
|
+ ser_err("Invalid psoc");
|
|
|
return;
|
|
|
}
|
|
|
ser_pdev_obj = wlan_serialization_get_pdev_priv_obj_using_psoc(psoc);
|
|
|
if (!ser_pdev_obj) {
|
|
|
- serialization_err("Invalid ser_pdev_obj");
|
|
|
+ ser_err("Invalid ser_pdev_obj");
|
|
|
return;
|
|
|
}
|
|
|
- psoc_ser_obj = wlan_serialization_get_psoc_priv_obj(psoc);
|
|
|
+ psoc_ser_obj = wlan_serialization_get_psoc_obj(psoc);
|
|
|
if (!psoc_ser_obj) {
|
|
|
- serialization_err("Invalid psoc_ser_obj");
|
|
|
+ ser_err("Invalid psoc_ser_obj");
|
|
|
return;
|
|
|
}
|
|
|
pdev = wlan_serialization_get_first_pdev(psoc);
|
|
|
if (!pdev) {
|
|
|
- serialization_err("Invalid pdev");
|
|
|
+ ser_err("Invalid pdev");
|
|
|
return;
|
|
|
}
|
|
|
for (i = 0; psoc_ser_obj->max_active_cmds > i; i++) {
|
|
@@ -400,7 +423,7 @@ void wlan_serialization_purge_cmd_list(struct wlan_objmgr_psoc *psoc,
|
|
|
* de-activate all the timers.
|
|
|
*/
|
|
|
if (!purge_all_queues && purge_scan_active_queue &&
|
|
|
- (ser_timer->cmd->cmd_type >= WLAN_SER_CMD_NONSCAN))
|
|
|
+ (ser_timer->cmd->cmd_type >= WLAN_SER_CMD_NONSCAN))
|
|
|
continue;
|
|
|
/*
|
|
|
* if request is to purge active nonscan then don't de-activate
|
|
@@ -408,37 +431,49 @@ void wlan_serialization_purge_cmd_list(struct wlan_objmgr_psoc *psoc,
|
|
|
* de-activate all the timers.
|
|
|
*/
|
|
|
if (!purge_all_queues && purge_nonscan_active_queue &&
|
|
|
- (ser_timer->cmd->cmd_type < WLAN_SER_CMD_NONSCAN))
|
|
|
+ (ser_timer->cmd->cmd_type < WLAN_SER_CMD_NONSCAN))
|
|
|
continue;
|
|
|
|
|
|
if (QDF_STATUS_SUCCESS !=
|
|
|
- wlan_serialization_find_and_stop_timer(psoc,
|
|
|
+ wlan_serialization_find_and_stop_timer(
|
|
|
+ psoc,
|
|
|
ser_timer->cmd))
|
|
|
- serialization_err("some error in stopping timer");
|
|
|
+ ser_err("some error in stopping timer");
|
|
|
}
|
|
|
if (purge_all_queues || purge_scan_active_queue) {
|
|
|
- /* sending active queue as pending queue to leverage the API */
|
|
|
- wlan_serialization_remove_all_cmd_from_queue(
|
|
|
- &ser_pdev_obj->active_scan_list, ser_pdev_obj,
|
|
|
- pdev, vdev, NULL, false);
|
|
|
+ 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_serialization_remove_all_cmd_from_queue(
|
|
|
- &ser_pdev_obj->pending_scan_list, ser_pdev_obj,
|
|
|
- pdev, vdev, NULL, false);
|
|
|
+ wlan_ser_cancel_scan_cmd(ser_pdev_obj,
|
|
|
+ pdev,
|
|
|
+ vdev,
|
|
|
+ NULL,
|
|
|
+ WLAN_SER_CMD_SCAN,
|
|
|
+ false);
|
|
|
}
|
|
|
if (purge_all_queues || purge_nonscan_active_queue) {
|
|
|
- /* sending active queue as pending queue to leverage the API */
|
|
|
- wlan_serialization_remove_all_cmd_from_queue(
|
|
|
- &ser_pdev_obj->active_list, ser_pdev_obj,
|
|
|
- pdev, vdev, NULL, false);
|
|
|
+ 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_serialization_remove_all_cmd_from_queue(
|
|
|
- &ser_pdev_obj->pending_list, ser_pdev_obj,
|
|
|
- pdev, vdev, NULL, false);
|
|
|
+ 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;
|
|
|
}
|
|
|
+
|