Forráskód Böngészése

qcacld-3.0: Do not invoke the kernel registered function from driver

Netdev-ops/cfg80211-ops are registered to the kernel and should
be invoked only by the kernel in the context of the user.
In this scenario during SSR as part of cfg80211_stop_ap for p2p_go
the driver is directly invoking hdd_hostapd_stop(netdev ops) which
clears the DEVICE_OPENED flag, which should be done only if the
INTERFACE_DOWN is triggered by the kernel. To resolve this
directly stop the queues rather than using the netdev ops.

Change-Id: I1d9349a2c52fe8de17313bdced494ccd5bc9d641
CRs-Fixed: 1114722
Arunk Khandavalli 8 éve
szülő
commit
0dd8c01127
1 módosított fájl, 8 hozzáadás és 2 törlés
  1. 8 2
      core/hdd/src/wlan_hdd_hostapd.c

+ 8 - 2
core/hdd/src/wlan_hdd_hostapd.c

@@ -2101,7 +2101,10 @@ stopbss:
 		/* Stop the pkts from n/w stack as we are going to free all of
 		 * the TX WMM queues for all STAID's
 		 */
-		hdd_hostapd_stop(dev);
+		hdd_notice("Disabling queues");
+		wlan_hdd_netif_queue_control(pHostapdAdapter,
+					     WLAN_NETIF_TX_DISABLE_N_CARRIER,
+					     WLAN_CONTROL_PATH);
 
 		/* reclaim all resources allocated to the BSS */
 		qdf_status = hdd_softap_stop_bss(pHostapdAdapter);
@@ -7852,7 +7855,10 @@ static int __wlan_hdd_cfg80211_stop_ap(struct wiphy *wiphy,
 	wlan_hdd_undo_acs(pAdapter);
 	qdf_mem_zero(&pAdapter->sessionCtx.ap.sapConfig.acs_cfg,
 						sizeof(struct sap_acs_cfg));
-	hdd_hostapd_stop(dev);
+	/* Stop all tx queues */
+	hdd_notice("Disabling queues");
+	wlan_hdd_netif_queue_control(pAdapter, WLAN_NETIF_TX_DISABLE_N_CARRIER,
+				     WLAN_CONTROL_PATH);
 
 	old = pAdapter->sessionCtx.ap.beacon;
 	if (!old) {