Browse Source

qcacmn: Add support to handle OOR error on WBM ring

Add support to handle regular OOR frame error received on WBM ring

Change-Id: Ib290c4911e969debbf482f9495cab83a744f69d7
CRs-Fixed: 2876270
Karthik Kantamneni 4 years ago
parent
commit
143de06652
1 changed files with 20 additions and 1 deletions
  1. 20 1
      dp/wifi3.0/dp_rx_err.c

+ 20 - 1
dp/wifi3.0/dp_rx_err.c

@@ -462,7 +462,8 @@ dp_rx_oor_handle(struct dp_soc *soc,
 	 * to stack in this case since the connection might fail due to
 	 * to stack in this case since the connection might fail due to
 	 * duplicated EAP response.
 	 * duplicated EAP response.
 	 */
 	 */
-	if (mpdu_desc_info->mpdu_flags & HAL_MPDU_F_RETRY_BIT &&
+	if (mpdu_desc_info &&
+	    mpdu_desc_info->mpdu_flags & HAL_MPDU_F_RETRY_BIT &&
 	    peer->rx_tid[tid].ba_status == DP_RX_BA_ACTIVE) {
 	    peer->rx_tid[tid].ba_status == DP_RX_BA_ACTIVE) {
 		frame_mask &= ~FRAME_MASK_IPV4_EAPOL;
 		frame_mask &= ~FRAME_MASK_IPV4_EAPOL;
 		DP_STATS_INC(soc, rx.err.reo_err_oor_eapol_drop, 1);
 		DP_STATS_INC(soc, rx.err.reo_err_oor_eapol_drop, 1);
@@ -2339,6 +2340,24 @@ done:
 							  rx_tlv_hdr,
 							  rx_tlv_hdr,
 							  peer_id, tid);
 							  peer_id, tid);
 					break;
 					break;
+				case HAL_REO_ERR_REGULAR_FRAME_OOR:
+					if (hal_rx_msdu_end_first_msdu_get(soc->hal_soc,
+									   rx_tlv_hdr)) {
+						peer_id =
+							hal_rx_mpdu_start_sw_peer_id_get(soc->hal_soc,
+											 rx_tlv_hdr);
+						tid =
+							hal_rx_mpdu_start_tid_get(hal_soc, rx_tlv_hdr);
+					}
+					QDF_NBUF_CB_RX_PKT_LEN(nbuf) =
+						hal_rx_msdu_start_msdu_len_get(
+									       rx_tlv_hdr);
+					nbuf->next = NULL;
+					dp_rx_oor_handle(soc, nbuf,
+							 rx_tlv_hdr,
+							 NULL,
+							 peer_id, tid);
+					break;
 				case HAL_REO_ERR_BAR_FRAME_2K_JUMP:
 				case HAL_REO_ERR_BAR_FRAME_2K_JUMP:
 				case HAL_REO_ERR_BAR_FRAME_OOR:
 				case HAL_REO_ERR_BAR_FRAME_OOR:
 					if (peer)
 					if (peer)