From 18b2f2d6943342bda498dfdbdf25d3ba6265c408 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Thu, 28 Jan 2016 17:20:10 +0000 Subject: [PATCH] hostapd: fix mesh interface bridge handling Signed-off-by: Felix Fietkau SVN-Revision: 48529 --- .../services/hostapd/patches/100-mesh_mode_fix.patch | 12 ++++++++++++ .../hostapd/patches/330-nl80211_fix_set_freq.patch | 2 +- .../hostapd/patches/350-nl80211_del_beacon_bss.patch | 12 ++++++------ ...nl80211-use-new-parameters-during-ibss-join.patch | 4 ++-- .../patches/462-wpa_s-support-htmode-param.patch | 2 +- 5 files changed, 22 insertions(+), 10 deletions(-) create mode 100644 package/network/services/hostapd/patches/100-mesh_mode_fix.patch diff --git a/package/network/services/hostapd/patches/100-mesh_mode_fix.patch b/package/network/services/hostapd/patches/100-mesh_mode_fix.patch new file mode 100644 index 0000000000..1be7559c4a --- /dev/null +++ b/package/network/services/hostapd/patches/100-mesh_mode_fix.patch @@ -0,0 +1,12 @@ +--- a/src/drivers/driver_nl80211.c ++++ b/src/drivers/driver_nl80211.c +@@ -2262,7 +2262,8 @@ wpa_driver_nl80211_finish_drv_init(struc + + if (drv->hostapd || bss->static_ap) + nlmode = NL80211_IFTYPE_AP; +- else if (bss->if_dynamic) ++ else if (bss->if_dynamic || ++ nl80211_get_ifmode(bss) == NL80211_IFTYPE_MESH_POINT) + nlmode = nl80211_get_ifmode(bss); + else + nlmode = NL80211_IFTYPE_STATION; diff --git a/package/network/services/hostapd/patches/330-nl80211_fix_set_freq.patch b/package/network/services/hostapd/patches/330-nl80211_fix_set_freq.patch index 4738fcd632..54dec31333 100644 --- a/package/network/services/hostapd/patches/330-nl80211_fix_set_freq.patch +++ b/package/network/services/hostapd/patches/330-nl80211_fix_set_freq.patch @@ -1,6 +1,6 @@ --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c -@@ -3708,7 +3708,7 @@ static int nl80211_set_channel(struct i8 +@@ -3709,7 +3709,7 @@ static int nl80211_set_channel(struct i8 freq->freq, freq->ht_enabled, freq->vht_enabled, freq->bandwidth, freq->center_freq1, freq->center_freq2); diff --git a/package/network/services/hostapd/patches/350-nl80211_del_beacon_bss.patch b/package/network/services/hostapd/patches/350-nl80211_del_beacon_bss.patch index bc720230e4..2bcf49a7c6 100644 --- a/package/network/services/hostapd/patches/350-nl80211_del_beacon_bss.patch +++ b/package/network/services/hostapd/patches/350-nl80211_del_beacon_bss.patch @@ -1,6 +1,6 @@ --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c -@@ -2323,13 +2323,18 @@ wpa_driver_nl80211_finish_drv_init(struc +@@ -2324,13 +2324,18 @@ wpa_driver_nl80211_finish_drv_init(struc } @@ -22,7 +22,7 @@ return send_and_recv_msgs(drv, msg, NULL, NULL); } -@@ -2380,7 +2385,7 @@ static void wpa_driver_nl80211_deinit(st +@@ -2381,7 +2386,7 @@ static void wpa_driver_nl80211_deinit(st nl80211_remove_monitor_interface(drv); if (is_ap_interface(drv->nlmode)) @@ -31,7 +31,7 @@ if (drv->eapol_sock >= 0) { eloop_unregister_read_sock(drv->eapol_sock); -@@ -4232,8 +4237,7 @@ static void nl80211_teardown_ap(struct i +@@ -4233,8 +4238,7 @@ static void nl80211_teardown_ap(struct i nl80211_remove_monitor_interface(drv); else nl80211_mgmt_unsubscribe(bss, "AP teardown"); @@ -41,7 +41,7 @@ } -@@ -6164,8 +6168,6 @@ static int wpa_driver_nl80211_if_remove( +@@ -6165,8 +6169,6 @@ static int wpa_driver_nl80211_if_remove( } else { wpa_printf(MSG_DEBUG, "nl80211: First BSS - reassign context"); nl80211_teardown_ap(bss); @@ -50,7 +50,7 @@ nl80211_destroy_bss(bss); if (!bss->added_if) i802_set_iface_flags(bss, 0); -@@ -6527,8 +6529,7 @@ static int wpa_driver_nl80211_deinit_ap( +@@ -6528,8 +6530,7 @@ static int wpa_driver_nl80211_deinit_ap( struct wpa_driver_nl80211_data *drv = bss->drv; if (!is_ap_interface(drv->nlmode)) return -1; @@ -60,7 +60,7 @@ /* * If the P2P GO interface was dynamically added, then it is -@@ -6547,8 +6548,7 @@ static int wpa_driver_nl80211_stop_ap(vo +@@ -6548,8 +6549,7 @@ static int wpa_driver_nl80211_stop_ap(vo struct wpa_driver_nl80211_data *drv = bss->drv; if (!is_ap_interface(drv->nlmode)) return -1; diff --git a/package/network/services/hostapd/patches/461-driver_nl80211-use-new-parameters-during-ibss-join.patch b/package/network/services/hostapd/patches/461-driver_nl80211-use-new-parameters-during-ibss-join.patch index faff3225cf..febbd14e21 100644 --- a/package/network/services/hostapd/patches/461-driver_nl80211-use-new-parameters-during-ibss-join.patch +++ b/package/network/services/hostapd/patches/461-driver_nl80211-use-new-parameters-during-ibss-join.patch @@ -10,7 +10,7 @@ Signed-hostap: Antonio Quartulli --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c -@@ -4491,7 +4491,7 @@ static int wpa_driver_nl80211_ibss(struc +@@ -4492,7 +4492,7 @@ static int wpa_driver_nl80211_ibss(struc struct wpa_driver_associate_params *params) { struct nl_msg *msg; @@ -19,7 +19,7 @@ Signed-hostap: Antonio Quartulli int count = 0; wpa_printf(MSG_DEBUG, "nl80211: Join IBSS (ifindex=%d)", drv->ifindex); -@@ -4518,6 +4518,37 @@ retry: +@@ -4519,6 +4519,37 @@ retry: nl80211_put_beacon_int(msg, params->beacon_int)) goto fail; diff --git a/package/network/services/hostapd/patches/462-wpa_s-support-htmode-param.patch b/package/network/services/hostapd/patches/462-wpa_s-support-htmode-param.patch index 62ce84e635..aa2ac197e8 100644 --- a/package/network/services/hostapd/patches/462-wpa_s-support-htmode-param.patch +++ b/package/network/services/hostapd/patches/462-wpa_s-support-htmode-param.patch @@ -27,7 +27,7 @@ Signed-off-by: Antonio Quartulli * bssid_hint - BSSID of a proposed AP --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c -@@ -4549,6 +4549,22 @@ retry: +@@ -4550,6 +4550,22 @@ retry: nla_put_u32(msg, NL80211_ATTR_MCAST_RATE, params->mcast_rate); } -- 2.30.2