From a50c11629c851cc05382d272b228ad0912f91cac Mon Sep 17 00:00:00 2001 From: Wei Zhao Date: Fri, 3 Feb 2017 16:44:49 +0800 Subject: [PATCH] net/ixgbe: fix VXLAN parsing for flow director VNI of VXLAN is parsed wrongly. The root cause is that VNI array in VXLAN item also uses network byte ordering. Fixes: 11777435c727 ("net/ixgbe: parse flow director filter") Cc: stable@dpdk.org Signed-off-by: Wei Zhao --- drivers/net/ixgbe/ixgbe_flow.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/net/ixgbe/ixgbe_flow.c b/drivers/net/ixgbe/ixgbe_flow.c index d64cfd120f..7747831b9f 100644 --- a/drivers/net/ixgbe/ixgbe_flow.c +++ b/drivers/net/ixgbe/ixgbe_flow.c @@ -2133,15 +2133,16 @@ ixgbe_parse_fdir_filter_tunnel(const struct rte_flow_attr *attr, rte_memcpy(&rule->mask.tunnel_id_mask, vxlan_mask->vni, RTE_DIM(vxlan_mask->vni)); - rule->mask.tunnel_id_mask <<= 8; if (item->spec) { rule->b_spec = TRUE; vxlan_spec = (const struct rte_flow_item_vxlan *) item->spec; - rte_memcpy(&rule->ixgbe_fdir.formatted.tni_vni, + rte_memcpy(((uint8_t *) + &rule->ixgbe_fdir.formatted.tni_vni + 1), vxlan_spec->vni, RTE_DIM(vxlan_spec->vni)); - rule->ixgbe_fdir.formatted.tni_vni <<= 8; + rule->ixgbe_fdir.formatted.tni_vni = rte_be_to_cpu_32( + rule->ixgbe_fdir.formatted.tni_vni); } } -- 2.20.1