qcacld-3.0: Fill proper SGI for VHT Rx data packet

Due to limitation uCode always filling SGI as long in
rx_msdu_start_tlv.
This change is to update SGI for VHT Rx data packet which is
extracted from WMI_VDEV_SMART_MONITOR_EVENTID.

Change-Id: I5fcdc463ea2a6d83253e39cc377a2471aeb4e133
CRs-Fixed: 3459106
This commit is contained in:
Balaji Pothunoori
2023-06-08 17:57:28 +05:30
committed by Rahul Choudhary
父節點 08cb2d94aa
當前提交 d92eb50e4f
共有 4 個文件被更改,包括 9 次插入6 次删除

查看文件

@@ -1,6 +1,6 @@
/*
* Copyright (c) 2020-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@@ -59,12 +59,12 @@ struct pkt_capture_cb_context {
* @cb_ctx: pointer to packet capture mon callback context
* @frame_filter: config filter set by vendor command
* @cfg_params: packet capture config params
* @rx_avg_rssi: avg rssi of rx data packets
* @ppdu_stats_q: list used for storing smu related ppdu stats
* @lock_q: spinlock for ppdu_stats q
* @tx_nss: nss of tx data packets received from ppdu stats
* @last_freq: Last connected freq
* @curr_freq: current connected freq
* @rx_vht_sgi: guard interval of vht rx packet
*/
struct pkt_capture_vdev_priv {
struct wlan_objmgr_vdev *vdev;
@@ -72,12 +72,12 @@ struct pkt_capture_vdev_priv {
struct pkt_capture_cb_context *cb_ctx;
struct pkt_capture_frame_filter frame_filter;
struct pkt_capture_cfg cfg_params;
int32_t rx_avg_rssi;
qdf_list_t ppdu_stats_q;
qdf_spinlock_t lock_q;
uint8_t tx_nss;
qdf_freq_t last_freq;
qdf_freq_t curr_freq;
uint8_t rx_vht_sgi;
};
/**

查看文件

@@ -690,6 +690,7 @@ static void pkt_capture_rx_get_phy_info(void *context, void *psoc,
struct dp_soc *soc = psoc;
hal_soc_handle_t hal_soc;
struct wlan_objmgr_vdev *vdev = context;
struct pkt_capture_vdev_priv *vdev_priv;
hal_soc = soc->hal_soc;
preamble_type = hal_rx_tlv_get_pkt_type(hal_soc, rx_tlv_hdr);
@@ -697,6 +698,7 @@ static void pkt_capture_rx_get_phy_info(void *context, void *psoc,
bw = hal_rx_tlv_bw_get(hal_soc, rx_tlv_hdr);
mcs = hal_rx_tlv_rate_mcs_get(hal_soc, rx_tlv_hdr);
sgi = hal_rx_tlv_sgi_get(hal_soc, rx_tlv_hdr);
vdev_priv = pkt_capture_vdev_get_priv(vdev);
switch (preamble_type) {
case HAL_RX_PKT_TYPE_11A:
@@ -715,6 +717,7 @@ static void pkt_capture_rx_get_phy_info(void *context, void *psoc,
rx_status->ht_mcs = mcs;
break;
case HAL_RX_PKT_TYPE_11AC:
sgi = vdev_priv->rx_vht_sgi;
rx_status->vht_flags = 1;
rx_status->vht_flag_values3[0] = mcs << 0x4 | nss;
bw = vdev->vdev_mlme.des_chan->ch_width;

查看文件

@@ -83,7 +83,7 @@ struct mgmt_offload_event_params {
struct smu_event_params {
uint32_t vdev_id;
int32_t rx_avg_rssi;
uint8_t rx_vht_sgi;
};
/**

查看文件

@@ -1,6 +1,6 @@
/*
* Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2021, 2023 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@@ -222,7 +222,7 @@ tgt_pkt_capture_smu_event(struct wlan_objmgr_psoc *psoc,
return QDF_STATUS_E_FAILURE;
}
vdev_priv->rx_avg_rssi = param->rx_avg_rssi;
vdev_priv->rx_vht_sgi = param->rx_vht_sgi;
pkt_capture_vdev_put_ref(vdev);