summaryrefslogtreecommitdiffstats
path: root/src/dpdk/drivers/net/ixgbe/ixgbe_flow.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/dpdk/drivers/net/ixgbe/ixgbe_flow.c')
-rw-r--r--src/dpdk/drivers/net/ixgbe/ixgbe_flow.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/dpdk/drivers/net/ixgbe/ixgbe_flow.c b/src/dpdk/drivers/net/ixgbe/ixgbe_flow.c
index 82aceed7..546c5929 100644
--- a/src/dpdk/drivers/net/ixgbe/ixgbe_flow.c
+++ b/src/dpdk/drivers/net/ixgbe/ixgbe_flow.c
@@ -1400,7 +1400,7 @@ ixgbe_parse_fdir_act_attr(const struct rte_flow_attr *attr,
* ETH dst_addr
{0xAC, 0x7B, 0xA1, {0xFF, 0xFF, 0xFF,
0x2C, 0x6D, 0x36} 0xFF, 0xFF, 0xFF}
- * MAC VLAN tci 0x2016 0xFFFF
+ * MAC VLAN tci 0x2016 0xEFFF
* tpid 0x8100 0xFFFF
* END
* Other members in mask and spec should set to 0x00.
@@ -1617,6 +1617,7 @@ ixgbe_parse_fdir_filter_normal(const struct rte_flow_attr *attr,
return -rte_errno;
}
rule->mask.vlan_tci_mask = vlan_mask->tci;
+ rule->mask.vlan_tci_mask &= rte_cpu_to_be_16(0xEFFF);
/* More than one tags are not supported. */
/**
@@ -2132,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);
}
}
@@ -2360,6 +2362,7 @@ ixgbe_parse_fdir_filter_tunnel(const struct rte_flow_attr *attr,
return -rte_errno;
}
rule->mask.vlan_tci_mask = vlan_mask->tci;
+ rule->mask.vlan_tci_mask &= rte_cpu_to_be_16(0xEFFF);
/* More than one tags are not supported. */
/**