qcacmn: Reset MON_BUF ring filters only when monitor mode is enabled
When enhanced stats are enabled/disabled, dp_mon_filter_update () API sets/resets MON_BUF ring filters also, this is leading to connection issues traffic stall on Rx side Set/Reset MON_BUF ring filters when monitor mode is enabled Change-Id: I0de7be81465b11224b95c0918b4e8c8e339e3802
This commit is contained in:

committed by
Madan Koyyalamudi

parent
49846e25ef
commit
ef543f271e
@@ -7029,13 +7029,13 @@ static int dp_update_filter_neighbour_peers(struct cdp_soc_t *soc_hdl,
|
|||||||
if (TAILQ_EMPTY(&pdev->neighbour_peers_list)) {
|
if (TAILQ_EMPTY(&pdev->neighbour_peers_list)) {
|
||||||
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
||||||
|
|
||||||
pdev->neighbour_peers_added = false;
|
|
||||||
dp_mon_filter_reset_smart_monitor(pdev);
|
dp_mon_filter_reset_smart_monitor(pdev);
|
||||||
status = dp_mon_filter_update(pdev);
|
status = dp_mon_filter_update(pdev);
|
||||||
if (status != QDF_STATUS_SUCCESS) {
|
if (status != QDF_STATUS_SUCCESS) {
|
||||||
dp_cdp_err("%pK: smart mon filter clear failed",
|
dp_cdp_err("%pK: smart mon filter clear failed",
|
||||||
soc);
|
soc);
|
||||||
}
|
}
|
||||||
|
pdev->neighbour_peers_added = false;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -7661,7 +7661,6 @@ static inline void
|
|||||||
dp_pdev_disable_mcopy_code(struct dp_pdev *pdev)
|
dp_pdev_disable_mcopy_code(struct dp_pdev *pdev)
|
||||||
{
|
{
|
||||||
pdev->mcopy_mode = M_COPY_DISABLED;
|
pdev->mcopy_mode = M_COPY_DISABLED;
|
||||||
pdev->monitor_configured = false;
|
|
||||||
pdev->monitor_vdev = NULL;
|
pdev->monitor_vdev = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -7689,7 +7688,6 @@ QDF_STATUS dp_reset_monitor_mode(struct cdp_soc_t *soc_hdl,
|
|||||||
|
|
||||||
dp_soc_config_full_mon_mode(pdev, DP_FULL_MON_DISABLE);
|
dp_soc_config_full_mon_mode(pdev, DP_FULL_MON_DISABLE);
|
||||||
pdev->monitor_vdev = NULL;
|
pdev->monitor_vdev = NULL;
|
||||||
pdev->monitor_configured = false;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Lite monitor mode, smart monitor mode and monitor
|
* Lite monitor mode, smart monitor mode and monitor
|
||||||
@@ -7713,6 +7711,7 @@ QDF_STATUS dp_reset_monitor_mode(struct cdp_soc_t *soc_hdl,
|
|||||||
dp_rx_mon_dest_err("%pK: Failed to reset monitor filters",
|
dp_rx_mon_dest_err("%pK: Failed to reset monitor filters",
|
||||||
soc);
|
soc);
|
||||||
}
|
}
|
||||||
|
pdev->monitor_configured = false;
|
||||||
|
|
||||||
qdf_spin_unlock_bh(&pdev->mon_lock);
|
qdf_spin_unlock_bh(&pdev->mon_lock);
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
@@ -8925,6 +8924,7 @@ dp_config_debug_sniffer(struct dp_pdev *pdev, int val)
|
|||||||
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR,
|
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR,
|
||||||
FL("Failed to reset AM copy mode filters"));
|
FL("Failed to reset AM copy mode filters"));
|
||||||
}
|
}
|
||||||
|
pdev->monitor_configured = false;
|
||||||
#endif /* FEATURE_PERPKT_INFO */
|
#endif /* FEATURE_PERPKT_INFO */
|
||||||
}
|
}
|
||||||
switch (val) {
|
switch (val) {
|
||||||
|
@@ -1181,12 +1181,15 @@ QDF_STATUS dp_mon_filter_update(struct dp_pdev *pdev)
|
|||||||
} else {
|
} else {
|
||||||
/*
|
/*
|
||||||
* For WIN case the monitor buffer ring is used and it does need
|
* For WIN case the monitor buffer ring is used and it does need
|
||||||
* reset when monitor mode gets disabled.
|
* reset when monitor mode gets enabled/disabled.
|
||||||
*/
|
*/
|
||||||
if (soc->wlan_cfg_ctx->rxdma1_enable) {
|
if (soc->wlan_cfg_ctx->rxdma1_enable) {
|
||||||
status = dp_mon_ht2_rx_ring_cfg(soc, pdev,
|
if (pdev->monitor_configured || mon_mode_set ||
|
||||||
|
pdev->neighbour_peers_added) {
|
||||||
|
status = dp_mon_ht2_rx_ring_cfg(soc, pdev,
|
||||||
mon_srng_type,
|
mon_srng_type,
|
||||||
&filter.tlv_filter);
|
&filter.tlv_filter);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user