[dpdk-dev] [PATCH 1/5] net/bnxt: fix L4 checksum error indication in non-vector mode rx
Kalesh A P
kalesh-anakkur.purayil at broadcom.com
Wed Oct 30 09:04:34 CET 2019
From: Kalesh AP <kalesh-anakkur.purayil at broadcom.com>
Update "mbuf->ol_flags" correctly for inner and ourter ip checksum
errors in case of tunnel and non-tunnel packets.
Fixes: 65ee636872eb ("net/bnxt: fix Rx checksum flags")
Cc: stable at dpdk.org
Signed-off-by: Kalesh AP <kalesh-anakkur.purayil at broadcom.com>
Reviewed-by: Somnath Kotur <somnath.kotur at broadcom.com>
---
drivers/net/bnxt/bnxt_rxr.c | 18 +++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)
diff --git a/drivers/net/bnxt/bnxt_rxr.c b/drivers/net/bnxt/bnxt_rxr.c
index ee1444c..c35bc1a 100644
--- a/drivers/net/bnxt/bnxt_rxr.c
+++ b/drivers/net/bnxt/bnxt_rxr.c
@@ -512,15 +512,19 @@ static int bnxt_rx_pkt(struct rte_mbuf **rx_pkt,
flags2_f = flags2_0xf(rxcmp1);
/* IP Checksum */
- if (unlikely(((IS_IP_NONTUNNEL_PKT(flags2_f)) &&
- (RX_CMP_IP_CS_ERROR(rxcmp1))) ||
- (IS_IP_TUNNEL_PKT(flags2_f) &&
- (RX_CMP_IP_OUTER_CS_ERROR(rxcmp1))))) {
- mbuf->ol_flags |= PKT_RX_IP_CKSUM_BAD;
+ if (likely(IS_IP_NONTUNNEL_PKT(flags2_f))) {
+ if (unlikely(RX_CMP_IP_CS_ERROR(rxcmp1)))
+ mbuf->ol_flags |= PKT_RX_IP_CKSUM_BAD;
+ else
+ mbuf->ol_flags |= PKT_RX_IP_CKSUM_GOOD;
+ } else if (IS_IP_TUNNEL_PKT(flags2_f)) {
+ if (unlikely(RX_CMP_IP_OUTER_CS_ERROR(rxcmp1) ||
+ RX_CMP_IP_CS_ERROR(rxcmp1)))
+ mbuf->ol_flags |= PKT_RX_IP_CKSUM_BAD;
+ else
+ mbuf->ol_flags |= PKT_RX_IP_CKSUM_GOOD;
} else if (unlikely(RX_CMP_IP_CS_UNKNOWN(rxcmp1))) {
mbuf->ol_flags |= PKT_RX_IP_CKSUM_UNKNOWN;
- } else {
- mbuf->ol_flags |= PKT_RX_IP_CKSUM_GOOD;
}
/* L4 Checksum */
--
1.8.3.1
More information about the dev
mailing list