From 104ccc7742cbc7f152f5f0b6a2e6e4e46125caee Mon Sep 17 00:00:00 2001 From: Nijun Gong Date: Tue, 7 Aug 2018 10:43:56 +0800 Subject: [PATCH] qcacld-3.0: In SSR, clear flow control flag When TX queues stopped by flow control right before SSR, corresponding TX complete event used to clear the pause_map bit never come. Flow control should reset its state during SSR, so clear this bit. Change-Id: I462de1e20c9e2fc40476fc6b2d999c10e6396d8c CRs-Fixed: 2274955 --- core/hdd/src/wlan_hdd_main.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c index 649179801ccf..df078dba69a3 100644 --- a/core/hdd/src/wlan_hdd_main.c +++ b/core/hdd/src/wlan_hdd_main.c @@ -5440,6 +5440,16 @@ QDF_STATUS hdd_reset_all_adapters(struct hdd_context *hdd_ctx) WLAN_STOP_ALL_NETIF_QUEUE_N_CARRIER, WLAN_CONTROL_PATH); } + /* + * Clear fc flag if it was set before SSR to avoid TX queues + * permanently stopped after SSR. + * Here WLAN_START_ALL_NETIF_QUEUE will actually not start any + * queue since it's blocked by reason WLAN_CONTROL_PATH. + */ + if (adapter->pause_map & (1 << WLAN_DATA_FLOW_CONTROL)) + wlan_hdd_netif_queue_control(adapter, + WLAN_START_ALL_NETIF_QUEUE, + WLAN_DATA_FLOW_CONTROL); hdd_reset_scan_operation(hdd_ctx, adapter);