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
This commit is contained in:
Amit Mehta
2021-11-08 14:38:00 +05:30
committed by Madan Koyyalamudi
parent c2f957175b
commit 72fb06b560
2 changed files with 10 additions and 17 deletions

View File

@@ -1,5 +1,6 @@
/* /*
* Copyright (c) 2012-2021, The Linux Foundation. All rights reserved. * 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 * Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above * purpose with or without fee is hereby granted, provided that the above
@@ -304,12 +305,12 @@ void hdd_cm_netif_queue_enable(struct hdd_adapter *adapter)
adapter->vdev_id); adapter->vdev_id);
qdf_queue_work(0, hdd_ctx->adapter_ops_wq, qdf_queue_work(0, hdd_ctx->adapter_ops_wq,
&adapter->netdev_features_update_work); &adapter->netdev_features_update_work);
} else { }
wlan_hdd_netif_queue_control(adapter, wlan_hdd_netif_queue_control(adapter,
WLAN_WAKE_ALL_NETIF_QUEUE, WLAN_WAKE_ALL_NETIF_QUEUE,
WLAN_CONTROL_PATH); WLAN_CONTROL_PATH);
} }
}
void hdd_cm_clear_pmf_stats(struct hdd_adapter *adapter) void hdd_cm_clear_pmf_stats(struct hdd_adapter *adapter)
{ {

View File

@@ -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 * This check is needed in case the work got scheduled after the
* interface got disconnected. During disconnection, the network queues * interface got disconnected.
* are paused and hence should not be, mistakenly, restarted here. * Netdev features update is to be done only after the connection,
* There are two approaches to handle this case * since the connection mode plays an important role in identifying
* 1) Flush the work during disconnection * the features that are to be updated.
* 2) Check for connected state in work * So in case of interface disconnect skip feature update.
*
* 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.
*/ */
if (!hdd_cm_is_vdev_associated(adapter)) if (!hdd_cm_is_vdev_associated(adapter))
return; return;
hdd_netdev_update_features(adapter); hdd_netdev_update_features(adapter);
hdd_debug("Enabling queues");
wlan_hdd_netif_queue_control(adapter, WLAN_WAKE_ALL_NETIF_QUEUE,
WLAN_CONTROL_PATH);
} }
/** /**