--- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c @@ -218,7 +218,9 @@ struct wpa_driver_nl80211_data { int if_removed; int if_disabled; int ignore_if_down_event; +#ifdef CONFIG_RFKILL struct rfkill_data *rfkill; +#endif struct wpa_driver_capa capa; u8 *extended_capa, *extended_capa_mask; unsigned int extended_capa_len; @@ -3128,7 +3130,7 @@ static int wpa_driver_nl80211_init_nl(st return 0; } - +#ifdef CONFIG_RFKILL static void wpa_driver_nl80211_rfkill_blocked(void *ctx) { wpa_printf(MSG_DEBUG, "nl80211: RFKILL blocked"); @@ -3151,6 +3153,7 @@ static void wpa_driver_nl80211_rfkill_un } /* rtnetlink ifup handler will report interface as enabled */ } +#endif /* CONFIG_RFKILL */ static void nl80211_get_phy_name(struct wpa_driver_nl80211_data *drv) @@ -3279,7 +3282,9 @@ static void * wpa_driver_nl80211_init(vo void *global_priv) { struct wpa_driver_nl80211_data *drv; +#ifdef CONFIG_RFKILL struct rfkill_config *rcfg; +#endif struct i802_bss *bss; if (global_priv == NULL) @@ -3315,6 +3320,7 @@ static void * wpa_driver_nl80211_init(vo nl80211_get_phy_name(drv); +#ifdef CONFIG_RFKILL rcfg = os_zalloc(sizeof(*rcfg)); if (rcfg == NULL) goto failed; @@ -3327,6 +3333,7 @@ static void * wpa_driver_nl80211_init(vo wpa_printf(MSG_DEBUG, "nl80211: RFKILL status not available"); os_free(rcfg); } +#endif /* CONFIG_RFKILL */ if (wpa_driver_nl80211_finish_drv_init(drv)) goto failed; @@ -3616,10 +3623,12 @@ static void nl80211_mgmt_unsubscribe(str } +#ifdef CONFIG_RFKILL static void wpa_driver_nl80211_send_rfkill(void *eloop_ctx, void *timeout_ctx) { wpa_supplicant_event(timeout_ctx, EVENT_INTERFACE_DISABLED, NULL); } +#endif /* CONFIG_RFKILL */ static int wpa_driver_nl80211_finish_drv_init_sta(struct wpa_driver_nl80211_data *drv, @@ -3640,13 +3649,16 @@ wpa_driver_nl80211_finish_drv_init_sta(s } if (linux_set_iface_flags(drv->global->ioctl_sock, bss->ifname, 1)) { +#ifdef CONFIG_RFKILL if (rfkill_is_blocked(drv->rfkill)) { wpa_printf(MSG_DEBUG, "nl80211: Could not yet enable " "interface '%s' due to rfkill", bss->ifname); drv->if_disabled = 1; *send_rfkill_event = 1; - } else { + } else +#endif + { wpa_printf(MSG_ERROR, "nl80211: Could not set " "interface '%s' UP", bss->ifname); return -1; @@ -3677,8 +3689,10 @@ wpa_driver_nl80211_finish_drv_init(struc return -1; if (send_rfkill_event) { +#ifdef CONFIG_RFKILL eloop_register_timeout(0, 0, wpa_driver_nl80211_send_rfkill, drv, drv->ctx); +#endif } return 0; @@ -3764,7 +3778,9 @@ static void wpa_driver_nl80211_deinit(st netlink_send_oper_ifla(drv->global->netlink, drv->ifindex, 0, IF_OPER_UP); +#ifdef CONFIG_RFKILL rfkill_deinit(drv->rfkill); +#endif eloop_cancel_timeout(wpa_driver_nl80211_scan_timeout, drv, drv->ctx); --- a/src/drivers/driver_wext.c +++ b/src/drivers/driver_wext.c @@ -742,7 +742,7 @@ static void wpa_driver_wext_event_rtm_de } } - +#ifdef CONFIG_RFKILL static void wpa_driver_wext_rfkill_blocked(void *ctx) { wpa_printf(MSG_DEBUG, "WEXT: RFKILL blocked"); @@ -764,7 +764,7 @@ static void wpa_driver_wext_rfkill_unblo } /* rtnetlink ifup handler will report interface as enabled */ } - +#endif /* CONFIG_RFKILL */ static void wext_get_phy_name(struct wpa_driver_wext_data *drv) { @@ -810,7 +810,9 @@ void * wpa_driver_wext_init(void *ctx, c { struct wpa_driver_wext_data *drv; struct netlink_config *cfg; +#ifdef CONFIG_RFKILL struct rfkill_config *rcfg; +#endif char path[128]; struct stat buf; @@ -845,6 +847,7 @@ void * wpa_driver_wext_init(void *ctx, c goto err2; } +#ifdef CONFIG_RFKILL rcfg = os_zalloc(sizeof(*rcfg)); if (rcfg == NULL) goto err3; @@ -857,6 +860,7 @@ void * wpa_driver_wext_init(void *ctx, c wpa_printf(MSG_DEBUG, "WEXT: RFKILL status not available"); os_free(rcfg); } +#endif /* CONFIG_RFKILL */ drv->mlme_sock = -1; @@ -874,7 +878,9 @@ void * wpa_driver_wext_init(void *ctx, c return drv; err3: +#ifdef CONFIG_RFKILL rfkill_deinit(drv->rfkill); +#endif netlink_deinit(drv->netlink); err2: close(drv->ioctl_sock); @@ -884,10 +890,12 @@ err1: } +#ifdef CONFIG_RFKILL static void wpa_driver_wext_send_rfkill(void *eloop_ctx, void *timeout_ctx) { wpa_supplicant_event(timeout_ctx, EVENT_INTERFACE_DISABLED, NULL); } +#endif /* CONFIG_RFKILL */ static int wpa_driver_wext_finish_drv_init(struct wpa_driver_wext_data *drv) @@ -895,13 +903,16 @@ static int wpa_driver_wext_finish_drv_in int send_rfkill_event = 0; if (linux_set_iface_flags(drv->ioctl_sock, drv->ifname, 1) < 0) { +#ifdef CONFIG_RFKILL if (rfkill_is_blocked(drv->rfkill)) { wpa_printf(MSG_DEBUG, "WEXT: Could not yet enable " "interface '%s' due to rfkill", drv->ifname); drv->if_disabled = 1; send_rfkill_event = 1; - } else { + } else +#endif + { wpa_printf(MSG_ERROR, "WEXT: Could not set " "interface '%s' UP", drv->ifname); return -1; @@ -949,8 +960,10 @@ static int wpa_driver_wext_finish_drv_in 1, IF_OPER_DORMANT); if (send_rfkill_event) { +#ifdef CONFIG_RFKILL eloop_register_timeout(0, 0, wpa_driver_wext_send_rfkill, drv, drv->ctx); +#endif } return 0; @@ -980,7 +993,9 @@ void wpa_driver_wext_deinit(void *priv) netlink_send_oper_ifla(drv->netlink, drv->ifindex, 0, IF_OPER_UP); netlink_deinit(drv->netlink); +#ifdef CONFIG_RFKILL rfkill_deinit(drv->rfkill); +#endif if (drv->mlme_sock >= 0) eloop_unregister_read_sock(drv->mlme_sock); --- a/src/drivers/drivers.mak +++ b/src/drivers/drivers.mak @@ -25,7 +25,6 @@ NEED_SME=y NEED_AP_MLME=y NEED_NETLINK=y NEED_LINUX_IOCTL=y -NEED_RFKILL=y ifdef CONFIG_LIBNL32 DRV_LIBS += -lnl-3 @@ -109,7 +108,6 @@ DRV_WPA_CFLAGS += -DCONFIG_DRIVER_WEXT CONFIG_WIRELESS_EXTENSION=y NEED_NETLINK=y NEED_LINUX_IOCTL=y -NEED_RFKILL=y endif ifdef CONFIG_DRIVER_NDIS @@ -135,7 +133,6 @@ endif ifdef CONFIG_WIRELESS_EXTENSION DRV_WPA_CFLAGS += -DCONFIG_WIRELESS_EXTENSION DRV_WPA_OBJS += ../src/drivers/driver_wext.o -NEED_RFKILL=y endif ifdef NEED_NETLINK @@ -148,6 +145,7 @@ endif ifdef NEED_RFKILL DRV_OBJS += ../src/drivers/rfkill.o +DRV_WPA_CFLAGS += -DCONFIG_RFKILL endif ifdef CONFIG_VLAN_NETLINK --- a/src/drivers/driver_wext.h +++ b/src/drivers/driver_wext.h @@ -22,7 +22,9 @@ struct wpa_driver_wext_data { int ifindex2; int if_removed; int if_disabled; +#ifdef CONFIG_RFKILL struct rfkill_data *rfkill; +#endif u8 *assoc_req_ies; size_t assoc_req_ies_len; u8 *assoc_resp_ies;