>-----Original Message----- >From: Vladimir Oltean <[email protected]> >Sent: Wednesday, March 24, 2021 5:45 PM >To: Jakub Kicinski <[email protected]>; David S. Miller ><[email protected]> >Cc: [email protected]; Claudiu Manoil <[email protected]>; >Vladimir Oltean <[email protected]> >Subject: [PATCH net-next 2/2] net: enetc: don't depend on system >endianness in enetc_set_mac_ht_flt > >From: Vladimir Oltean <[email protected]> > >When enetc runs out of exact match entries for unicast address >filtering, it switches to an approach based on hash tables, where >multiple MAC addresses might end up in the same bucket. > >However, the enetc_set_mac_ht_flt function currently depends on the >system endianness, because it interprets the 64-bit hash value as an >array of two u32 elements. Modify this to use lower_32_bits and >upper_32_bits. > >Tested by forcing enetc to go into hash table mode by creating two >macvlan upper interfaces: > >ip link add link eno0 address 00:01:02:03:00:00 eno0.0 type macvlan && ip link >set eno0.0 up >ip link add link eno0 address 00:01:02:03:00:01 eno0.1 type macvlan && ip link >set eno0.1 up > >and verified that the same bit values are written to the registers >before and after: > >enetc_sync_mac_filters: addr 00:00:80:00:40:10 exact match 0 >enetc_sync_mac_filters: addr 00:00:00:00:80:00 exact match 0 >enetc_set_mac_ht_flt: hash 0x80008000000000 UMHFR0 0x0 UMHFR1 >0x800080 > >Signed-off-by: Vladimir Oltean <[email protected]>
Reviewed-by: Claudiu Manoil <[email protected]>
