qcacmn: Add txrx_peer in dp peer

Add txrx_peer in dp peer which will be used in
per packet data path.

Change-Id: I91f10b1640430300f4c9f002ca54b3903c556d41
这个提交包含在:
Pavankumar Nandeshwar
2021-10-28 02:55:59 -07:00
提交者 Madan Koyyalamudi
父节点 951e13a2ea
当前提交 d7908ff22a
修改 5 个文件,包含 209 行新增52 行删除

查看文件

@@ -1,6 +1,6 @@
/*
* Copyright (c) 2016-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2021,2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@@ -702,6 +702,34 @@ void dp_peer_vdev_list_remove(struct dp_soc *soc, struct dp_vdev *vdev,
qdf_spin_unlock_bh(&vdev->peer_list_lock);
}
/*
* dp_txrx_peer_attach_add() - Attach txrx_peer and add it to peer_id table
* @soc: SoC handle
* @peer: peer handle
* @txrx_peer: txrx peer handle
*
* Return: None
*/
void dp_txrx_peer_attach_add(struct dp_soc *soc,
struct dp_peer *peer,
struct dp_txrx_peer *txrx_peer)
{
qdf_spin_lock_bh(&soc->peer_map_lock);
peer->txrx_peer = txrx_peer;
if (peer->peer_id == HTT_INVALID_PEER) {
qdf_spin_unlock_bh(&soc->peer_map_lock);
return;
}
txrx_peer->peer_id = peer->peer_id;
QDF_ASSERT(soc->peer_id_to_obj_map[peer->peer_id]);
qdf_spin_unlock_bh(&soc->peer_map_lock);
}
/*
* dp_peer_find_id_to_obj_add() - Add peer into peer_id table
* @soc: SoC handle
@@ -718,6 +746,8 @@ void dp_peer_find_id_to_obj_add(struct dp_soc *soc,
qdf_spin_lock_bh(&soc->peer_map_lock);
peer->peer_id = peer_id;
if (QDF_IS_STATUS_ERROR(dp_peer_get_ref(soc, peer, DP_MOD_ID_CONFIG))) {
dp_err("unable to get peer ref at MAP mac: "QDF_MAC_ADDR_FMT" peer_id %u",
QDF_MAC_ADDR_REF(peer->mac_addr.raw), peer_id);
@@ -727,6 +757,8 @@ void dp_peer_find_id_to_obj_add(struct dp_soc *soc,
if (!soc->peer_id_to_obj_map[peer_id]) {
soc->peer_id_to_obj_map[peer_id] = peer;
if (peer->txrx_peer)
peer->txrx_peer->peer_id = peer_id;
} else {
/* Peer map event came for peer_id which
* is already mapped, this is not expected
@@ -752,6 +784,9 @@ void dp_peer_find_id_to_obj_remove(struct dp_soc *soc,
qdf_spin_lock_bh(&soc->peer_map_lock);
peer = soc->peer_id_to_obj_map[peer_id];
peer->peer_id = HTT_INVALID_PEER;
if (peer->txrx_peer)
peer->txrx_peer->peer_id = HTT_INVALID_PEER;
soc->peer_id_to_obj_map[peer_id] = NULL;
dp_peer_unref_delete(peer, DP_MOD_ID_CONFIG);
qdf_spin_unlock_bh(&soc->peer_map_lock);
@@ -2487,15 +2522,13 @@ static inline struct dp_peer *dp_peer_find_add_id(struct dp_soc *soc,
vdev_id);
return NULL;
}
QDF_ASSERT(peer->peer_id == HTT_INVALID_PEER);
dp_peer_find_id_to_obj_add(soc, peer, peer_id);
dp_mlo_partner_chips_map(soc, peer, peer_id);
if (peer->peer_id == HTT_INVALID_PEER) {
peer->peer_id = peer_id;
dp_monitor_peer_tid_peer_id_update(soc, peer,
peer->peer_id);
} else {
QDF_ASSERT(0);
}
dp_monitor_peer_tid_peer_id_update(soc, peer,
peer->peer_id);
dp_peer_update_state(soc, peer, DP_PEER_STATE_ACTIVE);
return peer;