android_kernel_xiaomi_sm8350/core/dp
Himanshu Agarwal 865201d99d qcacld-3.0: Do netif_tx_stop_all_queues() instead of netif_tx_disable()
Race condition is happening when tx traffic is running and simulataneously
suspend is going on. hdd_hard_start_xmit() is called under txq->__xmit_lock
and in case of low descriptor scenario, it goes to pause the netif queues
and trying to take adapter->pause_map_lock for doing so which is already
acquired by another thread. In another thread, suspend indication is being
preocessed and as a result is trying to pause netif queues with
netif_action WLAN_NETIF_TX_DISABLE which takes adapter->pause_map_lock and
then calls netif_tx_disable() which is trying to take txq->__xmit_lock
already taken by the thread executing hdd_hard_start_xmit(). This leads to
a deadlock situation.

Replace netif_tx_disable() with netif_tx_stop_all_queues() as
netif_tx_stop_all_queues() is doing the same thing as netif_tx_disable()
only without taking the txq->__xmit_lock which prevents this deadlock.

Change-Id: I5afafe6435707bd8f0e87972a740f908d06ce847
CRs-Fixed: 2030933
2017-04-13 17:53:09 -07:00
..
htt qcacld-3.0: Add interface to WDI-stats and quota limit 2017-04-12 19:02:07 -07:00
ol/inc qcacld-3.0: Add interface to WDI-stats and quota limit 2017-04-12 19:02:07 -07:00
txrx qcacld-3.0: Do netif_tx_stop_all_queues() instead of netif_tx_disable() 2017-04-13 17:53:09 -07:00