android_kernel_xiaomi_sm8350/core/dp/txrx
Mohit Khanna 137b97dd46 qcacld-3.0: Fix for IBSS lock-up issue
During IBSS session tear down, we are hitting a lockup. The issue is
seen as the pdev->peer_ref_mutex is being taken up twice in
ol_txrx_remove_peers_for_vdev and ol_txrx_peer_unref_delete. The later
function gets invoked by the former and hence we are stuck while trying
to acquire the spinlock, the second time.

Fix issue by releasing peer_ref_mutex lock before invoking
callback (wma_remove_peer) in ol_txrx_remove_peers_for_vdev function.

The dmesg signature of the lock-up is as follows

1100.230392:   <2> [<ffffffc0002035a4>] el1_irq+0x64/0xd4
1100.235432:   <2> [<ffffffbffc17e890>]
ol_txrx_peer_unref_delete+0xc4/0x33c [wlan]
1100.242461:   <2> [<ffffffbffc17ecc8>] ol_txrx_peer_detach+0x1c0/0x1e0
[wlan]
1100.249020:   <2> [<ffffffbffc160914>] wma_remove_peer+0x7c/0x18c
[wlan]
1100.255141:   <2> [<ffffffbffc17dee4>]
ol_txrx_remove_peers_for_vdev+0x170/0x1b0 [wlan]
1100.262606:   <2> [<ffffffbffc16311c>]
wma_vdev_stop_resp_handler+0x204/0x460 [wlan]
1100.269816:   <2> [<ffffffbffc1886a8>] __wmi_control_rx+0x280/0x2c0
[wlan]
1100.276204:   <2> [<ffffffbffc188a34>] wmi_process_fw_event+0x8/0x14
[wlan]
1100.282595:   <2> [<ffffffbffc157054>] wma_mc_process_msg+0x80c/0x27fc
[wlan]
1100.289176:   <2> [<ffffffbffc13f238>] $x+0x190/0x3f4 [wlan]
1100.294115:   <2> [<ffffffc00023d7e8>] kthread+0xac/0xb8

CRs-Fixed: 1006847
Change-Id: Icedeb172bbd6736ab39343391ff0643ddd688444
2016-04-27 17:00:25 -07:00
..
ipv6_defs.h qcacld-3.0: Initial snapshot of ihelium wlan driver 2015-11-17 17:52:53 -08:00
ol_cfg.c qcacld-3.0: add ini support for throttling period duty cycles 2016-04-20 22:23:19 -07:00
ol_ctrl_txrx_api.h qcacld-3.0: Data path changes to use converged APIs (Part 1) 2016-04-01 15:46:10 -07:00
ol_osif_txrx_api.h qcacld-3.0: Update driver to use QDF NBUF APIs(1/2) 2016-03-24 11:58:23 -07:00
ol_rx_defrag.c qcacld-3.0: Data path changes to use converged APIs (Part 1) 2016-04-01 15:46:10 -07:00
ol_rx_defrag.h qcacld-3.0: Update driver to use QDF NBUF APIs(1/2) 2016-03-24 11:58:23 -07:00
ol_rx_fwd.c qcacld-3.0: Data path changes to use converged APIs (Part 1) 2016-04-01 15:46:10 -07:00
ol_rx_fwd.h qcacld-3.0: Update driver to use QDF NBUF APIs(1/2) 2016-03-24 11:58:23 -07:00
ol_rx_pn.c qcacld-3.0: Data path changes to use converged APIs (Part 1) 2016-04-01 15:46:10 -07:00
ol_rx_pn.h qcacld-3.0: Update driver to use QDF NBUF APIs(1/2) 2016-03-24 11:58:23 -07:00
ol_rx_reorder_timeout.c qcacld-3.0: Data path changes to use converged APIs (Part 1) 2016-04-01 15:46:10 -07:00
ol_rx_reorder_timeout.h qcacld-3.0: Data path changes to use converged APIs (Part 1) 2016-04-01 15:46:10 -07:00
ol_rx_reorder.c qcacld-3.0: Add qdf references in place of cdf 2016-03-24 11:58:26 -07:00
ol_rx_reorder.h qcacld-3.0: Update driver to use QDF NBUF APIs(1/2) 2016-03-24 11:58:23 -07:00
ol_rx.c qcacld-3.0: Fix layering violation while handling management frames 2016-04-20 22:23:06 -07:00
ol_rx.h qcacld-3.0: Data path changes to use converged APIs (Part 1) 2016-04-01 15:46:10 -07:00
ol_tx_desc.c qcacld-3.0: Data path changes to use converged APIs (Part 1) 2016-04-01 15:46:10 -07:00
ol_tx_desc.h qcacld-3.0: Data path changes to use converged APIs (Part 1) 2016-04-01 15:46:10 -07:00
ol_tx_queue.c qcacld-3.0: Fix compilation error for msmcobalt 2016-04-21 20:23:44 -07:00
ol_tx_queue.h qcacld-3.0: Data path changes to use converged APIs (Part 1) 2016-04-01 15:46:10 -07:00
ol_tx_send.c qcacld-3.0: Data path changes to use converged APIs (Part 5) 2016-04-01 16:19:43 -07:00
ol_tx_send.h qcacld-3.0: Data path changes to use converged APIs (Part 1) 2016-04-01 15:46:10 -07:00
ol_tx.c qcacld-3.0: Use fastpath Tx entry point with flowcontrol V2 2016-04-17 17:59:18 -07:00
ol_tx.h qcacld-3.0: Use fastpath Tx entry point with flowcontrol V2 2016-04-17 17:59:18 -07:00
ol_txrx_encap.c qcacld-3.0: Data path changes to use converged APIs (Part 1) 2016-04-01 15:46:10 -07:00
ol_txrx_encap.h qcacld-3.0: Data path changes to use converged APIs (Part 1) 2016-04-01 15:46:10 -07:00
ol_txrx_event.c qcacld-3.0: Add QDF mem API's 2016-03-24 11:58:16 -07:00
ol_txrx_flow_control.c qcacld-3.0: Free all TX descriptors in error scenario 2016-04-25 22:54:11 -07:00
ol_txrx_internal.h qcacld-3.0: Add qdf references in place of cdf 2016-03-24 11:58:26 -07:00
ol_txrx_peer_find.c qcacld-3.0: Add QDF mem API's 2016-03-24 11:58:16 -07:00
ol_txrx_peer_find.h qcacld-3.0: Data path changes to use converged APIs (Part 1) 2016-04-01 15:46:10 -07:00
ol_txrx_types.h qcacld-3.0: Fix layering violation while handling management frames 2016-04-20 22:23:06 -07:00
ol_txrx.c qcacld-3.0: Fix for IBSS lock-up issue 2016-04-27 17:00:25 -07:00
ol_txrx.h qcacld-3.0: Data path changes to use converged APIs (Part 1) 2016-04-01 15:46:10 -07:00
txrx.h qcacld-3.0: Data path changes to use converged APIs (Part 1) 2016-04-01 15:46:10 -07:00
wdi_event_api.h qcacld-3.0: Initial snapshot of ihelium wlan driver 2015-11-17 17:52:53 -08:00
wdi_event.h qcacld-3.0: Update driver to use QDF NBUF APIs(1/2) 2016-03-24 11:58:23 -07:00