>-----Original Message----- >From: Vladimir Oltean <olte...@gmail.com> >Sent: Wednesday, March 24, 2021 5:45 PM >To: Jakub Kicinski <k...@kernel.org>; David S. Miller ><da...@davemloft.net> >Cc: netdev@vger.kernel.org; Claudiu Manoil <claudiu.man...@nxp.com>; >Vladimir Oltean <vladimir.olt...@nxp.com> >Subject: [PATCH net-next 2/2] net: enetc: don't depend on system >endianness in enetc_set_mac_ht_flt > >From: Vladimir Oltean <vladimir.olt...@nxp.com> > >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 <vladimir.olt...@nxp.com>
Reviewed-by: Claudiu Manoil <claudiu.man...@nxp.com>