From 6a7a9e52ed2ccfa86c2def3a66a368a5577f2fc2 Mon Sep 17 00:00:00 2001 From: John Daley 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 --- 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 */ --