Преглед изворни кода

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 месеци
родитељ
комит
bb54be0dc9
1 измењених фајлова са 4 додато и 2 уклоњено
  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))) {
 		/*