qcacmn: Validate rx desc unmap in RXDMA err ring
Currently, in STA+Monitor mode, the first MSDU in MPDU is unmapped and goes down. This MSDU is now processed as rxdma err packet and crashes due to double unmap as rxdma err ring is configured as monitor dest ring in monitor mode. To fix this, validate rx descriptor unmapped flag in rxdma err processing. Change-Id: Ic503aa18e2269d8bda6aaf9b349c1ad8be11dcff CRs-Fixed: 3175972
This commit is contained in:

کامیت شده توسط
Madan Koyyalamudi

والد
324dcd5688
کامیت
207111647e
@@ -3236,13 +3236,16 @@ dp_rx_err_mpdu_pop(struct dp_soc *soc, uint32_t mac_id,
|
||||
continue;
|
||||
}
|
||||
|
||||
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,
|
||||
msdu);
|
||||
rx_desc->unmapped = 1;
|
||||
dp_ipa_rx_buf_smmu_mapping_unlock(soc);
|
||||
if (rx_desc->unmapped == 0) {
|
||||
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,
|
||||
msdu);
|
||||
rx_desc->unmapped = 1;
|
||||
dp_ipa_rx_buf_smmu_mapping_unlock(soc);
|
||||
}
|
||||
|
||||
dp_rx_err_debug("%pK: msdu_nbuf=%pK ",
|
||||
soc, msdu);
|
||||
|
مرجع در شماره جدید
Block a user