qcacmn: Add handlers for scan queue in scheduler core

Add scheduler message handler function for QDF_MODULE_ID_SCAN queue.

Also post scan beacon/probe frames and scan events to SCAN queue instead
of TARGET_IF queue.

Change-Id: I94e3ea2f0eb5c9592f5cfcd91738778fa65ba815
CRs-Fixed: 2214554
This commit is contained in:
Vignesh Viswanathan
2018-04-04 17:41:55 +05:30
committed by nshrivas
parent 1fe9fd414a
commit 6ecd284e5a
4 changed files with 35 additions and 30 deletions

View File

@@ -1,8 +1,5 @@
/*
* Copyright (c) 2014-2017 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
* Copyright (c) 2014-2018 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
@@ -19,11 +16,6 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
/*
* This file was originally distributed by Qualcomm Atheros, Inc.
* under proprietary terms before Copyright ownership was assigned
* to the Linux Foundation.
*/
#if !defined(__SCHEDULER_API_H)
#define __SCHEDULER_API_H
@@ -242,6 +234,15 @@ QDF_STATUS scheduler_os_if_mq_handler(struct scheduler_msg *msg);
*/
QDF_STATUS scheduler_timer_q_mq_handler(struct scheduler_msg *msg);
/**
* scheduler_scan_mq_handler() - top level message queue handler for
* scan queue
* @msg: pointer to actual message being handled
*
* Return: QDF status
*/
QDF_STATUS scheduler_scan_mq_handler(struct scheduler_msg *msg);
/**
* scheduler_register_wma_legacy_handler() - register legacy wma handler
* @callback: legacy wma handler to be called for WMA messages

View File

@@ -1,9 +1,6 @@
/*
* Copyright (c) 2014-2018 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all
@@ -19,11 +16,6 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
/*
* This file was originally distributed by Qualcomm Atheros, Inc.
* under proprietary terms before Copyright ownership was assigned
* to the Linux Foundation.
*/
#if !defined(__SCHEDULER_CORE_H)
#define __SCHEDULER_CORE_H
@@ -37,7 +29,7 @@
#else
#define SCHEDULER_CORE_MAX_MESSAGES 2000
#endif
#define SCHEDULER_NUMBER_OF_MSG_QUEUE 5
#define SCHEDULER_NUMBER_OF_MSG_QUEUE 6
#define SCHEDULER_WRAPPER_MAX_FAIL_COUNT (SCHEDULER_CORE_MAX_MESSAGES * 3)
#define SCHEDULER_WATCHDOG_TIMEOUT (10 * 1000) /* 10s */

View File

@@ -1,9 +1,6 @@
/*
* Copyright (c) 2014-2018 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all
@@ -19,12 +16,6 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
/*
* This file was originally distributed by Qualcomm Atheros, Inc.
* under proprietary terms before Copyright ownership was assigned
* to the Linux Foundation.
*/
#include <scheduler_api.h>
#include <scheduler_core.h>
#include <qdf_atomic.h>
@@ -531,6 +522,27 @@ QDF_STATUS scheduler_timer_q_mq_handler(struct scheduler_msg *msg)
}
}
QDF_STATUS scheduler_scan_mq_handler(struct scheduler_msg *msg)
{
QDF_STATUS (*scan_q_msg_handler)(struct scheduler_msg *);
if (NULL == msg) {
sched_err("Msg is NULL");
return QDF_STATUS_E_FAILURE;
}
scan_q_msg_handler = msg->callback;
if (NULL == scan_q_msg_handler) {
sched_err("Msg callback is NULL");
QDF_ASSERT(0);
return QDF_STATUS_E_FAILURE;
}
scan_q_msg_handler(msg);
return QDF_STATUS_SUCCESS;
}
QDF_STATUS scheduler_register_wma_legacy_handler(scheduler_msg_process_fn_t
wma_callback)
{

View File

@@ -211,7 +211,7 @@ tgt_scan_event_handler(struct wlan_objmgr_psoc *psoc,
msg.callback = scm_scan_event_handler;
msg.flush_callback = scm_scan_event_flush_callback;
status = scheduler_post_msg(QDF_MODULE_ID_TARGET_IF, &msg);
status = scheduler_post_msg(QDF_MODULE_ID_SCAN, &msg);
if (QDF_IS_STATUS_ERROR(status)) {
wlan_objmgr_vdev_release_ref(event_info->vdev, WLAN_SCAN_ID);
}
@@ -272,11 +272,11 @@ QDF_STATUS tgt_scan_bcn_probe_rx_callback(struct wlan_objmgr_psoc *psoc,
msg.callback = scm_handle_bcn_probe;
msg.flush_callback = scm_bcn_probe_flush_callback;
status = scheduler_post_msg(QDF_MODULE_ID_TARGET_IF, &msg);
status = scheduler_post_msg(QDF_MODULE_ID_SCAN, &msg);
if (!QDF_IS_STATUS_SUCCESS(status)) {
wlan_objmgr_psoc_release_ref(psoc, WLAN_SCAN_ID);
scm_err("failed to post to QDF_MODULE_ID_TARGET_IF");
scm_err("failed to post to QDF_MODULE_ID_SCAN");
qdf_mem_free(bcn->rx_data);
qdf_mem_free(bcn);
qdf_nbuf_free(buf);