From 0dae67614e986ba4ab1750dfe028230c6ab4e5ab Mon Sep 17 00:00:00 2001 From: Anish Nataraj Date: Fri, 2 Mar 2018 22:31:45 +0530 Subject: [PATCH] qcacmn: Assign bss peer in peer map event Assign num_mpdu to mpdu_tried_mcast for mcast stats updation Defer bss peer assigning till peer map event arrives Do not set delete_in_progress for bss Peer Change-Id: I0881ea3c8804990c336d97cb7b239a991ec64fa9 --- dp/wifi3.0/dp_htt.c | 1 + dp/wifi3.0/dp_peer.c | 12 ++++++++++++ dp/wifi3.0/dp_peer.h | 8 ++++++++ 3 files changed, 21 insertions(+) diff --git a/dp/wifi3.0/dp_htt.c b/dp/wifi3.0/dp_htt.c index 0e51bde40ec5..4693fc61699c 100644 --- a/dp/wifi3.0/dp_htt.c +++ b/dp/wifi3.0/dp_htt.c @@ -1693,6 +1693,7 @@ static void dp_process_ppdu_stats_user_common_tlv( ppdu_user_desc->is_mcast = true; ppdu_user_desc->mpdu_tried_mcast = HTT_PPDU_STATS_USER_COMMON_TLV_MPDUS_TRIED_GET(*tag_buf); + ppdu_user_desc->num_mpdu = ppdu_user_desc->mpdu_tried_mcast; } else { ppdu_user_desc->mpdu_tried_ucast = HTT_PPDU_STATS_USER_COMMON_TLV_MPDUS_TRIED_GET(*tag_buf); diff --git a/dp/wifi3.0/dp_peer.c b/dp/wifi3.0/dp_peer.c index e873a3f3bc59..31bf74f94a64 100644 --- a/dp/wifi3.0/dp_peer.c +++ b/dp/wifi3.0/dp_peer.c @@ -972,6 +972,18 @@ dp_rx_peer_map_handler(void *soc_handle, uint16_t peer_id, uint16_t hw_peer_id, peer = dp_peer_find_add_id(soc, peer_mac_addr, peer_id, hw_peer_id, vdev_id); + qdf_assert_always(peer->vdev); + /* + * For every peer MAp message search and set if bss_peer + */ + if (!(qdf_mem_cmp(peer->mac_addr.raw, peer->vdev->mac_addr.raw, + DP_MAC_ADDR_LEN))) { + QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_INFO_HIGH, + "vdev bss_peer!!!!"); + peer->bss_peer = 1; + peer->vdev->vap_bss_peer = peer; + } + dp_peer_map_ast(soc, peer, peer_mac_addr, hw_peer_id, vdev_id); } diff --git a/dp/wifi3.0/dp_peer.h b/dp/wifi3.0/dp_peer.h index b7c562027161..b12f94734f90 100644 --- a/dp/wifi3.0/dp_peer.h +++ b/dp/wifi3.0/dp_peer.h @@ -42,6 +42,14 @@ dp_peer_find_by_id(struct dp_soc *soc, peer = (peer_id >= soc->max_peers) ? NULL : soc->peer_id_to_obj_map[peer_id]; + /** + * For bss peer, peer is not really deleted + * but reference count is decremented in firmware + * and hence ignore delete in progress for bss peer + */ + if (peer && !peer->bss_peer && peer->delete_in_progress) + return NULL; + return peer; }