summaryrefslogtreecommitdiff
path: root/scheduler
diff options
context:
space:
mode:
authorKrunal Soni <ksoni@codeaurora.org>2017-02-01 09:47:28 -0800
committerqcabuildsw <qcabuildsw@localhost>2017-02-07 15:02:27 -0800
commitdce49ecf59c14c92bd781c4b572279dfb68173a3 (patch)
treebed5aa42ae67ed8f80a7fc21c4eb21a21d182325 /scheduler
parentba5d80ca81e9b55acfc315f7881aef9a5511d788 (diff)
downloadqca-wfi-host-cmn-dce49ecf59c14c92bd781c4b572279dfb68173a3.tar.gz
qcacmn: Deregister legacy & target queue callbacks upon scheduler down
Driver is missing couple of deregister handler while bringing down the scheduler. Change-Id: I99fe6e9a5d3cac800154945e41e707ebb7ee6396 CRs-Fixed: 2001133
Diffstat (limited to 'scheduler')
-rw-r--r--scheduler/inc/scheduler_api.h14
-rw-r--r--scheduler/src/scheduler_api.c30
2 files changed, 43 insertions, 1 deletions
diff --git a/scheduler/inc/scheduler_api.h b/scheduler/inc/scheduler_api.h
index 07c782a51..feb7d6337 100644
--- a/scheduler/inc/scheduler_api.h
+++ b/scheduler/inc/scheduler_api.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014-2016 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2014-2017 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -236,6 +236,18 @@ QDF_STATUS scheduler_register_wma_legacy_handler(scheduler_msg_process_fn_t
QDF_STATUS scheduler_register_sys_legacy_handler(scheduler_msg_process_fn_t
callback);
/**
+ * scheduler_deregister_sys_legacy_handler() - deregister legacy sys handler
+ *
+ * Return: QDF status
+ */
+QDF_STATUS scheduler_deregister_sys_legacy_handler(void);
+/**
+ * scheduler_deregister_wma_legacy_handler() - deregister legacy wma handler
+ *
+ * Return: QDF status
+ */
+QDF_STATUS scheduler_deregister_wma_legacy_handler(void);
+/**
* scheduler_mc_timer_callback() - timer callback, gets called at time out
* @data: unsigned long, holds the timer object.
*
diff --git a/scheduler/src/scheduler_api.c b/scheduler/src/scheduler_api.c
index 14138d0e6..7d5dcda9d 100644
--- a/scheduler/src/scheduler_api.c
+++ b/scheduler/src/scheduler_api.c
@@ -480,6 +480,36 @@ QDF_STATUS scheduler_register_sys_legacy_handler(scheduler_msg_process_fn_t
return QDF_STATUS_SUCCESS;
}
+QDF_STATUS scheduler_deregister_wma_legacy_handler(void)
+{
+ struct scheduler_ctx *sched_ctx = scheduler_get_context();
+
+ if (NULL == sched_ctx) {
+ QDF_TRACE(QDF_MODULE_ID_SCHEDULER,
+ QDF_TRACE_LEVEL_ERROR, FL("scheduler context is null"));
+ return QDF_STATUS_E_FAILURE;
+ }
+
+ sched_ctx->legacy_wma_handler = NULL;
+
+ return QDF_STATUS_SUCCESS;
+}
+
+QDF_STATUS scheduler_deregister_sys_legacy_handler(void)
+{
+ struct scheduler_ctx *sched_ctx = scheduler_get_context();
+
+ if (NULL == sched_ctx) {
+ QDF_TRACE(QDF_MODULE_ID_SCHEDULER,
+ QDF_TRACE_LEVEL_ERROR, FL("scheduler context is null"));
+ return QDF_STATUS_E_FAILURE;
+ }
+
+ sched_ctx->legacy_sys_handler = NULL;
+
+ return QDF_STATUS_SUCCESS;
+}
+
void scheduler_mc_timer_callback(unsigned long data)
{
qdf_mc_timer_t *timer = (qdf_mc_timer_t *)data;