|
@@ -569,6 +569,7 @@ dp_rx_null_q_desc_handle(struct dp_soc *soc,
|
|
|
uint16_t peer_id = 0xFFFF;
|
|
|
struct dp_peer *peer = NULL;
|
|
|
uint8_t tid;
|
|
|
+ struct ether_header *eh;
|
|
|
|
|
|
qdf_nbuf_set_rx_chfrag_start(nbuf,
|
|
|
hal_rx_msdu_end_first_msdu_get(rx_tlv_hdr));
|
|
@@ -722,12 +723,21 @@ dp_rx_null_q_desc_handle(struct dp_soc *soc,
|
|
|
vdev->osif_rx);
|
|
|
qdf_nbuf_set_next(nbuf, NULL);
|
|
|
vdev->osif_rx(vdev->osif_vdev, nbuf);
|
|
|
- DP_STATS_INCC_PKT(vdev->pdev, rx.multicast, 1,
|
|
|
- qdf_nbuf_len(nbuf),
|
|
|
- hal_rx_msdu_end_da_is_mcbc_get(
|
|
|
- rx_tlv_hdr));
|
|
|
- DP_STATS_INC_PKT(vdev->pdev, rx.to_stack, 1,
|
|
|
- qdf_nbuf_len(nbuf));
|
|
|
+ DP_STATS_INC_PKT(peer, rx.to_stack, 1,
|
|
|
+ qdf_nbuf_len(nbuf));
|
|
|
+ if (qdf_unlikely(hal_rx_msdu_end_da_is_mcbc_get(
|
|
|
+ rx_tlv_hdr) &&
|
|
|
+ (vdev->rx_decap_type ==
|
|
|
+ htt_cmn_pkt_type_ethernet))) {
|
|
|
+ eh = (struct ether_header *)qdf_nbuf_data(nbuf);
|
|
|
+
|
|
|
+ DP_STATS_INC_PKT(peer, rx.multicast, 1,
|
|
|
+ qdf_nbuf_len(nbuf));
|
|
|
+ if (IEEE80211_IS_BROADCAST(eh->ether_dhost)) {
|
|
|
+ DP_STATS_INC_PKT(peer, rx.bcast, 1,
|
|
|
+ qdf_nbuf_len(nbuf));
|
|
|
+ }
|
|
|
+ }
|
|
|
} else {
|
|
|
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR,
|
|
|
FL("INVALID vdev %pK OR osif_rx"), vdev);
|
|
@@ -838,6 +848,7 @@ dp_rx_err_deliver(struct dp_soc *soc, qdf_nbuf_t nbuf, uint8_t *rx_tlv_hdr)
|
|
|
eh = (struct ether_header *)qdf_nbuf_data(nbuf);
|
|
|
isBroadcast = (IEEE80211_IS_BROADCAST
|
|
|
(eh->ether_dhost)) ? 1 : 0 ;
|
|
|
+ DP_STATS_INC_PKT(peer, rx.multicast, 1, qdf_nbuf_len(nbuf));
|
|
|
if (isBroadcast) {
|
|
|
DP_STATS_INC_PKT(peer, rx.bcast, 1,
|
|
|
qdf_nbuf_len(nbuf));
|