Prechádzať zdrojové kódy

qcacmn: Set the packet start offset correctly for monitor mode

The packet start offset configuration is common
for both mission mode and monitor mode. Hence if
the packet_header tlv is not subscribed for the
regular mission mode, the packet start offset for
monitor mode also gets affected, where packet_header
is subscribed.

This causes a loss of 128 bytes in the packets
captured in monitor mode.
Fix this issue, by setting the packet start offset
based on the driver operation mode.

Change-Id: I0a0e431278bef519534c2b1be87797d9b047525c
CRs-Fixed: 3292130
Rakesh Pillai 2 rokov pred
rodič
commit
cdc30dc279
1 zmenil súbory, kde vykonal 20 pridanie a 2 odobranie
  1. 20 2
      dp/wifi3.0/be/dp_be.c

+ 20 - 2
dp/wifi3.0/be/dp_be.c

@@ -798,7 +798,16 @@ dp_rxdma_ring_sel_cfg_be(struct dp_soc *soc)
 	htt_tlv_filter.rx_msdu_start_offset = 0;
 	htt_tlv_filter.rx_attn_offset = 0;
 
-	htt_tlv_filter.rx_packet_offset = soc->rx_pkt_tlv_size;
+	/*
+	 * For monitor mode, the packet hdr tlv is enabled later during
+	 * filter update
+	 */
+	if (soc->cdp_soc.ol_ops->get_con_mode &&
+	    soc->cdp_soc.ol_ops->get_con_mode() == QDF_GLOBAL_MONITOR_MODE)
+		htt_tlv_filter.rx_packet_offset = soc->rx_mon_pkt_tlv_size;
+	else
+		htt_tlv_filter.rx_packet_offset = soc->rx_pkt_tlv_size;
+
 	/*Not subscribing rx_pkt_header*/
 	htt_tlv_filter.rx_header_offset = 0;
 	htt_tlv_filter.rx_mpdu_start_offset =
@@ -891,7 +900,16 @@ dp_rxdma_ring_sel_cfg_be(struct dp_soc *soc)
 	htt_tlv_filter.rx_msdu_start_offset = 0;
 	htt_tlv_filter.rx_attn_offset = 0;
 
-	htt_tlv_filter.rx_packet_offset = soc->rx_pkt_tlv_size;
+	/*
+	 * For monitor mode, the packet hdr tlv is enabled later during
+	 * filter update
+	 */
+	if (soc->cdp_soc.ol_ops->get_con_mode &&
+	    soc->cdp_soc.ol_ops->get_con_mode() == QDF_GLOBAL_MONITOR_MODE)
+		htt_tlv_filter.rx_packet_offset = soc->rx_mon_pkt_tlv_size;
+	else
+		htt_tlv_filter.rx_packet_offset = soc->rx_pkt_tlv_size;
+
 	htt_tlv_filter.rx_header_offset =
 				hal_rx_pkt_tlv_offset_get(soc->hal_soc);
 	htt_tlv_filter.rx_mpdu_start_offset =