Jelajahi Sumber

qcacld-3.0: Make sure nbuf queue is clean for runtime disable rx thread

race condiction may happen between thread left nbufs and NAPI RX nbuf.
Change is to make sure thread queue is clean before remove bh protect.

Change-Id: Icbc0d9b14cb7a1dd87f5b42f3e658531ed5bc3d9
CRs-Fixed: 3864304
Yu Tian 11 bulan lalu
induk
melakukan
bb54be0dc9
1 mengubah file dengan 4 tambahan dan 2 penghapusan
  1. 4 2
      components/dp/core/src/wlan_dp_txrx.c

+ 4 - 2
components/dp/core/src/wlan_dp_txrx.c

@@ -1513,7 +1513,8 @@ QDF_STATUS wlan_dp_rx_deliver_to_stack(struct wlan_dp_intf *dp_intf,
 
 	if (qdf_likely((dp_ctx->enable_dp_rx_threads ||
 			dp_ctx->enable_rxthread) &&
-		       !dp_intf->runtime_disable_rx_thread)) {
+		       (!dp_intf->runtime_disable_rx_thread ||
+			!in_softirq()))) {
 		push_type = DP_NBUF_PUSH_BH_DISABLE;
 	} else if (qdf_unlikely(QDF_NBUF_CB_RX_PEER_CACHED_FRM(nbuf))) {
 		/*
@@ -1568,7 +1569,8 @@ QDF_STATUS wlan_dp_rx_deliver_to_stack(struct wlan_dp_intf *dp_intf,
 
 	if (qdf_likely((dp_ctx->enable_dp_rx_threads ||
 			dp_ctx->enable_rxthread) &&
-		       !dp_intf->runtime_disable_rx_thread)) {
+		       (!dp_intf->runtime_disable_rx_thread ||
+			!in_softirq()))) {
 		push_type = DP_NBUF_PUSH_BH_DISABLE;
 	} else if (qdf_unlikely(QDF_NBUF_CB_RX_PEER_CACHED_FRM(nbuf))) {
 		/*