net/bnxt: fix L4 checksum indication in non-vector Rx
authorKalesh AP <kalesh-anakkur.purayil@broadcom.com>
Mon, 4 Nov 2019 10:02:36 +0000 (15:32 +0530)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 8 Nov 2019 22:15:04 +0000 (23:15 +0100)
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@dpdk.org
Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
drivers/net/bnxt/bnxt_rxr.c

index ee1444c..c35bc1a 100644 (file)
@@ -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 */