Root/package/hostapd/patches/540-optional_rfkill.patch

1--- a/src/drivers/driver_nl80211.c
2+++ b/src/drivers/driver_nl80211.c
3@@ -129,7 +129,9 @@ struct wpa_driver_nl80211_data {
4     int ifindex;
5     int if_removed;
6     int if_disabled;
7+#ifdef CONFIG_RFKILL
8     struct rfkill_data *rfkill;
9+#endif
10     struct wpa_driver_capa capa;
11     int has_capability;
12 
13@@ -1776,7 +1778,7 @@ err1:
14     return -1;
15 }
16 
17-
18+#ifdef CONFIG_RFKILL
19 static void wpa_driver_nl80211_rfkill_blocked(void *ctx)
20 {
21     wpa_printf(MSG_DEBUG, "nl80211: RFKILL blocked");
22@@ -1798,6 +1800,7 @@ static void wpa_driver_nl80211_rfkill_un
23     }
24     /* rtnetlink ifup handler will report interface as enabled */
25 }
26+#endif /* CONFIG_RFKILL */
27 
28 
29 static void nl80211_get_phy_name(struct wpa_driver_nl80211_data *drv)
30@@ -1846,7 +1849,9 @@ static void * wpa_driver_nl80211_init(vo
31 {
32     struct wpa_driver_nl80211_data *drv;
33     struct netlink_config *cfg;
34+#ifdef CONFIG_RFKILL
35     struct rfkill_config *rcfg;
36+#endif
37     struct i802_bss *bss;
38 
39     drv = os_zalloc(sizeof(*drv));
40@@ -1887,6 +1892,7 @@ static void * wpa_driver_nl80211_init(vo
41         goto failed;
42     }
43 
44+#ifdef CONFIG_RFKILL
45     rcfg = os_zalloc(sizeof(*rcfg));
46     if (rcfg == NULL)
47         goto failed;
48@@ -1899,6 +1905,7 @@ static void * wpa_driver_nl80211_init(vo
49         wpa_printf(MSG_DEBUG, "nl80211: RFKILL status not available");
50         os_free(rcfg);
51     }
52+#endif /* CONFIG_RFKILL */
53 
54     if (wpa_driver_nl80211_finish_drv_init(drv))
55         goto failed;
56@@ -1909,7 +1916,9 @@ static void * wpa_driver_nl80211_init(vo
57     return bss;
58 
59 failed:
60+#ifdef CONFIG_RFKILL
61     rfkill_deinit(drv->rfkill);
62+#endif
63     netlink_deinit(drv->netlink);
64     if (drv->ioctl_sock >= 0)
65         close(drv->ioctl_sock);
66@@ -2012,10 +2021,12 @@ static int nl80211_register_action_frame
67 }
68 
69 
70+#ifdef CONFIG_RFKILL
71 static void wpa_driver_nl80211_send_rfkill(void *eloop_ctx, void *timeout_ctx)
72 {
73     wpa_supplicant_event(timeout_ctx, EVENT_INTERFACE_DISABLED, NULL);
74 }
75+#endif /* CONFIG_RFKILL */
76 
77 
78 static int
79@@ -2034,13 +2045,16 @@ wpa_driver_nl80211_finish_drv_init(struc
80         }
81 
82         if (linux_set_iface_flags(drv->ioctl_sock, bss->ifname, 1)) {
83+#ifdef CONFIG_RFKILL
84             if (rfkill_is_blocked(drv->rfkill)) {
85                 wpa_printf(MSG_DEBUG, "nl80211: Could not yet enable "
86                        "interface '%s' due to rfkill",
87                        bss->ifname);
88                 drv->if_disabled = 1;
89                 send_rfkill_event = 1;
90- } else {
91+ } else
92+#endif
93+ {
94                 wpa_printf(MSG_ERROR, "nl80211: Could not set "
95                        "interface '%s' UP", bss->ifname);
96                 return -1;
97@@ -2068,8 +2082,10 @@ wpa_driver_nl80211_finish_drv_init(struc
98     }
99 
100     if (send_rfkill_event) {
101+#ifdef CONFIG_RFKILL
102         eloop_register_timeout(0, 0, wpa_driver_nl80211_send_rfkill,
103                        drv, drv->ctx);
104+#endif
105     }
106 
107     return 0;
108@@ -2150,7 +2166,9 @@ static void wpa_driver_nl80211_deinit(vo
109 
110     netlink_send_oper_ifla(drv->netlink, drv->ifindex, 0, IF_OPER_UP);
111     netlink_deinit(drv->netlink);
112+#ifdef CONFIG_RFKILL
113     rfkill_deinit(drv->rfkill);
114+#endif
115 
116     eloop_cancel_timeout(wpa_driver_nl80211_scan_timeout, drv, drv->ctx);
117 
118@@ -5693,7 +5711,9 @@ static void *i802_init(struct hostapd_da
119 
120 failed:
121     nl80211_remove_monitor_interface(drv);
122+#ifdef CONFIG_RFKILL
123     rfkill_deinit(drv->rfkill);
124+#endif
125     netlink_deinit(drv->netlink);
126     if (drv->ioctl_sock >= 0)
127         close(drv->ioctl_sock);
128--- a/src/drivers/driver_wext.c
129+++ b/src/drivers/driver_wext.c
130@@ -702,7 +702,7 @@ static void wpa_driver_wext_event_rtm_de
131     }
132 }
133 
134-
135+#ifdef CONFIG_RFKILL
136 static void wpa_driver_wext_rfkill_blocked(void *ctx)
137 {
138     wpa_printf(MSG_DEBUG, "WEXT: RFKILL blocked");
139@@ -724,7 +724,7 @@ static void wpa_driver_wext_rfkill_unblo
140     }
141     /* rtnetlink ifup handler will report interface as enabled */
142 }
143-
144+#endif /* CONFIG_RFKILL */
145 
146 static void wext_get_phy_name(struct wpa_driver_wext_data *drv)
147 {
148@@ -770,7 +770,9 @@ void * wpa_driver_wext_init(void *ctx, c
149 {
150     struct wpa_driver_wext_data *drv;
151     struct netlink_config *cfg;
152+#ifdef CONFIG_RFKILL
153     struct rfkill_config *rcfg;
154+#endif
155     char path[128];
156     struct stat buf;
157 
158@@ -805,6 +807,7 @@ void * wpa_driver_wext_init(void *ctx, c
159         goto err2;
160     }
161 
162+#ifdef CONFIG_RFKILL
163     rcfg = os_zalloc(sizeof(*rcfg));
164     if (rcfg == NULL)
165         goto err3;
166@@ -817,6 +820,7 @@ void * wpa_driver_wext_init(void *ctx, c
167         wpa_printf(MSG_DEBUG, "WEXT: RFKILL status not available");
168         os_free(rcfg);
169     }
170+#endif /* CONFIG_RFKILL */
171 
172     drv->mlme_sock = -1;
173 
174@@ -828,7 +832,9 @@ void * wpa_driver_wext_init(void *ctx, c
175     return drv;
176 
177 err3:
178+#ifdef CONFIG_RFKILL
179     rfkill_deinit(drv->rfkill);
180+#endif
181     netlink_deinit(drv->netlink);
182 err2:
183     close(drv->ioctl_sock);
184@@ -838,10 +844,12 @@ err1:
185 }
186 
187 
188+#ifdef CONFIG_RFKILL
189 static void wpa_driver_wext_send_rfkill(void *eloop_ctx, void *timeout_ctx)
190 {
191     wpa_supplicant_event(timeout_ctx, EVENT_INTERFACE_DISABLED, NULL);
192 }
193+#endif /* CONFIG_RFKILL */
194 
195 
196 static int wpa_driver_wext_finish_drv_init(struct wpa_driver_wext_data *drv)
197@@ -849,13 +857,16 @@ static int wpa_driver_wext_finish_drv_in
198     int send_rfkill_event = 0;
199 
200     if (linux_set_iface_flags(drv->ioctl_sock, drv->ifname, 1) < 0) {
201+#ifdef CONFIG_RFKILL
202         if (rfkill_is_blocked(drv->rfkill)) {
203             wpa_printf(MSG_DEBUG, "WEXT: Could not yet enable "
204                    "interface '%s' due to rfkill",
205                    drv->ifname);
206             drv->if_disabled = 1;
207             send_rfkill_event = 1;
208- } else {
209+ } else
210+#endif
211+ {
212             wpa_printf(MSG_ERROR, "WEXT: Could not set "
213                    "interface '%s' UP", drv->ifname);
214             return -1;
215@@ -903,8 +914,10 @@ static int wpa_driver_wext_finish_drv_in
216                    1, IF_OPER_DORMANT);
217 
218     if (send_rfkill_event) {
219+#ifdef CONFIG_RFKILL
220         eloop_register_timeout(0, 0, wpa_driver_wext_send_rfkill,
221                        drv, drv->ctx);
222+#endif
223     }
224 
225     return 0;
226@@ -934,7 +947,9 @@ void wpa_driver_wext_deinit(void *priv)
227 
228     netlink_send_oper_ifla(drv->netlink, drv->ifindex, 0, IF_OPER_UP);
229     netlink_deinit(drv->netlink);
230+#ifdef CONFIG_RFKILL
231     rfkill_deinit(drv->rfkill);
232+#endif
233 
234     if (drv->mlme_sock >= 0)
235         eloop_unregister_read_sock(drv->mlme_sock);
236--- a/src/drivers/drivers.mak
237+++ b/src/drivers/drivers.mak
238@@ -43,7 +43,6 @@ NEED_SME=y
239 NEED_AP_MLME=y
240 NEED_NETLINK=y
241 NEED_LINUX_IOCTL=y
242-NEED_RFKILL=y
243 ifdef CONFIG_LIBNL_TINY
244 DRV_LIBS += -lnl-tiny
245 else
246@@ -94,7 +93,6 @@ DRV_WPA_CFLAGS += -DCONFIG_DRIVER_WEXT
247 CONFIG_WIRELESS_EXTENSION=y
248 NEED_NETLINK=y
249 NEED_LINUX_IOCTL=y
250-NEED_RFKILL=y
251 endif
252 
253 ifdef CONFIG_DRIVER_RALINK
254@@ -146,7 +144,6 @@ endif
255 ifdef CONFIG_WIRELESS_EXTENSION
256 DRV_CFLAGS += -DCONFIG_WIRELESS_EXTENSION
257 DRV_OBJS += ../src/drivers/driver_wext.o
258-NEED_RFKILL=y
259 endif
260 
261 ifdef NEED_NETLINK
262@@ -159,6 +156,7 @@ endif
263 
264 ifdef NEED_RFKILL
265 DRV_OBJS += ../src/drivers/rfkill.o
266+DRV_WPA_CFLAGS += -DCONFIG_RFKILL
267 endif
268 
269 
270--- a/src/drivers/driver_wext.h
271+++ b/src/drivers/driver_wext.h
272@@ -28,7 +28,9 @@ struct wpa_driver_wext_data {
273     int ifindex2;
274     int if_removed;
275     int if_disabled;
276+#ifdef CONFIG_RFKILL
277     struct rfkill_data *rfkill;
278+#endif
279     u8 *assoc_req_ies;
280     size_t assoc_req_ies_len;
281     u8 *assoc_resp_ies;
282

Archive Download this file



interactive