qcacmn: increment vdev refcount for search by id
Add new API dp_vdev_get_ref_by_id() which will return vdev pointer by holding a reference. Caller of this API has to ensure that this reference is released by calling dp_vdev_unref_delete() API New lock soc->vdev_map_lock is introduced to protect vdev id to object array Change-Id: I883e328932e35ef31254125492dbae20cebe0e00
这个提交包含在:
@@ -2414,13 +2414,12 @@ static void dp_process_ppdu_stats_user_common_tlv(
|
||||
|
||||
/* returning earlier causes other feilds unpopulated */
|
||||
if (peer_id == DP_SCAN_PEER_ID) {
|
||||
vdev =
|
||||
dp_get_vdev_from_soc_vdev_id_wifi3(pdev->soc,
|
||||
ppdu_desc->vdev_id);
|
||||
vdev = dp_vdev_get_ref_by_id(pdev->soc, ppdu_desc->vdev_id);
|
||||
if (!vdev)
|
||||
return;
|
||||
qdf_mem_copy(ppdu_user_desc->mac_addr, vdev->mac_addr.raw,
|
||||
QDF_MAC_ADDR_SIZE);
|
||||
dp_vdev_unref_delete(pdev->soc, vdev);
|
||||
} else {
|
||||
peer = dp_peer_get_ref_by_id(pdev->soc, peer_id,
|
||||
DP_MOD_ID_TX_PPDU_STATS);
|
||||
@@ -2432,13 +2431,13 @@ static void dp_process_ppdu_stats_user_common_tlv(
|
||||
* with peer id equal to previously associated
|
||||
* peer's peer_id but it was removed
|
||||
*/
|
||||
vdev =
|
||||
dp_get_vdev_from_soc_vdev_id_wifi3(pdev->soc,
|
||||
ppdu_desc->vdev_id);
|
||||
vdev = dp_vdev_get_ref_by_id(pdev->soc,
|
||||
ppdu_desc->vdev_id);
|
||||
if (!vdev)
|
||||
return;
|
||||
qdf_mem_copy(ppdu_user_desc->mac_addr,
|
||||
vdev->mac_addr.raw, QDF_MAC_ADDR_SIZE);
|
||||
dp_vdev_unref_delete(pdev->soc, vdev);
|
||||
return;
|
||||
}
|
||||
qdf_mem_copy(ppdu_user_desc->mac_addr,
|
||||
@@ -2478,11 +2477,10 @@ static void dp_process_ppdu_stats_user_rate_tlv(struct dp_pdev *pdev,
|
||||
ppdu_user_desc = &ppdu_desc->user[curr_user_index];
|
||||
ppdu_user_desc->tlv_bitmap |= (1 << tlv_type);
|
||||
if (peer_id == DP_SCAN_PEER_ID) {
|
||||
vdev =
|
||||
dp_get_vdev_from_soc_vdev_id_wifi3(pdev->soc,
|
||||
ppdu_desc->vdev_id);
|
||||
vdev = dp_vdev_get_ref_by_id(pdev->soc, ppdu_desc->vdev_id);
|
||||
if (!vdev)
|
||||
return;
|
||||
dp_vdev_unref_delete(pdev->soc, vdev);
|
||||
}
|
||||
ppdu_user_desc->peer_id = peer_id;
|
||||
|
||||
|
在新工单中引用
屏蔽一个用户