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:

committet von
Madan Koyyalamudi

Ursprung
4720a30038
Commit
086f192c0a
@@ -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];
|
||||
};
|
||||
|
||||
/*
|
||||
|
@@ -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,
|
||||
|
@@ -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);
|
||||
|
@@ -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]);
|
||||
}
|
||||
}
|
||||
|
||||
|
In neuem Issue referenzieren
Einen Benutzer sperren