From patchwork Wed Jan 10 09:17:04 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "John Daley (johndale)" X-Patchwork-Id: 33393 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 537601B24C; Wed, 10 Jan 2018 10:18:03 +0100 (CET) Received: from rcdn-iport-9.cisco.com (rcdn-iport-9.cisco.com [173.37.86.80]) by dpdk.org (Postfix) with ESMTP id A3FE01B1C5; Wed, 10 Jan 2018 10:17:56 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=1377; q=dns/txt; s=iport; t=1515575876; x=1516785476; h=from:to:cc:subject:date:message-id:in-reply-to: references; bh=zPoYH6QwVNY2Teg8Mju1+FfzOJu0UEGEoCpYBCuc8/Q=; b=MxOZpbkTF1He5IQh8wmdYNETARuBn73zMRR0yRUB76KD4GhPEvk89sqX h6Ifk2bI340uKFi9Q172YFNSelAZt9HB2/0KS2AC9U2ezlzvVhBJLVJFp StfjGvO7SU+fXtjShGs/Gvy8/oJsKUdWPxBiFPv0594onN2OaGe+9M56b 8=; X-IronPort-AV: E=Sophos;i="5.46,339,1511827200"; d="scan'208";a="335225999" Received: from alln-core-7.cisco.com ([173.36.13.140]) by rcdn-iport-9.cisco.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 10 Jan 2018 09:17:51 +0000 Received: from cisco.com (savbu-usnic-a.cisco.com [10.193.184.48]) by alln-core-7.cisco.com (8.14.5/8.14.5) with ESMTP id w0A9HpHq027665; Wed, 10 Jan 2018 09:17:51 GMT Received: by cisco.com (Postfix, from userid 392789) id 7BE1520F2001; Wed, 10 Jan 2018 01:17:51 -0800 (PST) From: John Daley To: ferruh.yigit@intel.com Cc: dev@dpdk.org, Hyong Youb Kim , stable@dpdk.org Date: Wed, 10 Jan 2018 01:17:04 -0800 Message-Id: <20180110091712.32198-4-johndale@cisco.com> X-Mailer: git-send-email 2.12.0 In-Reply-To: <20180110091712.32198-1-johndale@cisco.com> References: <20180110091712.32198-1-johndale@cisco.com> Subject: [dpdk-dev] [PATCH] net/enic: fix L4 Rx ptype comparison X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Hyong Youb Kim For non-UDP/TCP packets, enic may wrongly set PKT_RX_L4_CKSUM_BAD in ol_flags. The comparison that checks if a packet is UDP or TCP assumes that RTE_PTYPE_L4 values are bit flags, but they are not. For example, the following evaluates to true because NONFRAG is 0x600 and UDP is 0x200, and causes the current code to think the packet is UDP. !!(RTE_PTYPE_L4_NONFRAG & RTE_PTYPE_L4_UDP) So, fix this by comparing the packet type against UDP and TCP individually. Fixes: 453d15059b58 ("net/enic: use new Rx checksum flags") Cc: stable@dpdk.org Signed-off-by: Hyong Youb Kim Reviewed-by: John Daley --- drivers/net/enic/enic_rxtx.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/enic/enic_rxtx.c b/drivers/net/enic/enic_rxtx.c index a3663d516..831c90a1c 100644 --- a/drivers/net/enic/enic_rxtx.c +++ b/drivers/net/enic/enic_rxtx.c @@ -285,7 +285,8 @@ enic_cq_rx_to_pkt_flags(struct cq_desc *cqd, struct rte_mbuf *mbuf) else pkt_flags |= PKT_RX_IP_CKSUM_BAD; - if (l4_flags & (RTE_PTYPE_L4_UDP | RTE_PTYPE_L4_TCP)) { + if (l4_flags == RTE_PTYPE_L4_UDP || + l4_flags == RTE_PTYPE_L4_TCP) { if (enic_cq_rx_desc_tcp_udp_csum_ok(cqrd)) pkt_flags |= PKT_RX_L4_CKSUM_GOOD; else