Browse Source

qcacld-3.0: Post data stall event properly during NUD failure

When cfg80211_get_nud_stats is called post data stall
event only if NUD tracking is disabled in host driver.

When NUD failure is honoured in host driver post
data stall event before disconnection.

Change-Id: Ia366e539cb1674354e16c1086255804a244f34d6
CRs-Fixed: 2765557
Karthik Kantamneni 4 năm trước cách đây
mục cha
commit
697d229fd6
2 tập tin đã thay đổi với 13 bổ sung0 xóa
  1. 1 0
      core/hdd/src/wlan_hdd_cfg80211.c
  2. 12 0
      core/hdd/src/wlan_hdd_nud_tracking.c

+ 1 - 0
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");

+ 12 - 0
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 <cdp_txrx_misc.h>
 
 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);