diff --git a/dp/wifi3.0/dp_internal.h b/dp/wifi3.0/dp_internal.h index 8a7415cb08e4..4b867075533f 100644 --- a/dp/wifi3.0/dp_internal.h +++ b/dp/wifi3.0/dp_internal.h @@ -301,19 +301,21 @@ while (0) DP_STATS_AGGR(_tgtobj, _srcobj, rx.non_amsdu_cnt); \ DP_STATS_AGGR(_tgtobj, _srcobj, rx.amsdu_cnt); \ DP_STATS_AGGR_PKT(_tgtobj, _srcobj, rx.to_stack); \ - DP_STATS_AGGR_PKT(_tgtobj, _srcobj, rx.bcast);\ \ for (i = 0; i < CDP_MAX_RX_RINGS; i++) \ DP_STATS_AGGR_PKT(_tgtobj, _srcobj, rx.rcvd_reo[i]); \ \ _srcobj->stats.rx.unicast.num = \ _srcobj->stats.rx.to_stack.num - \ - _srcobj->stats.rx.multicast.num; \ + (_srcobj->stats.rx.multicast.num + \ + _srcobj->stats.rx.bcast.num); \ _srcobj->stats.rx.unicast.bytes = \ _srcobj->stats.rx.to_stack.bytes - \ - _srcobj->stats.rx.multicast.bytes; \ + (_srcobj->stats.rx.multicast.bytes + \ + _srcobj->stats.rx.bcast.bytes); \ DP_STATS_AGGR_PKT(_tgtobj, _srcobj, rx.unicast); \ DP_STATS_AGGR_PKT(_tgtobj, _srcobj, rx.multicast); \ + DP_STATS_AGGR_PKT(_tgtobj, _srcobj, rx.bcast); \ DP_STATS_AGGR_PKT(_tgtobj, _srcobj, rx.raw); \ DP_STATS_AGGR_PKT(_tgtobj, _srcobj, rx.intra_bss.pkts); \ DP_STATS_AGGR_PKT(_tgtobj, _srcobj, rx.intra_bss.fail); \ diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c index bc22d9fa5688..a55d33e7f5c4 100644 --- a/dp/wifi3.0/dp_main.c +++ b/dp/wifi3.0/dp_main.c @@ -4923,9 +4923,11 @@ static void dp_pdev_getstats(struct cdp_pdev *pdev_handle, stats->tx_dropped = stats->tx_errors; stats->rx_packets = pdev->stats.rx.unicast.num + - pdev->stats.rx.multicast.num; + pdev->stats.rx.multicast.num + + pdev->stats.rx.bcast.num; stats->rx_bytes = pdev->stats.rx.unicast.bytes + - pdev->stats.rx.multicast.bytes; + pdev->stats.rx.multicast.bytes + + pdev->stats.rx.bcast.bytes; } /** @@ -5098,9 +5100,11 @@ dp_print_pdev_rx_stats(struct dp_pdev *pdev) pdev->stats.rx.to_stack.bytes); DP_PRINT_STATS("Multicast/Broadcast:"); DP_PRINT_STATS(" Packets = %d", - pdev->stats.rx.multicast.num); + (pdev->stats.rx.multicast.num + + pdev->stats.rx.bcast.num)); DP_PRINT_STATS(" Bytes = %llu", - pdev->stats.rx.multicast.bytes); + (pdev->stats.rx.multicast.bytes + + pdev->stats.rx.bcast.bytes)); DP_PRINT_STATS("Errors:"); DP_PRINT_STATS(" Rxdma Ring Un-inititalized = %d", pdev->stats.replenish.rxdma_err); diff --git a/dp/wifi3.0/dp_peer.c b/dp/wifi3.0/dp_peer.c index d233d3481959..e40a77ff61e6 100644 --- a/dp/wifi3.0/dp_peer.c +++ b/dp/wifi3.0/dp_peer.c @@ -714,7 +714,8 @@ struct dp_peer *dp_peer_find_hash_find(struct dp_soc *soc, * modified find will take care of finding the correct BSS peer. */ if (dp_peer_find_mac_addr_cmp(mac_addr, &peer->mac_addr) == 0 && - (peer->vdev->vdev_id == vdev_id)) { + ((peer->vdev->vdev_id == vdev_id) || + (vdev_id == DP_VDEV_ALL))) { #else if (dp_peer_find_mac_addr_cmp(mac_addr, &peer->mac_addr) == 0) { #endif @@ -1081,7 +1082,7 @@ void *dp_find_peer_by_addr(struct cdp_pdev *dev, uint8_t *peer_mac_addr, struct dp_pdev *pdev = (struct dp_pdev *)dev; struct dp_peer *peer; - peer = dp_peer_find_hash_find(pdev->soc, peer_mac_addr, 0, 0); + peer = dp_peer_find_hash_find(pdev->soc, peer_mac_addr, 0, DP_VDEV_ALL); if (!peer) return NULL; @@ -2041,7 +2042,7 @@ QDF_STATUS dp_peer_state_update(struct cdp_pdev *pdev_handle, uint8_t *peer_mac, struct dp_peer *peer; struct dp_pdev *pdev = (struct dp_pdev *)pdev_handle; - peer = dp_peer_find_hash_find(pdev->soc, peer_mac, 0, 0); + peer = dp_peer_find_hash_find(pdev->soc, peer_mac, 0, DP_VDEV_ALL); if (NULL == peer) { QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_ERROR, "Failed to find peer for: [%pM]", peer_mac); diff --git a/dp/wifi3.0/dp_types.h b/dp/wifi3.0/dp_types.h index 73d7f1317465..10c181d344b3 100644 --- a/dp/wifi3.0/dp_types.h +++ b/dp/wifi3.0/dp_types.h @@ -69,6 +69,7 @@ #define DP_QOS_TID 0x0f #define DP_IPV6_PRIORITY_SHIFT 20 #define MAX_MON_LINK_DESC_BANKS 2 +#define DP_VDEV_ALL 0xff #if defined(CONFIG_MCL) #define MAX_PDEV_CNT 1