qcacmn: use granular locks to protect peer structures
Remove the global soc->peer_ref_mutex lock to protect peer access Instead use granular locks to protect the individual peer DBs 1) soc→peer_hash_lock : To protect peer hash table 2) soc→peer_map_lock : To protect id to objmap array 3) vdev→peer_list_lock : To protect vdev level peer list Change-Id: I9f044c4d71fe1155817a2b22a5a050545ec37445
This commit is contained in:

committed by
snandini

szülő
5e4c6f6b29
commit
86d3df0605
@@ -2396,7 +2396,7 @@ void dp_tx_nawds_handler(struct cdp_soc_t *soc, struct dp_vdev *vdev,
|
||||
qdf_spin_unlock_bh(&dp_soc->ast_lock);
|
||||
}
|
||||
|
||||
qdf_spin_lock_bh(&dp_soc->peer_ref_mutex);
|
||||
qdf_spin_lock_bh(&vdev->peer_list_lock);
|
||||
TAILQ_FOREACH(peer, &vdev->peer_list, peer_list_elem) {
|
||||
if (!peer->bss_peer && peer->nawds_enabled) {
|
||||
peer_id = peer->peer_id;
|
||||
@@ -2436,7 +2436,7 @@ void dp_tx_nawds_handler(struct cdp_soc_t *soc, struct dp_vdev *vdev,
|
||||
}
|
||||
}
|
||||
|
||||
qdf_spin_unlock_bh(&dp_soc->peer_ref_mutex);
|
||||
qdf_spin_unlock_bh(&vdev->peer_list_lock);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2658,6 +2658,7 @@ void dp_tx_reinject_handler(struct dp_tx_desc_s *tx_desc, uint8_t *status)
|
||||
}
|
||||
is_ucast = !is_mcast;
|
||||
|
||||
qdf_spin_lock_bh(&vdev->peer_list_lock);
|
||||
TAILQ_FOREACH(peer, &vdev->peer_list, peer_list_elem) {
|
||||
if (peer->bss_peer)
|
||||
continue;
|
||||
@@ -2673,11 +2674,13 @@ void dp_tx_reinject_handler(struct dp_tx_desc_s *tx_desc, uint8_t *status)
|
||||
break;
|
||||
}
|
||||
}
|
||||
qdf_spin_unlock_bh(&vdev->peer_list_lock);
|
||||
#endif
|
||||
|
||||
if (qdf_unlikely(vdev->mesh_vdev)) {
|
||||
DP_TX_FREE_SINGLE_BUF(vdev->pdev->soc, tx_desc->nbuf);
|
||||
} else {
|
||||
qdf_spin_lock_bh(&vdev->peer_list_lock);
|
||||
TAILQ_FOREACH(peer, &vdev->peer_list, peer_list_elem) {
|
||||
if ((peer->peer_id != HTT_INVALID_PEER) &&
|
||||
#ifdef WDS_VENDOR_EXTENSION
|
||||
@@ -2726,6 +2729,7 @@ void dp_tx_reinject_handler(struct dp_tx_desc_s *tx_desc, uint8_t *status)
|
||||
}
|
||||
}
|
||||
}
|
||||
qdf_spin_unlock_bh(&vdev->peer_list_lock);
|
||||
}
|
||||
|
||||
qdf_nbuf_free(nbuf);
|
||||
|
Reference in New Issue
Block a user