diff options
| -rw-r--r-- | package/mac80211/files/lib/wifi/mac80211.sh | 6 | 
1 files changed, 4 insertions, 2 deletions
| diff --git a/package/mac80211/files/lib/wifi/mac80211.sh b/package/mac80211/files/lib/wifi/mac80211.sh index 1ad3eb508..4c214e84c 100644 --- a/package/mac80211/files/lib/wifi/mac80211.sh +++ b/package/mac80211/files/lib/wifi/mac80211.sh @@ -272,10 +272,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 \ @@ -375,7 +377,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" | 
