|
@@ -949,6 +949,10 @@ dp_rx_process_rxdma_err(struct dp_soc *soc, qdf_nbuf_t nbuf,
|
|
|
|
|
|
hal_rx_dump_pkt_tlvs(soc->hal_soc, rx_tlv_hdr,
|
|
|
QDF_TRACE_LEVEL_INFO);
|
|
|
+ if (dp_rxdma_err_nbuf_drop()) {
|
|
|
+ qdf_nbuf_free(nbuf);
|
|
|
+ return;
|
|
|
+ }
|
|
|
qdf_assert(0);
|
|
|
}
|
|
|
|
|
@@ -1507,7 +1511,7 @@ done:
|
|
|
while (nbuf) {
|
|
|
struct dp_peer *peer;
|
|
|
uint16_t peer_id;
|
|
|
- uint8_t e_code;
|
|
|
+ uint8_t err_code;
|
|
|
uint8_t *tlv_hdr;
|
|
|
rx_tlv_hdr = qdf_nbuf_data(nbuf);
|
|
|
|
|
@@ -1638,27 +1642,20 @@ done:
|
|
|
|
|
|
case HAL_RXDMA_ERR_DECRYPT:
|
|
|
pool_id = wbm_err_info.pool_id;
|
|
|
- e_code = wbm_err_info.rxdma_err_code;
|
|
|
+ err_code = wbm_err_info.rxdma_err_code;
|
|
|
tlv_hdr = rx_tlv_hdr;
|
|
|
+ dp_rx_process_rxdma_err(soc, nbuf,
|
|
|
+ tlv_hdr, peer,
|
|
|
+ err_code,
|
|
|
+ pool_id);
|
|
|
+ nbuf = next;
|
|
|
if (peer) {
|
|
|
DP_STATS_INC(peer, rx.err.
|
|
|
decrypt_err, 1);
|
|
|
- } else {
|
|
|
- dp_rx_process_rxdma_err(soc,
|
|
|
- nbuf,
|
|
|
- tlv_hdr,
|
|
|
- NULL,
|
|
|
- e_code,
|
|
|
- pool_id
|
|
|
- );
|
|
|
- nbuf = next;
|
|
|
- continue;
|
|
|
+ dp_peer_unref_del_find_by_id(
|
|
|
+ peer);
|
|
|
}
|
|
|
-
|
|
|
- QDF_TRACE(QDF_MODULE_ID_DP,
|
|
|
- QDF_TRACE_LEVEL_DEBUG,
|
|
|
- "Packet received with Decrypt error");
|
|
|
- break;
|
|
|
+ continue;
|
|
|
|
|
|
default:
|
|
|
dp_err_rl("RXDMA error %d",
|