hostapd: update packaging and patches
[openwrt/openwrt.git] / package / network / services / hostapd / patches / 350-nl80211_del_beacon_bss.patch
index 247f154e3059aaf25df321b496ff255b50b8ddf4..9d7a2a4431a849bb39044227260c9b984e85f44f 100644 (file)
@@ -1,72 +1,54 @@
 --- a/src/drivers/driver_nl80211.c
 +++ b/src/drivers/driver_nl80211.c
-@@ -2394,13 +2394,18 @@ wpa_driver_nl80211_finish_drv_init(struc
- }
--static int wpa_driver_nl80211_del_beacon(struct wpa_driver_nl80211_data *drv)
-+static int wpa_driver_nl80211_del_beacon(struct i802_bss *bss)
- {
-+      struct wpa_driver_nl80211_data *drv = bss->drv;
+@@ -2566,10 +2566,15 @@ static int wpa_driver_nl80211_del_beacon
        struct nl_msg *msg;
+       struct wpa_driver_nl80211_data *drv = bss->drv;
  
 +      if (!bss->beacon_set)
 +              return 0;
 +
 +      bss->beacon_set = 0;
++
        wpa_printf(MSG_DEBUG, "nl80211: Remove beacon (ifindex=%d)",
 -                 drv->ifindex);
--      msg = nl80211_drv_msg(drv, 0, NL80211_CMD_DEL_BEACON);
 +                 bss->ifindex);
+       nl80211_put_wiphy_data_ap(bss);
+-      msg = nl80211_drv_msg(drv, 0, NL80211_CMD_DEL_BEACON);
 +      msg = nl80211_bss_msg(bss, 0, NL80211_CMD_DEL_BEACON);
        return send_and_recv_msgs(drv, msg, NULL, NULL);
  }
  
-@@ -2452,7 +2457,7 @@ static void wpa_driver_nl80211_deinit(st
-       nl80211_remove_monitor_interface(drv);
-       if (is_ap_interface(drv->nlmode))
--              wpa_driver_nl80211_del_beacon(drv);
-+              wpa_driver_nl80211_del_beacon(bss);
-       if (drv->eapol_sock >= 0) {
-               eloop_unregister_read_sock(drv->eapol_sock);
-@@ -4385,8 +4390,7 @@ static void nl80211_teardown_ap(struct i
-               nl80211_remove_monitor_interface(drv);
-       else
+@@ -4835,7 +4840,7 @@ static void nl80211_teardown_ap(struct i
                nl80211_mgmt_unsubscribe(bss, "AP teardown");
--
+       nl80211_put_wiphy_data_ap(bss);
 -      bss->beacon_set = 0;
 +      wpa_driver_nl80211_del_beacon(bss);
  }
  
  
-@@ -6387,8 +6391,6 @@ static int wpa_driver_nl80211_if_remove(
+@@ -7057,8 +7062,6 @@ static int wpa_driver_nl80211_if_remove(
        } else {
                wpa_printf(MSG_DEBUG, "nl80211: First BSS - reassign context");
                nl80211_teardown_ap(bss);
 -              if (!bss->added_if && !drv->first_bss->next)
--                      wpa_driver_nl80211_del_beacon(drv);
+-                      wpa_driver_nl80211_del_beacon(bss);
                nl80211_destroy_bss(bss);
                if (!bss->added_if)
                        i802_set_iface_flags(bss, 0);
-@@ -6750,8 +6752,7 @@ static int wpa_driver_nl80211_deinit_ap(
-       struct wpa_driver_nl80211_data *drv = bss->drv;
+@@ -7437,7 +7440,6 @@ static int wpa_driver_nl80211_deinit_ap(
        if (!is_ap_interface(drv->nlmode))
                return -1;
--      wpa_driver_nl80211_del_beacon(drv);
+       wpa_driver_nl80211_del_beacon(bss);
 -      bss->beacon_set = 0;
-+      wpa_driver_nl80211_del_beacon(bss);
  
        /*
         * If the P2P GO interface was dynamically added, then it is
-@@ -6770,8 +6771,7 @@ static int wpa_driver_nl80211_stop_ap(vo
-       struct wpa_driver_nl80211_data *drv = bss->drv;
+@@ -7457,7 +7459,6 @@ static int wpa_driver_nl80211_stop_ap(vo
        if (!is_ap_interface(drv->nlmode))
                return -1;
--      wpa_driver_nl80211_del_beacon(drv);
+       wpa_driver_nl80211_del_beacon(bss);
 -      bss->beacon_set = 0;
-+      wpa_driver_nl80211_del_beacon(bss);
        return 0;
  }