aboutsummaryrefslogtreecommitdiffstats
path: root/vpp/dpdk/dpdk-16.07_patches/0003-enic-Set-PKT_RX_VLAN_PKT-iff-returned-packet-has-VLA.patch
blob: 532641580206911b1d55a0b44e0b8c9c0fc50714 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
From 6a7a9e52ed2ccfa86c2def3a66a368a5577f2fc2 Mon Sep 17 00:00:00 2001
From: John Daley <johndale@cisco.com>
Date: Tue, 3 May 2016 13:56:05 -0700
Subject: [PATCH] enic: Set PKT_RX_VLAN_PKT iff returned packet has VLAN tag

Only set the ol_flags PKT_RX_VLAN_PKT bit if the packet being passed
to the application contains a VLAN tag. This is true whether
stripping is enabled or disabled.

This area of the API is in flux, so behaviour may change in the
future.

Signed-off-by: John Daley <johndale@cisco.com>
---
 drivers/net/enic/enic_rxtx.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/net/enic/enic_rxtx.c b/drivers/net/enic/enic_rxtx.c
index 02b54dd..6a95389 100644
--- a/drivers/net/enic/enic_rxtx.c
+++ b/drivers/net/enic/enic_rxtx.c
@@ -195,12 +195,16 @@ enic_cq_rx_to_pkt_flags(struct cq_desc *cqd, struct rte_mbuf *mbuf)
 	if (unlikely(!enic_cq_rx_desc_eop(ciflags)))
 		goto mbuf_flags_done;
 
-	/* VLAN stripping */
+	/* VLAN stripping. Set PKT_RX_VLAN_PKT only if there is a vlan tag
+	 * in the packet passed up
+	 */
 	if (bwflags & CQ_ENET_RQ_DESC_FLAGS_VLAN_STRIPPED) {
-		pkt_flags |= PKT_RX_VLAN_PKT | PKT_RX_VLAN_STRIPPED;
+		pkt_flags |= PKT_RX_VLAN_STRIPPED;
 		mbuf->vlan_tci = enic_cq_rx_desc_vlan(cqrd);
 	} else {
 		mbuf->vlan_tci = 0;
+		if (enic_cq_rx_desc_vlan(cqrd))
+			pkt_flags |= PKT_RX_VLAN_PKT;
 	}
 
 	/* RSS flag */
--