[OpenWrt-Devel] [openwrt/openwrt] mac80211: do not try to setup hostapd-managed interfaces.

John Crispin john at phrozen.org
Tue Mar 24 10:05:14 EDT 2020


Hi,
what do you setup a device fully managed by hostapd ? I am not sure i 
understand what that is. Best if you explain your problem so i can try 
to reproduce and fix it.

to answer your question, in a multi vap setup "wifi reconf" will break 
with your change as it breaks the symmetry of link up/down calls

	John

On 24.03.20 14:55, Oldřich Jedlička wrote:
> Hi John,
> 
> Are you able to describe what exactly does not work - how to reproduce 
> it? Maybe it is simple and obvious to you, but please describe what does 
> not work.
> 
> I just removed setting interface up and setting txpower on it - when the 
> interface is fully managed by hostapd. That looks reasonable to me, but 
> might be wrong as well. At least it made reporting of the interface 
> status working, see https://github.com/openwrt/openwrt/pull/2848 for 
> screen-shots.
> 
> Regards,
> Oldrich.
> 
> 
> 
> út 24. 3. 2020 v 12:10 odesílatel John Crispin <john at phrozen.org 
> <mailto:john at phrozen.org>> napsal:
> 
>     Hi
>     below commit breaks wifi reconf feature and to be honest it looks like
>     the wrong fix to me.
>              John
> 
> 
>      > dangole pushed a commit to openwrt/openwrt.git, branch master:
>      > https://git.openwrt.org/23a885bf89a204f91e4f17ed96f1a9fc7f50ea34
>      >
>      > commit 23a885bf89a204f91e4f17ed96f1a9fc7f50ea34
>      > Author: Oldřich Jedlička <oldium.pro at gmail.com
>     <mailto:oldium.pro at gmail.com>>
>      > AuthorDate: Mon Mar 16 21:00:51 2020 +0100
>      >
>      >      mac80211: do not try to setup hostapd-managed interfaces.
>      >
>      >      For virtual access points (when multiple SSIDs are used for one
>      >      physical AP), there exist one physical network interface and
>      >      multiple virtual interfaces, which are fully under control of
>      >      hostapd. When networking is setup, the script
>      >      `/lib/netifd/wireless/mac80211.sh` is called, which tries to
>     bring
>      >      the interface up by a call to `ip link set dev <iface> up`. This
>      >      call might fail for virtual APs, because the virtual interface
>      >      might not have been created by hostapd yet. There are some
>     artifical
>      >      delays in the script most probably to handle this, but when DFS
>      >      channel availability check on 5GHz band is issued, hostapd can
>      >      delay creating virtual interfaces by a minute.
>      >
>      >      In order to fix this (or work around it), do not try to
>     bring the
>      >      interface up (this is responsibility of hostapd anyway) and
>      >      do not try to set txpower on the virtual interface.
>      >
>      >      Fixes FS#2698.
>      >
>      >      Signed-off-by: Oldřich Jedlička <oldium.pro at gmail.com
>     <mailto:oldium.pro at gmail.com>>
>      > ---
>      >   .../mac80211/files/lib/netifd/wireless/mac80211.sh     | 18
>     +++++++++++-------
>      >   1 file changed, 11 insertions(+), 7 deletions(-)
>      >
>      > diff --git
>     a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
>     b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
>      > index f22730c9fc..f59c498215 100644
>      > --- a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
>      > +++ b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
>      > @@ -533,6 +533,7 @@ mac80211_prepare_vif() {
>      >
>      >                       NEWAPLIST="${NEWAPLIST}$ifname "
>      >                       [ -n "$hostapd_ctrl" ] || {
>      > +                             ap_ifname="${ifname}"
>      >                             
>       hostapd_ctrl="${hostapd_ctrl:-/var/run/hostapd/$ifname}"
>      >                       }
>      >               ;;
>      > @@ -753,13 +754,15 @@ mac80211_setup_vif() {
>      >       json_get_var vif_enable enable 1
>      >
>      >       [ "$vif_enable" = 1 ] || action=down
>      > -     logger ip link set dev "$ifname" $action
>      > -     ip link set dev "$ifname" "$action" || {
>      > -             wireless_setup_vif_failed IFUP_ERROR
>      > -             json_select ..
>      > -             return
>      > -     }
>      > -     [ -z "$vif_txpower" ] || iw dev "$ifname" set txpower fixed
>     "${vif_txpower%%.*}00"
>      > +     if [ "$mode" != "ap" ] || [ "$ifname" = "$ap_ifname" ]; then
>      > +             logger ip link set dev "$ifname" $action
>      > +             ip link set dev "$ifname" "$action" || {
>      > +                     wireless_setup_vif_failed IFUP_ERROR
>      > +                     json_select ..
>      > +                     return
>      > +             }
>      > +             [ -z "$vif_txpower" ] || iw dev "$ifname" set
>     txpower fixed "${vif_txpower%%.*}00"
>      > +     fi
>      >
>      >       case "$mode" in
>      >               mesh)
>      > @@ -924,6 +927,7 @@ drv_mac80211_setup() {
>      >
>      >       has_ap=
>      >       hostapd_ctrl=
>      > +     ap_ifname=
>      >       hostapd_noscan=
>      >       for_each_interface "ap" mac80211_check_ap
>      >
>      >
>      > _______________________________________________
>      > lede-commits mailing list
>      > lede-commits at lists.infradead.org
>     <mailto:lede-commits at lists.infradead.org>
>      > http://lists.infradead.org/mailman/listinfo/lede-commits
>      >
> 
> 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
> 


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


More information about the openwrt-devel mailing list