Browse Source

qcacld-3.0: Ignore NUD event when wlan is suspended

NUD_FAILURE event is processed after wlan bus suspend is
successful. This results in disconnect active command, which
is triggered as part of honoring NUD failure, to timeout since
WMI commands to FW will be dropped at WMI level as target is
suspended.

Fix is to ignore NUD events received when wlan is suspended.

Change-Id: If348e2043013dcab9bd16f1cfa3f8de2f81db4dc
CRs-Fixed: 3016230
Yeshwanth Sriram Guntuka 3 years ago
parent
commit
793341dd2c
1 changed files with 10 additions and 0 deletions
  1. 10 0
      core/hdd/src/wlan_hdd_nud_tracking.c

+ 10 - 0
core/hdd/src/wlan_hdd_nud_tracking.c

@@ -317,6 +317,11 @@ static void __hdd_nud_failure_work(struct hdd_adapter *adapter)
 		return;
 		return;
 	}
 	}
 
 
+	if (hdd_ctx->hdd_wlan_suspended) {
+		hdd_debug("wlan is suspended, ignore NUD failure event");
+		return;
+	}
+
 	if (soc && cdp_cfg_get(soc, cfg_dp_enable_data_stall)) {
 	if (soc && cdp_cfg_get(soc, cfg_dp_enable_data_stall)) {
 		hdd_dp_err("Data stall due to NUD failure");
 		hdd_dp_err("Data stall due to NUD failure");
 		cdp_post_data_stall_event
 		cdp_post_data_stall_event
@@ -457,6 +462,11 @@ static void hdd_nud_filter_netevent(struct neighbour *neigh)
 				  (struct qdf_mac_addr *)&neigh->ha[0]))
 				  (struct qdf_mac_addr *)&neigh->ha[0]))
 		return;
 		return;
 
 
+	if (hdd_ctx->hdd_wlan_suspended) {
+		hdd_debug("wlan is suspended, ignore NUD event");
+		return;
+	}
+
 	switch (neigh->nud_state) {
 	switch (neigh->nud_state) {
 	case NUD_PROBE:
 	case NUD_PROBE:
 	case NUD_INCOMPLETE:
 	case NUD_INCOMPLETE: