qcacld-3.0: Init tx_mutex in pdev_attach
Initialise spinlock: tx_mutex in pdev_attach instead of pdev_post_attach as it may be accessed in ol_tx_flow_ct_unpause_os_q() just after FW download. Change-Id: I9de2eacd573420d23bc3a71a52dfb27bc1cfdab5 CRs-Fixed: 2285503
This commit is contained in:
@@ -1452,6 +1452,7 @@ ol_txrx_pdev_attach(ol_txrx_soc_handle soc,
|
|||||||
TAILQ_INIT(&pdev->req_list);
|
TAILQ_INIT(&pdev->req_list);
|
||||||
pdev->req_list_depth = 0;
|
pdev->req_list_depth = 0;
|
||||||
qdf_spinlock_create(&pdev->req_list_spinlock);
|
qdf_spinlock_create(&pdev->req_list_spinlock);
|
||||||
|
qdf_spinlock_create(&pdev->tx_mutex);
|
||||||
|
|
||||||
/* do initial set up of the peer ID -> peer object lookup map */
|
/* do initial set up of the peer ID -> peer object lookup map */
|
||||||
if (ol_txrx_peer_find_attach(pdev))
|
if (ol_txrx_peer_find_attach(pdev))
|
||||||
@@ -1509,6 +1510,7 @@ fail2:
|
|||||||
qdf_spinlock_destroy(&pdev->tx_queue_spinlock);
|
qdf_spinlock_destroy(&pdev->tx_queue_spinlock);
|
||||||
|
|
||||||
fail1:
|
fail1:
|
||||||
|
qdf_spinlock_destroy(&pdev->tx_mutex);
|
||||||
ol_txrx_tso_stats_deinit(pdev);
|
ol_txrx_tso_stats_deinit(pdev);
|
||||||
ol_txrx_fw_stats_desc_pool_deinit(pdev);
|
ol_txrx_fw_stats_desc_pool_deinit(pdev);
|
||||||
qdf_mem_free(pdev);
|
qdf_mem_free(pdev);
|
||||||
@@ -1904,7 +1906,6 @@ ol_txrx_pdev_post_attach(struct cdp_pdev *ppdev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* initialize mutexes for tx desc alloc and peer lookup */
|
/* initialize mutexes for tx desc alloc and peer lookup */
|
||||||
qdf_spinlock_create(&pdev->tx_mutex);
|
|
||||||
qdf_spinlock_create(&pdev->peer_ref_mutex);
|
qdf_spinlock_create(&pdev->peer_ref_mutex);
|
||||||
qdf_spinlock_create(&pdev->rx.mutex);
|
qdf_spinlock_create(&pdev->rx.mutex);
|
||||||
qdf_spinlock_create(&pdev->last_real_peer_mutex);
|
qdf_spinlock_create(&pdev->last_real_peer_mutex);
|
||||||
@@ -2040,7 +2041,6 @@ pn_trace_attach_fail:
|
|||||||
OL_RX_REORDER_TRACE_DETACH(pdev);
|
OL_RX_REORDER_TRACE_DETACH(pdev);
|
||||||
|
|
||||||
reorder_trace_attach_fail:
|
reorder_trace_attach_fail:
|
||||||
qdf_spinlock_destroy(&pdev->tx_mutex);
|
|
||||||
qdf_spinlock_destroy(&pdev->peer_ref_mutex);
|
qdf_spinlock_destroy(&pdev->peer_ref_mutex);
|
||||||
qdf_spinlock_destroy(&pdev->rx.mutex);
|
qdf_spinlock_destroy(&pdev->rx.mutex);
|
||||||
qdf_spinlock_destroy(&pdev->last_real_peer_mutex);
|
qdf_spinlock_destroy(&pdev->last_real_peer_mutex);
|
||||||
@@ -2206,7 +2206,6 @@ static void ol_txrx_pdev_pre_detach(struct cdp_pdev *ppdev, int force)
|
|||||||
htt_detach(pdev->htt_pdev);
|
htt_detach(pdev->htt_pdev);
|
||||||
ol_tx_desc_dup_detect_deinit(pdev);
|
ol_tx_desc_dup_detect_deinit(pdev);
|
||||||
|
|
||||||
qdf_spinlock_destroy(&pdev->tx_mutex);
|
|
||||||
qdf_spinlock_destroy(&pdev->peer_ref_mutex);
|
qdf_spinlock_destroy(&pdev->peer_ref_mutex);
|
||||||
qdf_spinlock_destroy(&pdev->last_real_peer_mutex);
|
qdf_spinlock_destroy(&pdev->last_real_peer_mutex);
|
||||||
qdf_spinlock_destroy(&pdev->rx.mutex);
|
qdf_spinlock_destroy(&pdev->rx.mutex);
|
||||||
@@ -2288,6 +2287,7 @@ static void ol_txrx_pdev_detach(struct cdp_pdev *ppdev, int force)
|
|||||||
qdf_spin_unlock_bh(&pdev->req_list_spinlock);
|
qdf_spin_unlock_bh(&pdev->req_list_spinlock);
|
||||||
|
|
||||||
qdf_spinlock_destroy(&pdev->req_list_spinlock);
|
qdf_spinlock_destroy(&pdev->req_list_spinlock);
|
||||||
|
qdf_spinlock_destroy(&pdev->tx_mutex);
|
||||||
|
|
||||||
OL_RX_REORDER_TIMEOUT_CLEANUP(pdev);
|
OL_RX_REORDER_TIMEOUT_CLEANUP(pdev);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user