Skip to content

Commit

Permalink
netdev-offload-dpdk: Fix for broken ethernet matching HWOL for XL710NIC.
Browse files Browse the repository at this point in the history
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 <[email protected]>
Signed-off-by: Eli Britstein <[email protected]>
Co-authored-by: Eli Britstein <[email protected]>
Tested-by: Ian Stokes <[email protected]>
Signed-off-by: Ilya Maximets <[email protected]>
  • Loading branch information
2 people authored and igsilya committed Aug 17, 2020
1 parent d08a602 commit 023f257
Showing 1 changed file with 16 additions and 3 deletions.
19 changes: 16 additions & 3 deletions lib/netdev-offload-dpdk.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down

0 comments on commit 023f257

Please sign in to comment.