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
This commit is contained in:
Rakesh Pillai
2022-09-15 00:18:19 -07:00
committed by Madan Koyyalamudi
parent 61d0f0ab4e
commit cdc30dc279

View File

@@ -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 =