瀏覽代碼

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))) {
 		/*