qcacmn: Add support to configure phy error mask

The monitor status ring is configured for filtering
in undecoded phy error packets. Each phy error can
be controlled using a specific error mask configuration.

Added below cfg80211tool command to configure phy error
mask for filtering undecoded phy error packets.

cfg80211tool wifix set_phyrx_error_mask mask_0to31 mask_32to63
cfg80211tool wifix get_phyrx_error_mask

Change-Id: I5e4f6a49458cc534d6d1d0f7f2a7424f3cc747b4
This commit is contained in:
Basamma Yakkanahalli
2022-02-11 22:10:26 +05:30
committed by Madan Koyyalamudi
parent e85fbce095
commit 3498dbc3a6
6 changed files with 169 additions and 1 deletions

View File

@@ -1001,6 +1001,10 @@ struct dp_mon_pdev {
/* indicates if spcl vap is configured */
bool scan_spcl_vap_configured;
bool undecoded_metadata_capture;
#ifdef QCA_UNDECODED_METADATA_SUPPORT
uint32_t phyrx_error_mask;
uint32_t phyrx_error_mask_cont;
#endif
#ifdef QCA_SUPPORT_SCAN_SPCL_VAP_STATS
/* enable spcl vap stats reset on ch change */
bool reset_scan_spcl_vap_stats_enable;
@@ -2035,6 +2039,53 @@ QDF_STATUS dp_monitor_config_undecoded_metadata_capture(struct dp_pdev *pdev,
return monitor_ops->mon_config_undecoded_metadata_capture(pdev, val);
}
static inline QDF_STATUS
dp_monitor_config_undecoded_metadata_phyrx_error_mask(struct dp_pdev *pdev,
int mask, int mask_cont)
{
struct dp_mon_ops *monitor_ops;
struct dp_mon_pdev *mon_pdev = pdev->monitor_pdev;
struct dp_mon_soc *mon_soc = pdev->soc->monitor_soc;
if (!mon_soc)
return QDF_STATUS_E_FAILURE;
if (!mon_pdev)
return QDF_STATUS_E_FAILURE;
monitor_ops = mon_soc->mon_ops;
if (!monitor_ops ||
!monitor_ops->mon_config_undecoded_metadata_capture) {
dp_mon_debug("callback not registered");
return QDF_STATUS_E_FAILURE;
}
if (!mon_pdev->undecoded_metadata_capture) {
qdf_info("mask:0x%x mask_cont:0x%x", mask, mask_cont);
return QDF_STATUS_SUCCESS;
}
mon_pdev->phyrx_error_mask = mask;
mon_pdev->phyrx_error_mask_cont = mask_cont;
return monitor_ops->mon_config_undecoded_metadata_capture(pdev, 1);
}
static inline QDF_STATUS
dp_monitor_get_undecoded_metadata_phyrx_error_mask(struct dp_pdev *pdev,
int *mask, int *mask_cont)
{
struct dp_mon_pdev *mon_pdev = pdev->monitor_pdev;
if (!mon_pdev)
return QDF_STATUS_E_FAILURE;
*mask = mon_pdev->phyrx_error_mask;
*mask_cont = mon_pdev->phyrx_error_mask_cont;
return QDF_STATUS_SUCCESS;
}
#else
static inline
QDF_STATUS dp_monitor_config_undecoded_metadata_capture(struct dp_pdev *pdev,
@@ -2042,7 +2093,21 @@ QDF_STATUS dp_monitor_config_undecoded_metadata_capture(struct dp_pdev *pdev,
{
return QDF_STATUS_SUCCESS;
}
#endif
static inline QDF_STATUS
dp_monitor_config_undecoded_metadata_phyrx_error_mask(struct dp_pdev *pdev,
int mask1, int mask2)
{
return QDF_STATUS_SUCCESS;
}
static inline QDF_STATUS
dp_monitor_get_undecoded_metadata_phyrx_error_mask(struct dp_pdev *pdev,
int *mask, int *mask_cont)
{
return QDF_STATUS_SUCCESS;
}
#endif /* QCA_UNDECODED_METADATA_SUPPORT */
/*
* dp_monitor_htt_srng_setup() - Setup htt srng