qca-wifi: use peer_list_lock instead of peer_ref_mutex
Iterate vdev->peer_list under vdev->peer_list_lock Change-Id: If69016109cf47681a9616adde59c5d73aaba5217
This commit is contained in:
@@ -240,15 +240,15 @@ struct dp_peer *dp_tx_cap_peer_find_by_id(struct dp_soc *soc,
|
|||||||
{
|
{
|
||||||
struct dp_peer *peer;
|
struct dp_peer *peer;
|
||||||
|
|
||||||
qdf_spin_lock_bh(&soc->peer_ref_mutex);
|
qdf_spin_lock_bh(&soc->peer_map_lock);
|
||||||
peer = __dp_peer_find_by_id(soc, peer_id);
|
peer = __dp_peer_find_by_id(soc, peer_id);
|
||||||
if (!peer || (peer && peer->delete_in_progress)) {
|
if (!peer || (peer && peer->delete_in_progress)) {
|
||||||
qdf_spin_unlock_bh(&soc->peer_ref_mutex);
|
qdf_spin_unlock_bh(&soc->peer_map_lock);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
qdf_atomic_inc(&peer->ref_cnt);
|
qdf_atomic_inc(&peer->ref_cnt);
|
||||||
qdf_spin_unlock_bh(&soc->peer_ref_mutex);
|
qdf_spin_unlock_bh(&soc->peer_map_lock);
|
||||||
|
|
||||||
return peer;
|
return peer;
|
||||||
}
|
}
|
||||||
@@ -290,7 +290,6 @@ void dp_tx_capture_htt_frame_counter(struct dp_pdev *pdev,
|
|||||||
void dp_print_tid_qlen_per_peer(void *pdev_hdl, uint8_t consolidated)
|
void dp_print_tid_qlen_per_peer(void *pdev_hdl, uint8_t consolidated)
|
||||||
{
|
{
|
||||||
struct dp_pdev *pdev = (struct dp_pdev *)pdev_hdl;
|
struct dp_pdev *pdev = (struct dp_pdev *)pdev_hdl;
|
||||||
struct dp_soc *soc = pdev->soc;
|
|
||||||
struct dp_vdev *vdev = NULL;
|
struct dp_vdev *vdev = NULL;
|
||||||
struct dp_peer *peer = NULL;
|
struct dp_peer *peer = NULL;
|
||||||
uint64_t c_defer_msdu_len = 0;
|
uint64_t c_defer_msdu_len = 0;
|
||||||
@@ -298,10 +297,10 @@ void dp_print_tid_qlen_per_peer(void *pdev_hdl, uint8_t consolidated)
|
|||||||
uint64_t c_pending_q_len = 0;
|
uint64_t c_pending_q_len = 0;
|
||||||
|
|
||||||
DP_PRINT_STATS("pending peer msdu and ppdu:");
|
DP_PRINT_STATS("pending peer msdu and ppdu:");
|
||||||
qdf_spin_lock_bh(&soc->peer_ref_mutex);
|
|
||||||
qdf_spin_lock_bh(&pdev->vdev_list_lock);
|
qdf_spin_lock_bh(&pdev->vdev_list_lock);
|
||||||
|
|
||||||
DP_PDEV_ITERATE_VDEV_LIST(pdev, vdev) {
|
DP_PDEV_ITERATE_VDEV_LIST(pdev, vdev) {
|
||||||
|
qdf_spin_lock_bh(&vdev->peer_list_lock);
|
||||||
DP_VDEV_ITERATE_PEER_LIST(vdev, peer) {
|
DP_VDEV_ITERATE_PEER_LIST(vdev, peer) {
|
||||||
int tid;
|
int tid;
|
||||||
struct dp_tx_tid *tx_tid;
|
struct dp_tx_tid *tx_tid;
|
||||||
@@ -335,6 +334,7 @@ void dp_print_tid_qlen_per_peer(void *pdev_hdl, uint8_t consolidated)
|
|||||||
if (!consolidated)
|
if (!consolidated)
|
||||||
dp_tx_capture_print_stats(peer);
|
dp_tx_capture_print_stats(peer);
|
||||||
}
|
}
|
||||||
|
qdf_spin_unlock_bh(&vdev->peer_list_lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
DP_PRINT_STATS("consolidated: msdu_comp_q[%d] defer_msdu_q[%d] pending_ppdu_q[%d]",
|
DP_PRINT_STATS("consolidated: msdu_comp_q[%d] defer_msdu_q[%d] pending_ppdu_q[%d]",
|
||||||
@@ -342,7 +342,6 @@ void dp_print_tid_qlen_per_peer(void *pdev_hdl, uint8_t consolidated)
|
|||||||
c_pending_q_len);
|
c_pending_q_len);
|
||||||
|
|
||||||
qdf_spin_unlock_bh(&pdev->vdev_list_lock);
|
qdf_spin_unlock_bh(&pdev->vdev_list_lock);
|
||||||
qdf_spin_unlock_bh(&soc->peer_ref_mutex);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -1559,21 +1558,20 @@ static void dp_soc_set_txrx_ring_map_single(struct dp_soc *soc)
|
|||||||
static void dp_iterate_free_peer_msdu_q(void *pdev_hdl)
|
static void dp_iterate_free_peer_msdu_q(void *pdev_hdl)
|
||||||
{
|
{
|
||||||
struct dp_pdev *pdev = (struct dp_pdev *)pdev_hdl;
|
struct dp_pdev *pdev = (struct dp_pdev *)pdev_hdl;
|
||||||
struct dp_soc *soc = pdev->soc;
|
|
||||||
struct dp_vdev *vdev = NULL;
|
struct dp_vdev *vdev = NULL;
|
||||||
struct dp_peer *peer = NULL;
|
struct dp_peer *peer = NULL;
|
||||||
|
|
||||||
qdf_spin_lock_bh(&soc->peer_ref_mutex);
|
|
||||||
qdf_spin_lock_bh(&pdev->vdev_list_lock);
|
qdf_spin_lock_bh(&pdev->vdev_list_lock);
|
||||||
DP_PDEV_ITERATE_VDEV_LIST(pdev, vdev) {
|
DP_PDEV_ITERATE_VDEV_LIST(pdev, vdev) {
|
||||||
|
qdf_spin_lock_bh(&vdev->peer_list_lock);
|
||||||
DP_VDEV_ITERATE_PEER_LIST(vdev, peer) {
|
DP_VDEV_ITERATE_PEER_LIST(vdev, peer) {
|
||||||
/* set peer tx cap enabled to 0, when feature disable */
|
/* set peer tx cap enabled to 0, when feature disable */
|
||||||
peer->tx_cap_enabled = 0;
|
peer->tx_cap_enabled = 0;
|
||||||
dp_peer_tid_queue_cleanup(peer);
|
dp_peer_tid_queue_cleanup(peer);
|
||||||
}
|
}
|
||||||
|
qdf_spin_unlock_bh(&vdev->peer_list_lock);
|
||||||
}
|
}
|
||||||
qdf_spin_unlock_bh(&pdev->vdev_list_lock);
|
qdf_spin_unlock_bh(&pdev->vdev_list_lock);
|
||||||
qdf_spin_unlock_bh(&soc->peer_ref_mutex);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -55,9 +55,6 @@ static void dp_ast_aging_timer_fn(void *soc_hdl)
|
|||||||
check_wds_ase = true;
|
check_wds_ase = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Peer list access lock */
|
|
||||||
qdf_spin_lock_bh(&soc->peer_ref_mutex);
|
|
||||||
|
|
||||||
/* AST list access lock */
|
/* AST list access lock */
|
||||||
qdf_spin_lock_bh(&soc->ast_lock);
|
qdf_spin_lock_bh(&soc->ast_lock);
|
||||||
|
|
||||||
@@ -65,6 +62,7 @@ static void dp_ast_aging_timer_fn(void *soc_hdl)
|
|||||||
pdev = soc->pdev_list[i];
|
pdev = soc->pdev_list[i];
|
||||||
qdf_spin_lock_bh(&pdev->vdev_list_lock);
|
qdf_spin_lock_bh(&pdev->vdev_list_lock);
|
||||||
DP_PDEV_ITERATE_VDEV_LIST(pdev, vdev) {
|
DP_PDEV_ITERATE_VDEV_LIST(pdev, vdev) {
|
||||||
|
qdf_spin_lock_bh(&vdev->peer_list_lock);
|
||||||
DP_VDEV_ITERATE_PEER_LIST(vdev, peer) {
|
DP_VDEV_ITERATE_PEER_LIST(vdev, peer) {
|
||||||
DP_PEER_ITERATE_ASE_LIST(peer, ase, temp_ase) {
|
DP_PEER_ITERATE_ASE_LIST(peer, ase, temp_ase) {
|
||||||
/*
|
/*
|
||||||
@@ -107,12 +105,12 @@ static void dp_ast_aging_timer_fn(void *soc_hdl)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
qdf_spin_unlock_bh(&vdev->peer_list_lock);
|
||||||
}
|
}
|
||||||
qdf_spin_unlock_bh(&pdev->vdev_list_lock);
|
qdf_spin_unlock_bh(&pdev->vdev_list_lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
qdf_spin_unlock_bh(&soc->ast_lock);
|
qdf_spin_unlock_bh(&soc->ast_lock);
|
||||||
qdf_spin_unlock_bh(&soc->peer_ref_mutex);
|
|
||||||
|
|
||||||
if (qdf_atomic_read(&soc->cmn_init_done))
|
if (qdf_atomic_read(&soc->cmn_init_done))
|
||||||
qdf_timer_mod(&soc->ast_aging_timer,
|
qdf_timer_mod(&soc->ast_aging_timer,
|
||||||
|
Reference in New Issue
Block a user