summaryrefslogtreecommitdiff
path: root/umac
diff options
context:
space:
mode:
authorOm Prakash Tripathi <otripath@codeaurora.org>2018-02-08 15:23:20 +0530
committersnandini <snandini@codeaurora.org>2018-02-13 03:55:25 -0800
commit339dc26b217746a64234170679f91f2f5d140e70 (patch)
treead16d9319d3ccbb265dd0fa9d52a63210f45aef6 /umac
parent726ea124452d59c300de50957c58876fbe5f5755 (diff)
downloadqca-wfi-host-cmn-339dc26b217746a64234170679f91f2f5d140e70.tar.gz
qcacmn: Enable scan command time out if not disabled explicitly
1. Enable scan command time out for all commands if not disabled explicitly. 2. Remove QDF_BUG() for no serialization command buffers Change-Id: I5357211ef6bc44f8ebd4b8acaa56a12f691fa46d CRs-Fixed: 2175843
Diffstat (limited to 'umac')
-rw-r--r--umac/cmn_services/serialization/src/wlan_serialization_enqueue.c1
-rw-r--r--umac/scan/core/src/wlan_scan_main.h2
-rw-r--r--umac/scan/core/src/wlan_scan_manager.c17
-rw-r--r--umac/scan/dispatcher/inc/wlan_scan_ucfg_api.h19
-rw-r--r--umac/scan/dispatcher/src/wlan_scan_ucfg_api.c29
5 files changed, 58 insertions, 10 deletions
diff --git a/umac/cmn_services/serialization/src/wlan_serialization_enqueue.c b/umac/cmn_services/serialization/src/wlan_serialization_enqueue.c
index e568679dd..1af3c1aa4 100644
--- a/umac/cmn_services/serialization/src/wlan_serialization_enqueue.c
+++ b/umac/cmn_services/serialization/src/wlan_serialization_enqueue.c
@@ -47,7 +47,6 @@ wlan_serialization_add_cmd_to_given_queue(qdf_list_t *queue,
}
if (qdf_list_empty(&ser_pdev_obj->global_cmd_pool_list)) {
serialization_err("list is full, can't add more");
- QDF_BUG(0);
return WLAN_SER_CMD_DENIED_LIST_FULL;
}
if (qdf_list_remove_front(&ser_pdev_obj->global_cmd_pool_list,
diff --git a/umac/scan/core/src/wlan_scan_main.h b/umac/scan/core/src/wlan_scan_main.h
index 40e6e0b08..aa1ac5f1b 100644
--- a/umac/scan/core/src/wlan_scan_main.h
+++ b/umac/scan/core/src/wlan_scan_main.h
@@ -435,6 +435,7 @@ struct scan_cb {
* @ie_whitelist: default ie whitelist attrs
* @bt_a2dp_enabled: if bt a2dp is enabled
* @miracast_enabled: miracast enabled
+ * @disable_timeout: command timeout disabled
* @scan_start_request_buff: buffer used to pass
* scan config to event handlers
*/
@@ -453,6 +454,7 @@ struct wlan_scan_obj {
struct probe_req_whitelist_attr ie_whitelist;
bool bt_a2dp_enabled;
bool miracast_enabled;
+ bool disable_timeout;
struct scan_start_request scan_start_request_buff;
};
diff --git a/umac/scan/core/src/wlan_scan_manager.c b/umac/scan/core/src/wlan_scan_manager.c
index 97a8db5e3..56bb18bb6 100644
--- a/umac/scan/core/src/wlan_scan_manager.c
+++ b/umac/scan/core/src/wlan_scan_manager.c
@@ -371,7 +371,7 @@ scm_scan_start_req(struct scheduler_msg *msg)
struct wlan_serialization_command cmd = {0, };
enum wlan_serialization_status ser_cmd_status;
struct scan_start_request *req;
- struct wlan_objmgr_psoc *psoc;
+ struct wlan_scan_obj *scan_obj;
QDF_STATUS status = QDF_STATUS_SUCCESS;
if (!msg) {
@@ -386,6 +386,12 @@ scm_scan_start_req(struct scheduler_msg *msg)
}
req = msg->bodyptr;
+ scan_obj = wlan_vdev_get_scan_obj(req->vdev);
+ if (!scan_obj) {
+ scm_debug("Couldn't find scan object");
+ return QDF_STATUS_E_NULL_VALUE;
+ }
+
cmd.cmd_type = WLAN_SER_CMD_SCAN;
cmd.cmd_id = req->scan_req.scan_id;
cmd.cmd_cb = (wlan_serialization_cmd_callback)
@@ -397,15 +403,8 @@ scm_scan_start_req(struct scheduler_msg *msg)
SCAN_TIMEOUT_GRACE_PERIOD;
cmd.vdev = req->vdev;
- psoc = wlan_vdev_get_psoc(cmd.vdev);
- /*
- * Temp Hack to disable Serialization Timer
- * Modified Serialization module to ignore timeout of 0 value
- */
- if (wlan_is_emulation_platform(wlan_psoc_get_nif_phy_version(psoc))) {
+ if (scan_obj->disable_timeout)
cmd.cmd_timeout_duration = 0;
- scm_info("[SCAN-EMULATION]: Disabling Serialization Timer for Emulation\n");
- }
scm_info("req: 0x%pK, reqid: %d, scanid: %d, vdevid: %d",
req, req->scan_req.scan_req_id, req->scan_req.scan_id,
diff --git a/umac/scan/dispatcher/inc/wlan_scan_ucfg_api.h b/umac/scan/dispatcher/inc/wlan_scan_ucfg_api.h
index 838264d82..ed0c86b21 100644
--- a/umac/scan/dispatcher/inc/wlan_scan_ucfg_api.h
+++ b/umac/scan/dispatcher/inc/wlan_scan_ucfg_api.h
@@ -200,6 +200,25 @@ QDF_STATUS ucfg_scan_set_miracast(
struct wlan_objmgr_psoc *psoc, bool enable);
/**
+ * ucfg_scan_set_disable_timeout() - Public API to disable/enable scan timeout
+ * @psoc: psoc on which scan timeout need to be disabled
+ * @disable: disable scan timeout if true else enable scan timeout
+ *
+ * Return: QDF_STATUS.
+ */
+QDF_STATUS
+ucfg_scan_set_disable_timeout(struct wlan_objmgr_psoc *psoc, bool disable);
+
+/**
+ * ucfg_scan_get_disable_timeout() - Public API to get if scan timeout
+ * is enabled or disabled
+ * @psoc: psoc on which scan timeout status need to be checked
+ *
+ * Return: true if timeout is diaabled else false.
+ */
+bool ucfg_scan_get_disable_timeout(struct wlan_objmgr_psoc *psoc);
+
+/**
* ucfg_scan_set_wide_band_scan() - Public API to disable/enable wide band scan
* @pdev: psoc on which scans need to be disabled
* @enable: enable wide band scan if @enable is true, disable otherwise
diff --git a/umac/scan/dispatcher/src/wlan_scan_ucfg_api.c b/umac/scan/dispatcher/src/wlan_scan_ucfg_api.c
index c65138f81..6ae96cf93 100644
--- a/umac/scan/dispatcher/src/wlan_scan_ucfg_api.c
+++ b/umac/scan/dispatcher/src/wlan_scan_ucfg_api.c
@@ -950,6 +950,34 @@ QDF_STATUS ucfg_scan_set_miracast(
}
QDF_STATUS
+ucfg_scan_set_disable_timeout(struct wlan_objmgr_psoc *psoc, bool disable)
+{
+ struct wlan_scan_obj *scan_obj;
+
+ scan_obj = wlan_psoc_get_scan_obj(psoc);
+ if (!scan_obj) {
+ scm_err("Failed to get scan object");
+ return QDF_STATUS_E_NULL_VALUE;
+ }
+ scan_obj->disable_timeout = disable;
+ scm_debug("set disable_timeout to %d", scan_obj->disable_timeout);
+
+ return QDF_STATUS_SUCCESS;
+}
+
+bool ucfg_scan_get_disable_timeout(struct wlan_objmgr_psoc *psoc)
+{
+ struct wlan_scan_obj *scan_obj;
+
+ scan_obj = wlan_psoc_get_scan_obj(psoc);
+ if (!scan_obj) {
+ scm_err("Failed to get scan object");
+ return false;
+ }
+ return scan_obj->disable_timeout;
+}
+
+QDF_STATUS
ucfg_scan_set_wide_band_scan(struct wlan_objmgr_pdev *pdev, bool enable)
{
uint8_t pdev_id;
@@ -1281,6 +1309,7 @@ static QDF_STATUS
wlan_scan_global_init(struct wlan_scan_obj *scan_obj)
{
scan_obj->enable_scan = true;
+ scan_obj->disable_timeout = false;
scan_obj->scan_def.active_dwell = SCAN_ACTIVE_DWELL_TIME;
scan_obj->scan_def.passive_dwell = SCAN_PASSIVE_DWELL_TIME;
scan_obj->scan_def.max_rest_time = SCAN_MAX_REST_TIME;