qcacmn: Parse 64-bit TLVs in monitor status ring for WCN7850

In WCN7850, the tlv header width is 64-bit and the tlv header
start is 8-byte aligned inside the monitor status ring desc.

Add changes to parse the monitor status ring TLV according
to the TLV header width.

Change-Id: I19860b871abbc3037174b9d0ae5ed6e52b1eb736
CRs-Fixed: 3084443
Dieser Commit ist enthalten in:
Rakesh Pillai
2021-11-26 02:01:21 -08:00
committet von Madan Koyyalamudi
Ursprung 0115477838
Commit 63ea23ade1
6 geänderte Dateien mit 81 neuen und 12 gelöschten Zeilen

Datei anzeigen

@@ -368,7 +368,8 @@ dp_rx_mon_status_process_tlv(struct dp_soc *soc, struct dp_intr *int_ctx,
ppdu_info,
tlv_status);
rx_tlv = hal_rx_status_get_next_tlv(rx_tlv);
rx_tlv = hal_rx_status_get_next_tlv(rx_tlv,
mon_pdev->is_tlv_hdr_64_bit);
if ((rx_tlv - rx_tlv_start) >=
RX_MON_STATUS_BUF_SIZE)

Datei anzeigen

@@ -4500,6 +4500,29 @@ QDF_STATUS dp_mon_soc_cfg_init(struct dp_soc *soc)
return QDF_STATUS_SUCCESS;
}
/**
* dp_mon_pdev_per_target_config() - Target specific monitor pdev configuration
* @pdev: PDEV handle [Should be valid]
*
* Return: None
*/
static void dp_mon_pdev_per_target_config(struct dp_pdev *pdev)
{
struct dp_soc *soc = pdev->soc;
struct dp_mon_pdev *mon_pdev = pdev->monitor_pdev;
int target_type;
target_type = hal_get_target_type(soc->hal_soc);
switch (target_type) {
case TARGET_TYPE_WCN7850:
mon_pdev->is_tlv_hdr_64_bit = true;
break;
default:
mon_pdev->is_tlv_hdr_64_bit = false;
break;
}
}
QDF_STATUS dp_mon_pdev_attach(struct dp_pdev *pdev)
{
struct dp_soc *soc;
@@ -4548,6 +4571,7 @@ QDF_STATUS dp_mon_pdev_attach(struct dp_pdev *pdev)
}
pdev->monitor_pdev = mon_pdev;
dp_mon_pdev_per_target_config(pdev);
return QDF_STATUS_SUCCESS;
fail3:

Datei anzeigen

@@ -795,6 +795,7 @@ struct dp_mon_pdev {
/* enable spcl vap stats reset on ch change */
bool reset_scan_spcl_vap_stats_enable;
#endif
bool is_tlv_hdr_64_bit;
};
struct dp_mon_vdev {