config_get enc "$vif" encryption
config_get mode "$vif" mode
config_get ssid "$vif" ssid
+ config_get_bool wds "$vif" wds 0
# It is far easier to delete and create the desired interface
case "$mode" in
iw phy "$phy" interface add "$ifname" type monitor
;;
sta)
- iw phy "$phy" interface add "$ifname" type managed
+ local wdsflag
+ [ "$wds" -gt 0 ] && wdsflag="wds on"
+ iw phy "$phy" interface add "$ifname" type managed $wdsflag
;;
esac
# We attempt to set teh channel for all interfaces, although
# mac80211 may not support it or the driver might not yet
- [ -n "$fixed" ] && iw dev "$ifname" set channel "$channel"
+ [ -n "$fixed" -a -n "$channel" ] && iw dev "$ifname" set channel "$channel"
local key keystring
iw dev "$ifname" ibss join "$ssid" $freq ${fixed:+fixed-freq} $bssid
;;
sta|mesh)
+ config_get bssid "$vif" bssid
case "$enc" in
- *)
- iw dev "$ifname" connect "$ssid"
- ;;
wep)
if [ -e "$keymgmt" ]; then
[ -n "$keystring" ] &&
- iw dev "$ifname" connect "$ssid" key "$keystring"
+ iw dev "$ifname" connect "$ssid" ${fixed:+$freq} $bssid key "$keystring"
else
if eval "type wpa_supplicant_setup_vif" 2>/dev/null >/dev/null; then
wpa_supplicant_setup_vif "$vif" wext || {
fi
fi
;;
- wpa)
+ wpa*|psk*)
+ config_get key "$vif" key
if eval "type wpa_supplicant_setup_vif" 2>/dev/null >/dev/null; then
wpa_supplicant_setup_vif "$vif" wext || {
echo "enable_mac80211($device): Failed to set up wpa_supplicant for interface $ifname" >&2
}
fi
;;
+ *)
+ iw dev "$ifname" connect "$ssid" ${fixed:+$freq} $bssid
+ ;;
esac
;;
done
mode_11n=""
mode_band="g"
- iw phy "$dev" info | grep -q 'HT cap' && mode_11n="n"
+ ht_cap=0
+ for cap in $(iw phy "$dev" info | grep 'HT capabilities' | cut -d: -f2); do
+ ht_cap="$(($ht_cap | $cap))"
+ done
+ ht_capab="";
+ [ "$ht_cap" -gt 0 ] && {
+ mode_11n="n"
+ list=" list ht_capab"
+ [ "$(($ht_cap & 2))" -eq 1 ] && append ht_capab "$list LDPC" "$N"
+ [ "$(($ht_cap & 2))" -eq 2 ] && append ht_capab "$list HT40-" "$N"
+ [ "$(($ht_cap & 32))" -eq 32 ] && append ht_capab "$list SHORT-GI-20" "$N"
+ [ "$(($ht_cap & 64))" -eq 64 ] && append ht_capab "$list SHORT-GI-40" "$N"
+ [ "$(($ht_cap & 4096))" -eq 4096 ] && append ht_capab "$list DSSS_CCK-40" "$N"
+ }
iw phy "$dev" info | grep -q '2412 MHz' || mode_band="a"
cat <<EOF
option hwmode 11${mode_11n}${mode_band}
# REMOVE THIS LINE TO ENABLE WIFI:
option disabled 1
+$ht_capab
config wifi-iface
option device wifi$devidx