qcacmn: remove peer backpointer in DP ast entry

Remove the peer backpointer in ast entry and store
peer_id instead

Assign peer_id in AST entry in AST MAP event,
also add the ast entry to peers ast list

In AST map & AST unmap APIs use ast find by vdev_id

Change-Id: I74d9828dc309149d98f6f577b5c8304cb087fd76
This commit is contained in:
Chaithanya Garrepalli
2020-08-14 14:30:02 +05:30
committed by snandini
parent fdc6a808ae
commit f4701f13ec
8 changed files with 193 additions and 115 deletions

View File

@@ -567,7 +567,9 @@ dp_rx_intrabss_fwd(struct dp_soc *soc,
{
uint16_t len;
uint8_t is_frag;
struct dp_peer *da_peer;
uint16_t da_peer_id = HTT_INVALID_PEER;
struct dp_peer *da_peer = NULL;
bool is_da_bss_peer = false;
struct dp_ast_entry *ast_entry;
qdf_nbuf_t nbuf_copy;
uint8_t tid = qdf_nbuf_get_tid_val(nbuf);
@@ -591,18 +593,28 @@ dp_rx_intrabss_fwd(struct dp_soc *soc,
return false;
}
da_peer = ast_entry->peer;
da_peer_id = ast_entry->peer_id;
if (!da_peer)
if (da_peer_id == HTT_INVALID_PEER)
return false;
/* TA peer cannot be same as peer(DA) on which AST is present
* this indicates a change in topology and that AST entries
* are yet to be updated.
*/
if (da_peer == ta_peer)
if (da_peer_id == ta_peer->peer_id)
return false;
if (da_peer->vdev == ta_peer->vdev && !da_peer->bss_peer) {
if (ast_entry->vdev_id != ta_peer->vdev->vdev_id)
return false;
da_peer = dp_peer_get_ref_by_id(soc, da_peer_id,
DP_MOD_ID_RX);
if (!da_peer)
return false;
is_da_bss_peer = da_peer->bss_peer;
dp_peer_unref_delete(da_peer, DP_MOD_ID_RX);
if (!is_da_bss_peer) {
len = QDF_NBUF_CB_RX_PKT_LEN(nbuf);
is_frag = qdf_nbuf_is_frag(nbuf);
memset(nbuf->cb, 0x0, sizeof(nbuf->cb));