Ver Fonte

qcacld-3.0: fix false alert of NDI interface TX timeout

When NDI do hdd_ndp_peer_departed_handler() or hdd_stop_adapter(),
it will invoke hdd_cleanup_ndi() to pause NDI net_dev TX queue,
the NDI is in disconnection status, so only pause TX queue but not
set netif_carrier_off() will let kernel trigger TX watchdog
unexpectedly.
Use WLAN_STOP_ALL_NETIF_QUEUE_N_CARRIER instead of
WLAN_STOP_ALL_NETIF_QUEUE to set netif_carrier_off() then no
TX watchdog will be triggered.

Change-Id: Ic4a9954b383c34795bda70296f6af977f450bdfd
CRs-Fixed: 2765520
Jinwei Chen há 4 anos atrás
pai
commit
75755a6774
1 ficheiros alterados com 6 adições e 3 exclusões
  1. 6 3
      core/hdd/src/wlan_hdd_nan_datapath.c

+ 6 - 3
core/hdd/src/wlan_hdd_nan_datapath.c

@@ -926,8 +926,10 @@ int hdd_ndp_new_peer_handler(uint8_t vdev_id, uint16_t sta_id,
 		hdd_bus_bw_compute_timer_start(hdd_ctx);
 		sta_ctx->conn_info.conn_state = eConnectionState_NdiConnected;
 		hdd_wmm_connect(adapter, roam_info, eCSR_BSS_TYPE_NDI);
-		wlan_hdd_netif_queue_control(adapter,
-				WLAN_WAKE_ALL_NETIF_QUEUE, WLAN_CONTROL_PATH);
+		wlan_hdd_netif_queue_control(
+					adapter,
+					WLAN_START_ALL_NETIF_QUEUE_N_CARRIER,
+					WLAN_CONTROL_PATH);
 	}
 	qdf_mem_free(roam_info);
 	return 0;
@@ -946,7 +948,8 @@ void hdd_cleanup_ndi(struct hdd_context *hdd_ctx,
 	hdd_conn_set_connection_state(adapter,
 		eConnectionState_NdiDisconnected);
 	hdd_debug("Stop netif tx queues.");
-	wlan_hdd_netif_queue_control(adapter, WLAN_STOP_ALL_NETIF_QUEUE,
+	wlan_hdd_netif_queue_control(adapter,
+				     WLAN_STOP_ALL_NETIF_QUEUE_N_CARRIER,
 				     WLAN_CONTROL_PATH);
 	hdd_bus_bw_compute_reset_prev_txrx_stats(adapter);
 	hdd_bus_bw_compute_timer_try_stop(hdd_ctx);