diff --git a/dp/wifi3.0/dp_rx.c b/dp/wifi3.0/dp_rx.c index 489038fd81..f19da364b5 100644 --- a/dp/wifi3.0/dp_rx.c +++ b/dp/wifi3.0/dp_rx.c @@ -2667,6 +2667,8 @@ bool dp_rx_deliver_special_frame(struct dp_soc *soc, struct dp_peer *peer, qdf_nbuf_pull_head(nbuf, skip_len); if (dp_rx_is_special_frame(nbuf, frame_mask)) { + dp_info("special frame, mpdu sn 0x%x", + hal_rx_get_rx_sequence(soc->hal_soc, rx_tlv_hdr)); qdf_nbuf_set_exc_frame(nbuf, 1); dp_rx_deliver_to_stack(soc, peer->vdev, peer, nbuf, NULL); diff --git a/dp/wifi3.0/dp_rx_err.c b/dp/wifi3.0/dp_rx_err.c index 8906deeee5..c94dfd32ee 100644 --- a/dp/wifi3.0/dp_rx_err.c +++ b/dp/wifi3.0/dp_rx_err.c @@ -466,10 +466,8 @@ dp_rx_pn_error_handle(struct dp_soc *soc, hal_ring_desc_t ring_desc, * * @soc: core txrx main context * @nbuf: pointer to msdu skb - * @rx_tlv_hdr: start of rx tlv header - * @mpdu_desc_info: pointer to mpdu level description info * @peer_id: dp peer ID - * @tid: dp tid + * @rx_tlv_hdr: start of rx tlv header * * This function process the msdu delivered from REO2TCL * ring with error type OOR @@ -479,34 +477,19 @@ dp_rx_pn_error_handle(struct dp_soc *soc, hal_ring_desc_t ring_desc, static void dp_rx_oor_handle(struct dp_soc *soc, qdf_nbuf_t nbuf, - uint8_t *rx_tlv_hdr, - struct hal_rx_mpdu_desc_info *mpdu_desc_info, uint16_t peer_id, - uint8_t tid) + uint8_t *rx_tlv_hdr) { uint32_t frame_mask = FRAME_MASK_IPV4_ARP | FRAME_MASK_IPV4_DHCP | FRAME_MASK_IPV4_EAPOL | FRAME_MASK_IPV6_DHCP; struct dp_peer *peer = NULL; peer = dp_peer_get_ref_by_id(soc, peer_id, DP_MOD_ID_RX_ERR); - if (!peer || tid >= DP_MAX_TIDS) { - dp_info_rl("peer or tid %d not valid", tid); + if (!peer) { + dp_info_rl("peer not found"); goto free_nbuf; } - /* - * For REO error 7 OOR, if it is retry frame under BA session, - * then it is likely SN duplicated frame, do not deliver EAPOL - * to stack in this case since the connection might fail due to - * duplicated EAP response. - */ - if (mpdu_desc_info && - mpdu_desc_info->mpdu_flags & HAL_MPDU_F_RETRY_BIT && - peer->rx_tid[tid].ba_status == DP_RX_BA_ACTIVE) { - frame_mask &= ~FRAME_MASK_IPV4_EAPOL; - DP_STATS_INC(soc, rx.err.reo_err_oor_eapol_drop, 1); - } - if (dp_rx_deliver_special_frame(soc, peer, nbuf, frame_mask, rx_tlv_hdr)) { DP_STATS_INC(soc, rx.err.reo_err_oor_to_stack, 1); @@ -627,24 +610,24 @@ more_msdu_link_desc: DP_STATS_INC(soc, rx.err.reo_err_oor_sg_count, 1); } - /* - * only first msdu, mpdu start description tlv valid? - * and use it for following msdu. - */ - if (hal_rx_msdu_end_first_msdu_get(soc->hal_soc, - rx_tlv_hdr_last)) - tid = hal_rx_mpdu_start_tid_get(soc->hal_soc, - rx_tlv_hdr_first); - switch (err_code) { case HAL_REO_ERR_REGULAR_FRAME_2K_JUMP: + /* + * only first msdu, mpdu start description tlv valid? + * and use it for following msdu. + */ + if (hal_rx_msdu_end_first_msdu_get(soc->hal_soc, + rx_tlv_hdr_last)) + tid = hal_rx_mpdu_start_tid_get( + soc->hal_soc, + rx_tlv_hdr_first); + dp_2k_jump_handle(soc, nbuf, rx_tlv_hdr_last, peer_id, tid); break; case HAL_REO_ERR_REGULAR_FRAME_OOR: - dp_rx_oor_handle(soc, nbuf, rx_tlv_hdr_last, - mpdu_desc_info, peer_id, tid); + dp_rx_oor_handle(soc, nbuf, peer_id, rx_tlv_hdr_last); break; default: dp_err_rl("Non-support error code %d", err_code); @@ -2321,9 +2304,8 @@ done: soc->hal_soc, rx_tlv_hdr); nbuf->next = NULL; dp_rx_oor_handle(soc, nbuf, - rx_tlv_hdr, - NULL, - peer_id, tid); + peer_id, + rx_tlv_hdr); break; case HAL_REO_ERR_BAR_FRAME_2K_JUMP: case HAL_REO_ERR_BAR_FRAME_OOR: diff --git a/dp/wifi3.0/dp_stats.c b/dp/wifi3.0/dp_stats.c index 09f2711bf3..3be289271e 100644 --- a/dp/wifi3.0/dp_stats.c +++ b/dp/wifi3.0/dp_stats.c @@ -6024,8 +6024,6 @@ void dp_txrx_path_stats(struct dp_soc *soc) pdev->soc->stats.rx.err.reo_err_oor_to_stack); DP_PRINT_STATS("REO err oor msdu drop: %u", pdev->soc->stats.rx.err.reo_err_oor_drop); - DP_PRINT_STATS("REO err oor eapol drop: %u", - pdev->soc->stats.rx.err.reo_err_oor_eapol_drop); DP_PRINT_STATS("Rx err msdu rejected: %d", soc->stats.rx.err.rejected); DP_PRINT_STATS("Rx raw frame dropped: %d", @@ -6617,9 +6615,6 @@ dp_print_soc_rx_stats(struct dp_soc *soc) DP_PRINT_STATS("REO err oor msdu drop: %d", soc->stats.rx.err.reo_err_oor_drop); - DP_PRINT_STATS("REO err oor eapol drop: %d", - soc->stats.rx.err.reo_err_oor_eapol_drop); - DP_PRINT_STATS("Rx err msdu rejected: %d", soc->stats.rx.err.rejected); diff --git a/dp/wifi3.0/dp_types.h b/dp/wifi3.0/dp_types.h index bace110ea8..f5cfbb7e79 100644 --- a/dp/wifi3.0/dp_types.h +++ b/dp/wifi3.0/dp_types.h @@ -1041,8 +1041,6 @@ struct dp_soc_stats { uint32_t dup_refill_link_desc; /* Incorrect msdu continuation bit in MSDU desc */ uint32_t msdu_continuation_err; - /* REO OOR eapol drop count */ - uint32_t reo_err_oor_eapol_drop; /* Non Eapol packet drop count due to peer not authorized */ uint32_t peer_unauth_rx_pkt_drop; /* count of start sequence (ssn) updates */