kernel/modules: snd-pcm-dmaengine only if CONFIG_SND_DMAENGINE_PCM is set
[openwrt.git] / package / network / services / hostapd / patches / 300-nl80211_multicall_fixes.patch
1 --- a/src/drivers/driver_nl80211.c
2 +++ b/src/drivers/driver_nl80211.c
3 @@ -754,7 +754,6 @@ nla_put_failure:
4  }
5  
6  
7 -#ifndef HOSTAPD
8  static int nl80211_get_macaddr(struct i802_bss *bss)
9  {
10         struct nl_msg *msg;
11 @@ -776,7 +775,6 @@ nla_put_failure:
12         nlmsg_free(msg);
13         return NL80211_IFTYPE_UNSPECIFIED;
14  }
15 -#endif /* HOSTAPD */
16  
17  
18  static int nl80211_register_beacons(struct wpa_driver_nl80211_data *drv,
19 @@ -3613,6 +3611,7 @@ static void * wpa_driver_nl80211_init(vo
20         drv->monitor_sock = -1;
21         drv->eapol_tx_sock = -1;
22         drv->ap_scan_as_station = NL80211_IFTYPE_UNSPECIFIED;
23 +       drv->nlmode = NL80211_IFTYPE_STATION;
24  
25         if (wpa_driver_nl80211_init_nl(drv)) {
26                 os_free(drv);
27 @@ -4003,31 +4002,16 @@ static int i802_set_iface_flags(struct i
28  
29  
30  static int
31 -wpa_driver_nl80211_finish_drv_init(struct wpa_driver_nl80211_data *drv)
32 +wpa_driver_nl80211_finish_drv_init_sta(struct wpa_driver_nl80211_data *drv,
33 +                                      int *send_rfkill_event)
34  {
35 -#ifndef HOSTAPD
36         enum nl80211_iftype nlmode = NL80211_IFTYPE_STATION;
37 -#endif /* HOSTAPD */
38         struct i802_bss *bss = &drv->first_bss;
39 -       int send_rfkill_event = 0;
40         int dynamic_if;
41  
42 -       drv->ifindex = if_nametoindex(bss->ifname);
43 -       bss->ifindex = drv->ifindex;
44 -       bss->wdev_id = drv->global->if_add_wdevid;
45 -       bss->wdev_id_set = drv->global->if_add_wdevid_set;
46 -
47         dynamic_if = drv->ifindex == drv->global->if_add_ifindex;
48         dynamic_if = dynamic_if || drv->global->if_add_wdevid_set;
49 -       drv->global->if_add_wdevid_set = 0;
50  
51 -       if (wpa_driver_nl80211_capa(drv))
52 -               return -1;
53 -
54 -       wpa_printf(MSG_DEBUG, "nl80211: interface %s in phy %s",
55 -                  bss->ifname, drv->phyname);
56 -
57 -#ifndef HOSTAPD
58         if (dynamic_if)
59                 nlmode = nl80211_get_ifmode(bss);
60  
61 @@ -4056,7 +4040,7 @@ wpa_driver_nl80211_finish_drv_init(struc
62                                    "interface '%s' due to rfkill",
63                                    bss->ifname);
64                         drv->if_disabled = 1;
65 -                       send_rfkill_event = 1;
66 +                       *send_rfkill_event = 1;
67                 } else {
68                         wpa_printf(MSG_ERROR, "nl80211: Could not set "
69                                    "interface '%s' UP", bss->ifname);
70 @@ -4066,7 +4050,30 @@ wpa_driver_nl80211_finish_drv_init(struc
71  
72         netlink_send_oper_ifla(drv->global->netlink, drv->ifindex,
73                                1, IF_OPER_DORMANT);
74 -#endif /* HOSTAPD */
75 +       return 0;
76 +}
77 +
78 +static int
79 +wpa_driver_nl80211_finish_drv_init(struct wpa_driver_nl80211_data *drv)
80 +{
81 +       struct i802_bss *bss = &drv->first_bss;
82 +       int send_rfkill_event = 0;
83 +
84 +       drv->ifindex = if_nametoindex(bss->ifname);
85 +       bss->ifindex = drv->ifindex;
86 +       bss->wdev_id = drv->global->if_add_wdevid;
87 +       bss->wdev_id_set = drv->global->if_add_wdevid_set;
88 +       drv->global->if_add_wdevid_set = 0;
89 +
90 +       if (wpa_driver_nl80211_capa(drv))
91 +               return -1;
92 +
93 +       wpa_printf(MSG_DEBUG, "nl80211: interface %s in phy %s",
94 +                  bss->ifname, drv->phyname);
95 +
96 +       if (drv->nlmode == NL80211_IFTYPE_STATION &&
97 +           wpa_driver_nl80211_finish_drv_init_sta(drv, &send_rfkill_event))
98 +               return -1;
99  
100         if (linux_get_ifhwaddr(drv->global->ioctl_sock, bss->ifname,
101                                bss->addr))