nfp: flower: fix hardware offload for the transfer layer port
authorHui Zhou <hui.zhou@corigine.com>
Wed, 24 Jan 2024 15:19:09 +0000 (17:19 +0200)
committerJakub Kicinski <kuba@kernel.org>
Fri, 26 Jan 2024 01:17:29 +0000 (17:17 -0800)
commit3a007b8009b5f8af021021b7a590a6da0dc4c6e0
tree7a028866c8f9d643d4539868aad400b163fa5932
parentcefa98e806fd4e2a5e2047457a11ae5f17b8f621
nfp: flower: fix hardware offload for the transfer layer port

The nfp driver will merge the tp source port and tp destination port
into one dword which the offset must be zero to do hardware offload.
However, the mangle action for the tp source port and tp destination
port is separated for tc ct action. Modify the mangle action for the
FLOW_ACT_MANGLE_HDR_TYPE_TCP and FLOW_ACT_MANGLE_HDR_TYPE_UDP to
satisfy the nfp driver offload check for the tp port.

The mangle action provides a 4B value for source, and a 4B value for
the destination, but only 2B of each contains the useful information.
For offload the 2B of each is combined into a single 4B word. Since the
incoming mask for the source is '0xFFFF<mask>' the shift-left will
throw away the 0xFFFF part. When this gets combined together in the
offload it will clear the destination field. Fix this by setting the
lower bits back to 0xFFFF, effectively doing a rotate-left operation on
the mask.

Fixes: 5cee92c6f57a ("nfp: flower: support hw offload for ct nat action")
CC: stable@vger.kernel.org # 6.1+
Signed-off-by: Hui Zhou <hui.zhou@corigine.com>
Signed-off-by: Louis Peens <louis.peens@corigine.com>
Link: https://lore.kernel.org/r/20240124151909.31603-3-louis.peens@corigine.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/netronome/nfp/flower/conntrack.c