2
0
mirror of https://github.com/openvswitch/ovs synced 2025-08-30 22:05:19 +00:00

netdev-offload-dpdk: Fix for broken ethernet matching HWOL for XL710NIC.

This patch introduces a temporary work around to fix
partial hardware offload for XL710 devices. Currently the incorrect
ethernet pattern is being set. This patch will be removed once
this issue is fixed within the i40e PMD.

Signed-off-by: Emma Finn <emma.finn@intel.com>
Signed-off-by: Eli Britstein <elibr@nvidia.com>
Co-authored-by: Eli Britstein <elibr@nvidia.com>
Tested-by: Ian Stokes <ian.stokes@intel.com>
Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
This commit is contained in:
Emma Finn
2020-08-14 14:38:49 +01:00
committed by Ilya Maximets
parent d08a602b35
commit 023f257852

View File

@@ -691,9 +691,22 @@ parse_flow_match(struct flow_patterns *patterns,
consumed_masks->packet_type = 0;
/* Eth */
if (match->wc.masks.dl_type ||
!eth_addr_is_zero(match->wc.masks.dl_src) ||
!eth_addr_is_zero(match->wc.masks.dl_dst)) {
if (match->wc.masks.dl_type == OVS_BE16_MAX && is_ip_any(&match->flow)
&& eth_addr_is_zero(match->wc.masks.dl_dst)
&& eth_addr_is_zero(match->wc.masks.dl_src)) {
/*
* This is a temporary work around to fix ethernet pattern for partial
* hardware offload for X710 devices. This fix will be reverted once
* the issue is fixed within the i40e PMD driver.
*/
add_flow_pattern(patterns, RTE_FLOW_ITEM_TYPE_ETH, NULL, NULL);
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;
} else if (match->wc.masks.dl_type ||
!eth_addr_is_zero(match->wc.masks.dl_src) ||
!eth_addr_is_zero(match->wc.masks.dl_dst)) {
struct rte_flow_item_eth *spec, *mask;
spec = xzalloc(sizeof *spec);