Hi Jakub,

>> This patch moves MAC generation into a separate function, which is
> called
>> from both places to reduce the amount of copy/paste.
> 
> Right, but why do you have your own mac generation rather than using
> eth_hw_addr_random(). You need to set NET_ADDR_RANDOM for example,
> just use standard helpers, please.

We want this still be an Aquantia vendor id MAC, not a fully random mac.
Thats why the logic below randomizes only low three octets.


>>  }
>> +
>> +static inline bool aq_hw_is_zero_ether_addr(const u8 *addr)
> 
> No static inlines in C files, please. Let compiler decide inlineing &
> generate a warning when function becomes unused.

Ok, will fix.

>> +    get_random_bytes(&rnd, sizeof(unsigned int));
>> +    l = 0xE300 0000U | (0xFFFFU & rnd) | (0x00 << 16);
>> +    h = 0x8001300EU;
>> +
>> +    mac[5] = (u8)(0xFFU & l);
>> +    l >>= 8;
>> +    mac[4] = (u8)(0xFFU & l);
>> +    l >>= 8;
>> +    mac[3] = (u8)(0xFFU & l);
>> +    l >>= 8;
>> +    mac[2] = (u8)(0xFFU & l);
>> +    mac[1] = (u8)(0xFFU & h);
>> +    h >>= 8;
>> +    mac[0] = (u8)(0xFFU & h);
> 
> This can be greatly simplified using helpers from etherdevice.h, if
> it's really needed.

This is the exact place where we put Aquantia vendor id, even if mac is random.

eth_hw_addr_random is more suitable for software devices like bridges, which
are not related to any vendor.

Regards,
  Igor

Reply via email to