|
|
|
@ -13,14 +13,14 @@ scan_mac80211() { |
|
|
|
|
|
|
|
|
|
config_get mode "$vif" mode |
|
|
|
|
case "$mode" in |
|
|
|
|
adhoc|sta|ap|monitor) |
|
|
|
|
adhoc|sta|ap|monitor|mesh) |
|
|
|
|
append $mode "$vif" |
|
|
|
|
;; |
|
|
|
|
*) echo "$device($vif): Invalid mode, ignored."; continue;; |
|
|
|
|
esac |
|
|
|
|
done |
|
|
|
|
|
|
|
|
|
config_set "$device" vifs "${ap:+$ap }${adhoc:+$adhoc }${ahdemo:+$ahdemo }${sta:+$sta }${wds:+$wds }${monitor:+$monitor}" |
|
|
|
|
config_set "$device" vifs "${ap:+$ap }${adhoc:+$adhoc }${ahdemo:+$ahdemo }${sta:+$sta }${wds:+$wds }${monitor:+$monitor }${mesh:+$mesh}" |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -53,6 +53,7 @@ enable_mac80211() { |
|
|
|
|
config_get txpower "$device" txpower |
|
|
|
|
|
|
|
|
|
local first=1 |
|
|
|
|
local mesh_idx=0 |
|
|
|
|
for vif in $vifs; do |
|
|
|
|
ifconfig "$ifname" down 2>/dev/null |
|
|
|
|
config_get ifname "$vif" ifname |
|
|
|
@ -75,6 +76,13 @@ enable_mac80211() { |
|
|
|
|
sleep 1 |
|
|
|
|
iwconfig "$ifname" mode ad-hoc >/dev/null 2>/dev/null |
|
|
|
|
fi |
|
|
|
|
# mesh interface should be created only for the first interface |
|
|
|
|
if [ "$mode" = mesh ]; then |
|
|
|
|
config_get mesh_id "$vif" mesh_id |
|
|
|
|
if [ -n "$mesh_id" ]; then |
|
|
|
|
iw dev "$ifname" interface add msh$mesh_idx type mp mesh_id $mesh_id |
|
|
|
|
fi |
|
|
|
|
fi |
|
|
|
|
sleep 1 |
|
|
|
|
iwconfig "$ifname" channel "$channel" >/dev/null 2>/dev/null |
|
|
|
|
} |
|
|
|
@ -162,8 +170,14 @@ enable_mac80211() { |
|
|
|
|
} |
|
|
|
|
fi |
|
|
|
|
;; |
|
|
|
|
mesh) |
|
|
|
|
# special case where physical interface should be down for mesh to work |
|
|
|
|
ifconfig "$ifname" down |
|
|
|
|
ifconfig "msh$mesh_idx" up |
|
|
|
|
;; |
|
|
|
|
esac |
|
|
|
|
first=0 |
|
|
|
|
mesh_idx=$(expr $mesh_idx + 1) |
|
|
|
|
done |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|