[mac80211] fixes mbssid on ralink hardware
authorJohn Crispin <john@openwrt.org>
Mon, 25 Feb 2013 13:41:50 +0000 (13:41 +0000)
committerJohn Crispin <john@openwrt.org>
Mon, 25 Feb 2013 13:41:50 +0000 (13:41 +0000)
Signed-off-by: John Crispin <blogic@openwrt.org>
SVN-Revision: 35781

package/mac80211/files/lib/wifi/mac80211.sh

index db132af735aef11203428e832a7a6e51c8f675cd..31078f1a61e83f06313041bb7688e494bad5339e 100644 (file)
@@ -275,10 +275,12 @@ get_freq() {
 mac80211_generate_mac() {
        local off="$1"
        local mac="$2"
+       local mask="$3"
        local oIFS="$IFS"; IFS=":"; set -- $mac; IFS="$oIFS"
 
        local b2mask=0x00
-       [ $off -gt 0 ] && b2mask=0x02
+       [ $off -gt 0 ] &&
+               [ "$mask" = "00:00:00:00:00:00" -o $(( 0x${mask%%:*} & 0x2 )) -gt 0 ] && b2mask=0x02
 
        printf "%02x:%s:%s:%s:%02x:%02x" \
                $(( 0x$1 | $b2mask )) $2 $3 $4 \
@@ -378,7 +380,7 @@ enable_mac80211() {
                config_get macaddr "$device" macaddr
                config_get vif_mac "$vif" macaddr
                [ -n "$vif_mac" ] || {
-                       vif_mac="$(mac80211_generate_mac $macidx $macaddr)"
+                       vif_mac="$(mac80211_generate_mac $macidx $macaddr $(cat /sys/class/ieee80211/${phy}/address_mask))"
                        macidx="$(($macidx + 1))"
                }
                [ "$mode" = "ap" ] || ifconfig "$ifname" hw ether "$vif_mac"