> -----Original Message----- > From: Amber, Kumar <[email protected]> > Sent: Friday, May 6, 2022 6:23 AM > To: [email protected] > Cc: [email protected]; [email protected]; [email protected]; Ferriter, > Cian <[email protected]>; Stokes, Ian <[email protected]>; > [email protected]; [email protected]; Van Haaren, Harry > <[email protected]>; Amber, Kumar <[email protected]> > Subject: [PATCH v7 2/4] mfex_avx512: Calculate miniflow_bits at compile time. > > The patch removes magic numbers from miniflow_bits > and calculates the bits at compile time. This also > makes it easier to handle any ABI changes. > > Signed-off-by: Kumar Amber <[email protected]> > --- > lib/dpif-netdev-extract-avx512.c | 21 +++++++++++++++++---- > 1 file changed, 17 insertions(+), 4 deletions(-) > > diff --git a/lib/dpif-netdev-extract-avx512.c > b/lib/dpif-netdev-extract-avx512.c > index 6ae15a4db..e77bb3214 100644 > --- a/lib/dpif-netdev-extract-avx512.c > +++ b/lib/dpif-netdev-extract-avx512.c > @@ -256,6 +256,19 @@ _mm512_maskz_permutexvar_epi8_wrap(__mmask64 > kmask, __m512i idx, __m512i a) > #define PKT_MIN_ETH_IPv4_TCP (PKT_OFFSET_L4_IPv4 + TCP_HEADER_LEN) > #define PKT_MIN_ETH_VLAN_IPv4_TCP (PKT_OFFSET_L4_VLAN_IPv4 + > TCP_HEADER_LEN) > > +/* MF bits. */ > +#define MF_BIT(field) (MAP_1 << ((offsetof(struct flow, field) / 8) % > \ > + MAP_T_BITS))
Had a look to see if "flow.c" had any re-usable macro defines for this, but didn't spot any as the macros in flow.c all operate on struct flowmap's or other more complex structs, not a simple u64. Given the result of this calculation is checked by autovalidation, we can have good confidence in the correctness of the arithmetic here. By calculating the miniflow bits at compile-time like this, the SIMD optimized implementation becomes a lot more robust to "Miniflow ABI" breakages, as the implementation will re-adjust bits as required at compile time (instead of requiring manual patching). Nice work. <snip> _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
