VPP-345: pull in upstream checksum patch for ICMP packets 98/2498/2
authorSean Chandler <seandchandler@gmail.com>
Mon, 22 Aug 2016 20:32:22 +0000 (16:32 -0400)
committerDamjan Marion <dmarion.lists@gmail.com>
Fri, 26 Aug 2016 12:39:33 +0000 (12:39 +0000)
http://www.dpdk.org/dev/patchwork/patch/15216/

Change-Id: I91b67f3e5c0abff52626e504e2707814ae0c3ed0
Signed-off-by: Sean Chandler <seandchandler@gmail.com>
(cherry picked from commit dc731bd4b1ad6ea588334c681d1409cbdec9ce67)

dpdk/dpdk-16.07_patches/0009-enic-bad-L4-checksum-ptype-set-on-ICMP-packets.patch [new file with mode: 0644]

diff --git a/dpdk/dpdk-16.07_patches/0009-enic-bad-L4-checksum-ptype-set-on-ICMP-packets.patch b/dpdk/dpdk-16.07_patches/0009-enic-bad-L4-checksum-ptype-set-on-ICMP-packets.patch
new file mode 100644 (file)
index 0000000..71a9d9b
--- /dev/null
@@ -0,0 +1,18 @@
+diff --git a/drivers/net/enic/enic_rxtx.c b/drivers/net/enic/enic_rxtx.c
+index 50f0b28..ad59613 100644
+--- a/drivers/net/enic/enic_rxtx.c
++++ b/drivers/net/enic/enic_rxtx.c
+@@ -212,9 +212,12 @@ enic_cq_rx_to_pkt_flags(struct cq_desc *cqd, struct rte_mbuf *mbuf)
+       /* checksum flags */
+       if (!enic_cq_rx_desc_csum_not_calc(cqrd) &&
+               (mbuf->packet_type & RTE_PTYPE_L3_IPV4)) {
++              uint32_t l4_flags = mbuf->packet_type & RTE_PTYPE_L4_MASK;
++
+               if (unlikely(!enic_cq_rx_desc_ipv4_csum_ok(cqrd)))
+                       pkt_flags |= PKT_RX_IP_CKSUM_BAD;
+-              if (mbuf->packet_type & (RTE_PTYPE_L4_UDP | RTE_PTYPE_L4_TCP)) {
++              if (l4_flags == RTE_PTYPE_L4_UDP ||
++                  l4_flags == RTE_PTYPE_L4_TCP) {
+                       if (unlikely(!enic_cq_rx_desc_tcp_udp_csum_ok(cqrd)))
+                               pkt_flags |= PKT_RX_L4_CKSUM_BAD;
+               }