summaryrefslogtreecommitdiffstats
path: root/package/hostapd/patches/460-oper_state_fix.patch
blob: 8ea0e123601a71866b858c8ac61ef80ef66cf28c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
From: Jouni Malinen <jouni.malinen@atheros.com>
Date: Tue, 26 Oct 2010 13:30:28 +0000 (+0300)
Subject: hostapd: Set operstate UP when initializing AP mode
X-Git-Url: http://w1.fi/gitweb/gitweb.cgi?p=hostap.git;a=commitdiff_plain;h=e11f5a2cbc333113a3a1cc1aeea7f698c3936ca3

hostapd: Set operstate UP when initializing AP mode

This is needed to avoid problems with other applications setting and
leaving the interface to IF_OPER_DORMANT state. In AP mode, the interface
is ready immediately after the keys are set, so we better make sure the
DORMANT state does not prevent normal operations after that.
---

--- a/src/ap/hostapd.c
+++ b/src/ap/hostapd.c
@@ -622,6 +622,9 @@ static int hostapd_setup_bss(struct host
 
 	ieee802_11_set_beacon(hapd);
 
+	if (hapd->driver && hapd->driver->set_operstate)
+		hapd->driver->set_operstate(hapd->drv_priv, 1);
+
 	return 0;
 }
 
--- a/src/drivers/driver_wext.c
+++ b/src/drivers/driver_wext.c
@@ -2245,11 +2245,14 @@ int wpa_driver_wext_set_operstate(void *
 {
 	struct wpa_driver_wext_data *drv = priv;
 
-	wpa_printf(MSG_DEBUG, "%s: operstate %d->%d (%s)",
-		   __func__, drv->operstate, state, state ? "UP" : "DORMANT");
-	drv->operstate = state;
-	return netlink_send_oper_ifla(drv->netlink, drv->ifindex, -1,
-				      state ? IF_OPER_UP : IF_OPER_DORMANT);
+	if (drv != NULL)
+	{
+		wpa_printf(MSG_DEBUG, "%s: operstate %d->%d (%s)",
+			   __func__, drv->operstate, state, state ? "UP" : "DORMANT");
+		drv->operstate = state;
+		return netlink_send_oper_ifla(drv->netlink, drv->ifindex, -1,
+					      state ? IF_OPER_UP : IF_OPER_DORMANT);
+	}
 }