qcacld-3.0: fix softlock-up caused by co-existence of NAPI and rx-thread.

If rxthread is on, NAPI will call the kernel-thread context API (instead
of softirq context) API to transfer the packet to the stack.

Eventually, this part will be re-considered when multi-queue NAPI gets
in, which will eliminate the rx-thread.

Change-Id: Ib3d4d1450fb36f5c1e710802ceaab5d015e20c7d
CRs-Fixed: 957299
This commit is contained in:
Orhan K AKYILDIZ 2015-12-30 12:35:44 -08:00 • committed by Akash Patel
commit 4f20db56bc
2 changed files with 5 additions and 4 deletions

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 2012-2015 The Linux Foundation. All rights reserved.
* Copyright (c) 2012-2016 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@ -581,7 +581,7 @@ CDF_STATUS hdd_softap_rx_packet_cbk(void *cds_context,
*/
cdf_net_buf_debug_release_skb(rxBuf);
if (hdd_napi_enabled(HDD_NAPI_ANY))
if (hdd_napi_enabled(HDD_NAPI_ANY) && !pHddCtx->config->enableRxThread)
rxstat = netif_receive_skb(skb);
else
rxstat = netif_rx_ni(skb);

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 2012-2015 The Linux Foundation. All rights reserved.
* Copyright (c) 2012-2016 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@ -744,7 +744,8 @@ CDF_STATUS hdd_rx_packet_cbk(void *cds_context, cdf_nbuf_t rxBuf, uint8_t staId)
if (HDD_LRO_NO_RX ==
hdd_lro_rx(pHddCtx, pAdapter, skb)) {
if (hdd_napi_enabled(HDD_NAPI_ANY))
if (hdd_napi_enabled(HDD_NAPI_ANY) &&
!pHddCtx->config->enableRxThread)
rxstat = netif_receive_skb(skb);
else
rxstat = netif_rx_ni(skb);