From e2de05aa20358b4483042c347da7f4f6f1bcaf40 Mon Sep 17 00:00:00 2001 From: Manikanta Pubbisetty Date: Thu, 17 Jun 2021 09:29:25 +0530 Subject: [PATCH] qcacld-3.0: compare FSE metadata when REO ID mismatches When an existing flow is evicted, there is chance that the REO ID of the newly added flow and the inflight packets of the evicted flow mismatch. In such cases, check the FSE metadata of the flow with that of the packet instead of triggering a BUG(). Change-Id: I7412055101fb72f7b28db615672e88837d79e8d3 CRs-Fixed: 2968500 --- core/dp/txrx3.0/dp_fisa_rx.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/core/dp/txrx3.0/dp_fisa_rx.c b/core/dp/txrx3.0/dp_fisa_rx.c index 61d407758616..96f217aaab04 100644 --- a/core/dp/txrx3.0/dp_fisa_rx.c +++ b/core/dp/txrx3.0/dp_fisa_rx.c @@ -1645,6 +1645,7 @@ static int dp_add_nbuf_to_fisa_flow(struct dp_rx_fst *fisa_hdl, uint32_t hal_aggr_count; uint8_t napi_id = QDF_NBUF_CB_RX_CTX_ID(nbuf); uint8_t reo_id = fisa_flow->napi_id; + uint32_t fse_metadata; dump_tlvs(hal_soc_hdl, rx_tlv_hdr, QDF_TRACE_LEVEL_INFO_HIGH); dp_fisa_debug("nbuf: %pK nbuf->next:%pK nbuf->data:%pK len %d data_len %d", @@ -1655,10 +1656,16 @@ static int dp_add_nbuf_to_fisa_flow(struct dp_rx_fst *fisa_hdl, * the one configured. */ if (qdf_unlikely(fisa_flow->napi_id != napi_id)) { + fse_metadata = + hal_rx_msdu_fse_metadata_get(hal_soc_hdl, rx_tlv_hdr); + if (fisa_hdl->del_flow_count && + fse_metadata != fisa_flow->metadata) + return FISA_AGGR_NOT_ELIGIBLE; + dp_err("REO id mismatch flow: %pK napi_id: %u nbuf: %pK reo_id: %u", fisa_flow, fisa_flow->napi_id, nbuf, napi_id); - QDF_BUG(0); DP_STATS_INC(fisa_hdl, reo_mismatch, 1); + QDF_BUG(0); return FISA_AGGR_NOT_ELIGIBLE; }