Quellcode durchsuchen

qcacmn: Handle LFR case in RX datapath

Add checks for peer as this can be NULL in case of LFR.

Change-Id: I64cc719c9461af5ce9fa4e4e19ba2feedb58a64c
CRs-Fixed: 2128291
psimha vor 7 Jahren
Ursprung
Commit
03f9a792e3
1 geänderte Dateien mit 10 neuen und 5 gelöschten Zeilen
  1. 10 5
      dp/wifi3.0/dp_rx.c

+ 10 - 5
dp/wifi3.0/dp_rx.c

@@ -1100,7 +1100,10 @@ done:
 					HAL_RX_BUF_RBM_SW3_BM);
 	}
 
-	vdev = NULL;
+	/* Peer can be NULL is case of LFR */
+	if (qdf_likely(peer != NULL))
+		vdev = NULL;
+
 	nbuf = nbuf_head;
 	while (nbuf) {
 		next = nbuf->next;
@@ -1110,12 +1113,14 @@ done:
 		peer_id = DP_PEER_METADATA_PEER_ID_GET(peer_mdata);
 		peer = dp_peer_find_by_id(soc, peer_id);
 
-		if (deliver_list_head && (vdev != peer->vdev)) {
+		if (deliver_list_head && peer && (vdev != peer->vdev)) {
 			dp_rx_deliver_to_stack(vdev, peer, deliver_list_head);
 			deliver_list_head = NULL;
 			deliver_list_tail = NULL;
 		}
-		vdev = peer->vdev;
+
+		if (qdf_likely(peer != NULL))
+			vdev = peer->vdev;
 
 		/*
 		 * Check if DMA completed -- msdu_done is the last bit
@@ -1177,7 +1182,7 @@ done:
 		 */
 		dp_rx_peer_validity_check(peer);
 
-		if (qdf_unlikely(peer->bss_peer)) {
+		if (qdf_unlikely(peer && peer->bss_peer)) {
 			QDF_TRACE(QDF_MODULE_ID_DP,
 				QDF_TRACE_LEVEL_ERROR,
 				FL("received pkt with same src MAC"));
@@ -1192,7 +1197,7 @@ done:
 
 		pdev = vdev->pdev;
 
-		if (qdf_unlikely((peer->nawds_enabled == true) &&
+		if (qdf_unlikely(peer && (peer->nawds_enabled == true) &&
 			(hal_rx_msdu_end_da_is_mcbc_get(rx_tlv_hdr)) &&
 			(hal_rx_get_mpdu_mac_ad4_valid(rx_tlv_hdr) == false))) {
 			DP_STATS_INC_PKT(peer, rx.nawds_mcast_drop, 1,