qcacmn: Ini and Config command Support for MLO Link Peer Stats
Add support to enable/disable MLO Link Peer stats through ini and cfg80211tool enable_ol stats command Change-Id: Id1229a149befa416d060e1b07eee150e6b295abf CRs-Fixed: 3397721
此提交包含在:
@@ -1308,6 +1308,10 @@ struct cdp_mon_ops dp_ops_mon_1_0 = {
|
||||
.soc_config_full_mon_mode = dp_soc_config_full_mon_mode,
|
||||
.get_mon_pdev_rx_stats = dp_pdev_get_rx_mon_stats,
|
||||
.txrx_enable_mon_reap_timer = dp_enable_mon_reap_timer,
|
||||
#ifdef QCA_ENHANCED_STATS_SUPPORT
|
||||
.txrx_enable_enhanced_stats = dp_enable_enhanced_stats,
|
||||
.txrx_disable_enhanced_stats = dp_disable_enhanced_stats,
|
||||
#endif /* QCA_ENHANCED_STATS_SUPPORT */
|
||||
#ifdef QCA_SUPPORT_LITE_MONITOR
|
||||
.txrx_set_lite_mon_config = NULL,
|
||||
.txrx_get_lite_mon_config = NULL,
|
||||
|
@@ -1664,6 +1664,10 @@ struct cdp_mon_ops dp_ops_mon_2_0 = {
|
||||
.soc_config_full_mon_mode = NULL,
|
||||
.get_mon_pdev_rx_stats = dp_pdev_get_rx_mon_stats,
|
||||
.txrx_enable_mon_reap_timer = NULL,
|
||||
#ifdef QCA_ENHANCED_STATS_SUPPORT
|
||||
.txrx_enable_enhanced_stats = dp_enable_enhanced_stats_2_0,
|
||||
.txrx_disable_enhanced_stats = dp_disable_enhanced_stats_2_0,
|
||||
#endif /* QCA_ENHANCED_STATS_SUPPORT */
|
||||
#ifdef QCA_SUPPORT_LITE_MONITOR
|
||||
.txrx_set_lite_mon_config = dp_lite_mon_set_config,
|
||||
.txrx_get_lite_mon_config = dp_lite_mon_get_config,
|
||||
@@ -1752,3 +1756,49 @@ void dp_mon_rx_update_rx_protocol_tag_stats(struct dp_pdev *pdev,
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef QCA_ENHANCED_STATS_SUPPORT
|
||||
static void
|
||||
dp_enable_enhanced_stats_for_each_pdev(struct dp_soc *soc, void *arg) {
|
||||
uint8_t i = 0;
|
||||
|
||||
for (i = 0; i < MAX_PDEV_CNT; i++)
|
||||
dp_enable_enhanced_stats(dp_soc_to_cdp_soc_t(soc), i);
|
||||
}
|
||||
|
||||
QDF_STATUS
|
||||
dp_enable_enhanced_stats_2_0(struct cdp_soc_t *soc, uint8_t pdev_id)
|
||||
{
|
||||
struct dp_soc *dp_soc = cdp_soc_t_to_dp_soc(soc);
|
||||
struct dp_soc_be *be_soc = NULL;
|
||||
|
||||
be_soc = dp_get_be_soc_from_dp_soc(dp_soc);
|
||||
|
||||
dp_mlo_iter_ptnr_soc(be_soc,
|
||||
dp_enable_enhanced_stats_for_each_pdev,
|
||||
NULL);
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static void
|
||||
dp_disable_enhanced_stats_for_each_pdev(struct dp_soc *soc, void *arg) {
|
||||
uint8_t i = 0;
|
||||
|
||||
for (i = 0; i < MAX_PDEV_CNT; i++)
|
||||
dp_disable_enhanced_stats(dp_soc_to_cdp_soc_t(soc), i);
|
||||
}
|
||||
|
||||
QDF_STATUS
|
||||
dp_disable_enhanced_stats_2_0(struct cdp_soc_t *soc, uint8_t pdev_id)
|
||||
{
|
||||
struct dp_soc *dp_soc = cdp_soc_t_to_dp_soc(soc);
|
||||
struct dp_soc_be *be_soc = NULL;
|
||||
|
||||
be_soc = dp_get_be_soc_from_dp_soc(dp_soc);
|
||||
|
||||
dp_mlo_iter_ptnr_soc(be_soc,
|
||||
dp_disable_enhanced_stats_for_each_pdev,
|
||||
NULL);
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
#endif
|
||||
|
@@ -551,4 +551,27 @@ struct dp_mon_pdev_be *dp_get_be_mon_pdev_from_dp_mon_pdev(struct dp_mon_pdev *m
|
||||
return (struct dp_mon_pdev_be *)mon_pdev;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef QCA_ENHANCED_STATS_SUPPORT
|
||||
/*
|
||||
* dp_enable_enhanced_stats_2_0() - BE Wrapper to enable stats
|
||||
* @soc: Datapath soc handle
|
||||
* @pdev_id: Pdev Id on which stats will get enable
|
||||
*
|
||||
* Return: status success/failure
|
||||
*/
|
||||
QDF_STATUS
|
||||
dp_enable_enhanced_stats_2_0(struct cdp_soc_t *soc, uint8_t pdev_id);
|
||||
|
||||
/*
|
||||
* dp_disable_enhanced_stats_2_0() - BE Wrapper to disable stats
|
||||
* @soc: Datapath soc handle
|
||||
* @pdev_id: Pdev Id on which stats will get disable
|
||||
*
|
||||
* Return: status success/failure
|
||||
*/
|
||||
QDF_STATUS
|
||||
dp_disable_enhanced_stats_2_0(struct cdp_soc_t *soc, uint8_t pdev_id);
|
||||
#endif /* QCA_ENHANCED_STATS_SUPPORT */
|
||||
|
||||
#endif /* _DP_MON_2_0_H_ */
|
||||
|
@@ -1941,12 +1941,13 @@ static void dp_mon_tx_enable_enhanced_stats(struct dp_pdev *pdev)
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
static QDF_STATUS
|
||||
QDF_STATUS
|
||||
dp_enable_enhanced_stats(struct cdp_soc_t *soc, uint8_t pdev_id)
|
||||
{
|
||||
struct dp_pdev *pdev = NULL;
|
||||
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
||||
struct dp_mon_pdev *mon_pdev;
|
||||
struct dp_soc *dp_soc = cdp_soc_t_to_dp_soc(soc);
|
||||
|
||||
pdev = dp_get_pdev_from_soc_pdev_id_wifi3((struct dp_soc *)soc,
|
||||
pdev_id);
|
||||
@@ -1963,7 +1964,9 @@ dp_enable_enhanced_stats(struct cdp_soc_t *soc, uint8_t pdev_id)
|
||||
dp_cal_client_timer_start(mon_pdev->cal_client_ctx);
|
||||
|
||||
mon_pdev->enhanced_stats_en = 1;
|
||||
pdev->enhanced_stats_en = true;
|
||||
pdev->enhanced_stats_en = 1;
|
||||
pdev->link_peer_stats = wlan_cfg_is_peer_link_stats_enabled(
|
||||
dp_soc->wlan_cfg_ctx);
|
||||
|
||||
dp_mon_filter_setup_enhanced_stats(pdev);
|
||||
status = dp_mon_filter_update(pdev);
|
||||
@@ -1972,7 +1975,8 @@ dp_enable_enhanced_stats(struct cdp_soc_t *soc, uint8_t pdev_id)
|
||||
dp_mon_filter_reset_enhanced_stats(pdev);
|
||||
dp_cal_client_timer_stop(mon_pdev->cal_client_ctx);
|
||||
mon_pdev->enhanced_stats_en = 0;
|
||||
pdev->enhanced_stats_en = false;
|
||||
pdev->enhanced_stats_en = 0;
|
||||
pdev->link_peer_stats = 0;
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
@@ -2005,7 +2009,7 @@ static void dp_mon_tx_disable_enhanced_stats(struct dp_pdev *pdev)
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
static QDF_STATUS
|
||||
QDF_STATUS
|
||||
dp_disable_enhanced_stats(struct cdp_soc_t *soc, uint8_t pdev_id)
|
||||
{
|
||||
struct dp_pdev *pdev =
|
||||
@@ -2023,7 +2027,8 @@ dp_disable_enhanced_stats(struct cdp_soc_t *soc, uint8_t pdev_id)
|
||||
dp_cal_client_timer_stop(mon_pdev->cal_client_ctx);
|
||||
|
||||
mon_pdev->enhanced_stats_en = 0;
|
||||
pdev->enhanced_stats_en = false;
|
||||
pdev->enhanced_stats_en = 0;
|
||||
pdev->link_peer_stats = 0;
|
||||
|
||||
dp_mon_tx_disable_enhanced_stats(pdev);
|
||||
|
||||
@@ -6450,12 +6455,6 @@ void dp_mon_cdp_ops_register(struct dp_soc *soc)
|
||||
ops->ctrl_ops->txrx_update_peer_pkt_capture_params =
|
||||
dp_peer_update_pkt_capture_params;
|
||||
#endif /* WLAN_TX_PKT_CAPTURE_ENH || WLAN_RX_PKT_CAPTURE_ENH */
|
||||
#ifdef QCA_ENHANCED_STATS_SUPPORT
|
||||
ops->host_stats_ops->txrx_enable_enhanced_stats =
|
||||
dp_enable_enhanced_stats;
|
||||
ops->host_stats_ops->txrx_disable_enhanced_stats =
|
||||
dp_disable_enhanced_stats;
|
||||
#endif /* QCA_ENHANCED_STATS_SUPPORT */
|
||||
#ifdef WDI_EVENT_ENABLE
|
||||
ops->ctrl_ops->txrx_get_pldev = dp_get_pldev;
|
||||
#endif
|
||||
@@ -6515,10 +6514,6 @@ void dp_mon_cdp_ops_deregister(struct dp_soc *soc)
|
||||
#if defined(WLAN_TX_PKT_CAPTURE_ENH) || defined(WLAN_RX_PKT_CAPTURE_ENH)
|
||||
ops->ctrl_ops->txrx_update_peer_pkt_capture_params = NULL;
|
||||
#endif /* WLAN_TX_PKT_CAPTURE_ENH || WLAN_RX_PKT_CAPTURE_ENH */
|
||||
#ifdef FEATURE_PERPKT_INFO
|
||||
ops->host_stats_ops->txrx_enable_enhanced_stats = NULL;
|
||||
ops->host_stats_ops->txrx_disable_enhanced_stats = NULL;
|
||||
#endif /* FEATURE_PERPKT_INFO */
|
||||
#ifdef WDI_EVENT_ENABLE
|
||||
ops->ctrl_ops->txrx_get_pldev = NULL;
|
||||
#endif
|
||||
|
@@ -1064,7 +1064,7 @@ struct dp_mon_pdev {
|
||||
/* Neighnour peer list */
|
||||
TAILQ_HEAD(, dp_neighbour_peer) neighbour_peers_list;
|
||||
/* Enhanced Stats is enabled */
|
||||
bool enhanced_stats_en;
|
||||
uint8_t enhanced_stats_en;
|
||||
qdf_nbuf_queue_t rx_status_q;
|
||||
|
||||
/* 128 bytes mpdu header queue per user for ppdu */
|
||||
@@ -4293,7 +4293,29 @@ QDF_STATUS dp_pdev_get_rx_mon_stats(struct cdp_soc_t *soc_hdl, uint8_t pdev_id,
|
||||
bool dp_enable_mon_reap_timer(struct cdp_soc_t *soc_hdl,
|
||||
enum cdp_mon_reap_source source, bool enable);
|
||||
|
||||
#ifdef QCA_ENHANCED_STATS_SUPPORT
|
||||
/**
|
||||
* dp_enable_enhanced_stats() - enable enhanced and MLD Link Peer stats
|
||||
* @soc: Datapath soc handle
|
||||
* @pdev_id: Pdev Id on which stats will get enable
|
||||
*
|
||||
* Return: status success/failure
|
||||
*/
|
||||
QDF_STATUS
|
||||
dp_enable_enhanced_stats(struct cdp_soc_t *soc, uint8_t pdev_id);
|
||||
|
||||
/**
|
||||
* dp_disable_enhanced_stats() - disable enhanced and MLD Link Peer stats
|
||||
* @soc: Datapath soc handle
|
||||
* @pdev_id: Pdev Id on which stats will get disable
|
||||
*
|
||||
* Return: status success/failure
|
||||
*/
|
||||
QDF_STATUS
|
||||
dp_disable_enhanced_stats(struct cdp_soc_t *soc, uint8_t pdev_id);
|
||||
#endif /* QCA_ENHANCED_STATS_SUPPORT */
|
||||
|
||||
/*
|
||||
* dp_monitor_lite_mon_disable_rx() - disables rx lite mon
|
||||
* @pdev: dp pdev
|
||||
*
|
||||
|
新增問題並參考
封鎖使用者