net/ena: fix L4 checksum Tx offload
authorMaciej Bielski <mba@semihalf.com>
Thu, 1 Aug 2019 11:45:36 +0000 (13:45 +0200)
committerThomas Monjalon <thomas@monjalon.net>
Mon, 5 Aug 2019 17:42:02 +0000 (19:42 +0200)
commit40e7c02155625f18a87faf5e6a8cec2e986146e8
treedca35ce8eb06c4d289180926f7f002133a1d3301
parentc1ada9b63b8309a99c6370ff50a24b7d6d238c9b
net/ena: fix L4 checksum Tx offload

During an if-condition evaluation, a 2-bit flag evaluates to 'true' for
'0x1', '0x2' and '0x3'. Thus, from this perspective these flags are
indistinguishable. To make them distinct, respective bits must be
extracted with a mask and then checked for strict equality.

Specifically here, even if `PKT_TX_UDP_CKSUM` (value '0x3') was set, the
expression `mbuf->ol_flags & PKT_TX_TCP` (the second flag of value
'0x1') is evaluated first and the result is 'true'. In consequence, for
UDP packets the execution flow enters an incorrect branch.

Fixes: 56b8b9b7e5d2 ("net/ena: convert to new Tx offloads API")
Cc: stable@dpdk.org
Reported-by: Eduard Serra <eserra@vmware.com>
Signed-off-by: Maciej Bielski <mba@semihalf.com>
Acked-by: Michal Krawczyk <mk@semihalf.com>
drivers/net/ena/ena_ethdev.c