On Tue, May 21, 2013 at 5:10 PM, Jakub Kiciński <moorray3@xxxxx> wrote: > On Tue, 21 May 2013 14:54:53 +0200, Helmut Schaa wrote: >> When changing the MAC address of a single vif mac80211 will check if the new >> address fits into the address mask specified by the driver. This only needs >> to be done when using multiple BSSIDs. Hence, check the new address only >> against all other vifs. > > Oh, I see that you already posted this patch for review! > > I think we should also take care of the way addresses for new > interfaces are chosen otherwise they'll just pick up > perm_addr and we will end up with incompatible MACs. Maybe you could send the assign_pem_addr changes as a follow up patch? [...] > @@ -1479,7 +1483,17 @@ static void ieee80211_assign_perm_addr(struct ieee80211_local *local, > break; > } > > + /* > + * Pick address of existing interface in case user changed > + * MAC address manually, default to perm_addr. > + */ > m = local->hw.wiphy->perm_addr; > + list_for_each_entry(sdata, &local->interfaces, list) { > + if (sdata->vif.type == NL80211_IFTYPE_MONITOR) > + continue; > + m = sdata->vif.addr; > + break; > + } > start = ((u64)m[0] << 5*8) | ((u64)m[1] << 4*8) | > ((u64)m[2] << 3*8) | ((u64)m[3] << 2*8) | > ((u64)m[4] << 1*8) | ((u64)m[5] << 0*8); This is only relevant if the driver registered a addr_mask with mac80211. So, maybe you could only select a new address (!=perm_addr) if the perm_addr is not covered by the addr_mask? Helmut -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html