We are using the i40 implementation to configure flow director with flexible payload rules. When setting up rules, it allows you to set a value to 63 to disable the rule (NONUSE_FLX_PIT_DEST_OFF). However, the macro in question is always adding an offset value 50 (I40E_FLX_OFFSET_IN_FIELD_VECTOR). This doesn't work when you use it in conjunction with NONUSE_FLX_PIT_DEST_OFF to disable it, because instead of taking 63 as is, it does 63 + 50 and breaks the functionality.
We used the following fix and it appears to work. Just sharing with the DPDK team in case they want to bring it in. Index: i40e_fdir.c =================================================================== --- i40e_fdir.c (revision 30006) +++ i40e_fdir.c (working copy) @@ -90,7 +90,8 @@ I40E_PRTQF_FLX_PIT_SOURCE_OFF_MASK) | \ (((fsize) << I40E_PRTQF_FLX_PIT_FSIZE_SHIFT) & \ I40E_PRTQF_FLX_PIT_FSIZE_MASK) | \ - ((((dst_offset) + I40E_FLX_OFFSET_IN_FIELD_VECTOR) << \ + ((((dst_offset) + ((dst_offset < NONUSE_FLX_PIT_DEST_OFF) ? \ + I40E_FLX_OFFSET_IN_FIELD_VECTOR : 0)) << \ I40E_PRTQF_FLX_PIT_DEST_OFF_SHIFT) & \ I40E_PRTQF_FLX_PIT_DEST_OFF_MASK))