diff --git a/core/hdd/src/wlan_hdd_cfg80211.c b/core/hdd/src/wlan_hdd_cfg80211.c index 3f011d9386..db0ffb45f9 100644 --- a/core/hdd/src/wlan_hdd_cfg80211.c +++ b/core/hdd/src/wlan_hdd_cfg80211.c @@ -14351,6 +14351,7 @@ static int __wlan_hdd_cfg80211_get_nud_stats(struct wiphy *wiphy, /* send NUD failure event only when ARP tracking is enabled. */ if (cdp_cfg_get(soc, cfg_dp_enable_data_stall) && + !hdd_ctx->config->enable_nud_tracking && (pkt_type_bitmap & CONNECTIVITY_CHECK_SET_ARP)) { QDF_TRACE(QDF_MODULE_ID_HDD_DATA, QDF_TRACE_LEVEL_ERROR, "Data stall due to NUD failure"); diff --git a/core/hdd/src/wlan_hdd_nud_tracking.c b/core/hdd/src/wlan_hdd_nud_tracking.c index aacf866760..6411e2e790 100644 --- a/core/hdd/src/wlan_hdd_nud_tracking.c +++ b/core/hdd/src/wlan_hdd_nud_tracking.c @@ -24,6 +24,7 @@ #include "wlan_hdd_main.h" #include "wlan_blm_ucfg_api.h" #include "hdd_dp_cfg.h" +#include void hdd_nud_set_gateway_addr(struct hdd_adapter *adapter, struct qdf_mac_addr gw_mac_addr) @@ -317,6 +318,7 @@ static void __hdd_nud_failure_work(struct hdd_adapter *adapter) struct hdd_context *hdd_ctx; eConnectionState conn_state; int status; + void *soc = cds_get_context(QDF_MODULE_ID_SOC); hdd_enter(); @@ -341,6 +343,16 @@ static void __hdd_nud_failure_work(struct hdd_adapter *adapter) return; } + if (soc && cdp_cfg_get(soc, cfg_dp_enable_data_stall)) { + hdd_dp_err("Data stall due to NUD failure"); + cdp_post_data_stall_event + (soc, + DATA_STALL_LOG_INDICATOR_HOST_DRIVER, + DATA_STALL_LOG_NUD_FAILURE, + OL_TXRX_PDEV_ID, 0XFF, + DATA_STALL_LOG_RECOVERY_TRIGGER_PDR); + } + if (adapter->device_mode == QDF_STA_MODE && hdd_is_roam_after_nud_enabled(hdd_ctx->config)) { hdd_handle_nud_fail_sta(hdd_ctx, adapter);