Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 05734c5c authored by Amit Mehta's avatar Amit Mehta Committed by Madan Koyyalamudi
Browse files

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
parent 670edc32
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -2943,12 +2943,11 @@ static inline void hdd_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);
}
}

static void hdd_save_connect_status(struct hdd_adapter *adapter,
				    struct csr_roam_info *roam_info)
+5 −13
Original line number Diff line number Diff line
@@ -10725,24 +10725,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_adapter_is_connected_sta(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);
}

/**