qcacmn: Forward the igmp packet for intra bss processing

Forward the igmp packet for intra bss processing

Change-Id: Ie4838a00542e49e8d76503297332b99cf3e67563
CRs-Fixed: 3261921
Dieser Commit ist enthalten in:
Sai Rupesh Chevuru
2022-08-10 15:53:24 +05:30
committet von Madan Koyyalamudi
Ursprung 4720a30038
Commit 086f192c0a
4 geänderte Dateien mit 27 neuen und 0 gelöschten Zeilen

Datei anzeigen

@@ -113,6 +113,7 @@
#define CDP_MAX_RX_RINGS 8 /* max rx rings */
#define CDP_MAX_TX_COMP_RINGS 5 /* max tx/completion rings */
#define CDP_MAX_RX_WBM_RINGS 1 /* max rx wbm rings */
#define CDP_MAX_TX_TQM_STATUS 9 /* max tx tqm completion status */
#define CDP_MAX_TX_HTT_STATUS 7 /* max tx htt completion status */
@@ -1055,6 +1056,8 @@ struct cdp_tid_stats {
[CDP_MAX_DATA_TIDS];
struct cdp_tid_rx_stats tid_rx_stats[CDP_MAX_RX_RINGS]
[CDP_MAX_DATA_TIDS];
struct cdp_tid_rx_stats tid_rx_wbm_stats[CDP_MAX_RX_WBM_RINGS]
[CDP_MAX_DATA_TIDS];
};
/*

Datei anzeigen

@@ -1179,10 +1179,19 @@ bool dp_rx_mlo_igmp_handler(struct dp_soc *soc,
struct dp_vdev *mcast_primary_vdev = NULL;
struct dp_vdev_be *be_vdev = dp_get_be_vdev_from_dp_vdev(vdev);
struct dp_soc_be *be_soc = dp_get_be_soc_from_dp_soc(soc);
uint8_t tid = qdf_nbuf_get_tid_val(nbuf);
struct cdp_tid_rx_stats *tid_stats = &peer->vdev->pdev->stats.
tid_stats.tid_rx_wbm_stats[0][tid];
if (!(qdf_nbuf_is_ipv4_igmp_pkt(nbuf) ||
qdf_nbuf_is_ipv6_igmp_pkt(nbuf)))
return false;
if (!peer->bss_peer) {
if (dp_rx_intrabss_mcbc_fwd(soc, peer, NULL, nbuf, tid_stats))
dp_rx_err("forwarding failed");
}
/*
* In the case of ME6, Backhaul WDS, NAWDS
* send the igmp pkt on the same link where it received,

Datei anzeigen

@@ -2707,6 +2707,7 @@ dp_rx_wbm_err_process(struct dp_intr *int_ctx, struct dp_soc *soc,
bool process_sg_buf = false;
uint32_t wbm_err_src;
QDF_STATUS status;
struct hal_rx_mpdu_desc_info mpdu_desc_info = { 0 };
/* Debug -- Remove later */
qdf_assert(soc && hal_ring_hdl);
@@ -2793,6 +2794,13 @@ dp_rx_wbm_err_process(struct dp_intr *int_ctx, struct dp_soc *soc,
continue;
}
/* Get MPDU DESC info */
hal_rx_mpdu_desc_info_get(hal_soc, ring_desc, &mpdu_desc_info);
if (qdf_likely(mpdu_desc_info.mpdu_flags &
HAL_MPDU_F_QOS_CONTROL_VALID))
qdf_nbuf_set_tid_val(rx_desc->nbuf, mpdu_desc_info.tid);
rx_desc_pool = &soc->rx_desc_buf[rx_desc->pool_id];
dp_ipa_rx_buf_smmu_mapping_lock(soc);
dp_rx_nbuf_unmap_pool(soc, rx_desc_pool, nbuf);

Datei anzeigen

@@ -5107,6 +5107,7 @@ void dp_pdev_print_tid_stats(struct dp_pdev *pdev)
struct cdp_tid_tx_stats total_tx;
struct cdp_tid_rx_stats total_rx;
uint8_t tid, tqm_status_idx, htt_status_idx;
struct cdp_tid_rx_stats *rx_wbm_stats = NULL;
DP_PRINT_STATS("Packets received in hardstart: %llu ",
pdev->stats.tid_stats.ingress_stack);
@@ -5115,6 +5116,8 @@ void dp_pdev_print_tid_stats(struct dp_pdev *pdev)
DP_PRINT_STATS("Per TID Video Stats:\n");
for (tid = 0; tid < CDP_MAX_DATA_TIDS; tid++) {
rx_wbm_stats = &pdev->stats.tid_stats.tid_rx_wbm_stats[0][tid];
dp_accumulate_tid_stats(pdev, tid, &total_tx, &total_rx,
TID_COUNTER_STATS);
DP_PRINT_STATS("----TID: %d----", tid);
@@ -5171,6 +5174,10 @@ void dp_pdev_print_tid_stats(struct dp_pdev *pdev)
total_rx.mcast_msdu_cnt);
DP_PRINT_STATS("Rx Broadcast MSDU Count: %llu\n",
total_rx.bcast_msdu_cnt);
DP_PRINT_STATS("Rx WBM Intra Bss Deliver Count: %llu",
rx_wbm_stats->intrabss_cnt);
DP_PRINT_STATS("Rx WBM Intrabss Drop Count: %llu",
rx_wbm_stats->fail_cnt[INTRABSS_DROP]);
}
}