From 72fb06b560cad52c95ffbc49faab6744d64e7b36 Mon Sep 17 00:00:00 2001 From: Amit Mehta Date: Mon, 8 Nov 2021 14:38:00 +0530 Subject: [PATCH] qcacld-3.0: Enable network queue directly in case of roaming Currently in the case of roaming between latency-critical connection and non-latency critical connection we are scheduling work to update features and after feature update we are enabling network queues which is introducing a delay in enabling queues due to work schedule. To Fix the issue enable network queue in the current context and schedule work to update features. Change-Id: Idba5b81a58aaf2bd47d80da1d17ad0acf9939071 CRs-Fixed: 3070688 --- core/hdd/src/wlan_hdd_cm_connect.c | 9 +++++---- core/hdd/src/wlan_hdd_main.c | 18 +++++------------- 2 files changed, 10 insertions(+), 17 deletions(-) diff --git a/core/hdd/src/wlan_hdd_cm_connect.c b/core/hdd/src/wlan_hdd_cm_connect.c index 03db41a882..4075175b69 100644 --- a/core/hdd/src/wlan_hdd_cm_connect.c +++ b/core/hdd/src/wlan_hdd_cm_connect.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2012-2021, The Linux Foundation. All rights reserved. + * Copyright (c) 2021 Qualcomm Innovation Center, Inc. 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 above @@ -304,11 +305,11 @@ void hdd_cm_netif_queue_enable(struct hdd_adapter *adapter) adapter->vdev_id); qdf_queue_work(0, hdd_ctx->adapter_ops_wq, &adapter->netdev_features_update_work); - } else { - wlan_hdd_netif_queue_control(adapter, - WLAN_WAKE_ALL_NETIF_QUEUE, - WLAN_CONTROL_PATH); } + + wlan_hdd_netif_queue_control(adapter, + WLAN_WAKE_ALL_NETIF_QUEUE, + WLAN_CONTROL_PATH); } void hdd_cm_clear_pmf_stats(struct hdd_adapter *adapter) diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c index 20a5eb8246..80ab72ae8a 100644 --- a/core/hdd/src/wlan_hdd_main.c +++ b/core/hdd/src/wlan_hdd_main.c @@ -10705,24 +10705,16 @@ __hdd_adapter_param_update_work(struct hdd_adapter *adapter) { /** * This check is needed in case the work got scheduled after the - * interface got disconnected. During disconnection, the network queues - * are paused and hence should not be, mistakenly, restarted here. - * There are two approaches to handle this case - * 1) Flush the work during disconnection - * 2) Check for connected state in work - * - * Since the flushing of work during disconnection will need to be - * done at multiple places or entry points, instead its preferred to - * check the connection state and skip the operation here. + * interface got disconnected. + * Netdev features update is to be done only after the connection, + * since the connection mode plays an important role in identifying + * the features that are to be updated. + * So in case of interface disconnect skip feature update. */ if (!hdd_cm_is_vdev_associated(adapter)) return; hdd_netdev_update_features(adapter); - - hdd_debug("Enabling queues"); - wlan_hdd_netif_queue_control(adapter, WLAN_WAKE_ALL_NETIF_QUEUE, - WLAN_CONTROL_PATH); } /**