[ovs-dev] [PATCH V2 12/12] netdev-offload-dpdk: Fix Ethernet matching for type only
Eli Britstein
elibr at mellanox.com
Wed May 27 16:01:12 UTC 2020
For OVS rule of the form "eth type is 0x1234 / end", rule is offloaded
in the form of "eth / end", which is incorrect. Fix it.
Fixes: e8a2b5bf92bb ("netdev-dpdk: implement flow offload with rte flow")
Signed-off-by: Eli Britstein <elibr at mellanox.com>
Reviewed-by: Roni Bar Yanai <roniba at mellanox.com>
---
lib/netdev-offload-dpdk.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/lib/netdev-offload-dpdk.c b/lib/netdev-offload-dpdk.c
index e8b8d6464..e68b6549c 100644
--- a/lib/netdev-offload-dpdk.c
+++ b/lib/netdev-offload-dpdk.c
@@ -860,7 +860,8 @@ parse_flow_match(struct flow_patterns *patterns,
/* Eth */
if (!eth_addr_is_zero(match->wc.masks.dl_src) ||
- !eth_addr_is_zero(match->wc.masks.dl_dst)) {
+ !eth_addr_is_zero(match->wc.masks.dl_dst) ||
+ match->wc.masks.dl_type) {
struct rte_flow_item_eth *spec, *mask;
spec = xzalloc(sizeof *spec);
@@ -876,6 +877,7 @@ parse_flow_match(struct flow_patterns *patterns,
memset(&consumed_masks->dl_dst, 0, sizeof consumed_masks->dl_dst);
memset(&consumed_masks->dl_src, 0, sizeof consumed_masks->dl_src);
+ consumed_masks->dl_type = 0;
add_flow_pattern(patterns, RTE_FLOW_ITEM_TYPE_ETH, spec, mask);
} else {
@@ -888,7 +890,6 @@ parse_flow_match(struct flow_patterns *patterns,
*/
add_flow_pattern(patterns, RTE_FLOW_ITEM_TYPE_ETH, NULL, NULL);
}
- consumed_masks->dl_type = 0;
/* VLAN */
if (match->wc.masks.vlans[0].tci && match->flow.vlans[0].tci) {
--
2.14.5
More information about the dev
mailing list