Parcourir la 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 il y a 4 ans
Parent
commit
697d229fd6
2 fichiers modifiés avec 13 ajouts et 0 suppressions
  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);