From: Paul Blakey <[email protected]>
This commit fixes offloading when tunnel id is 0 by checking
for valid tunnel dst ipv4 or ipv6, like done in the normal flow.
Also need to reset the tunnel mask outside the condition
because in the special case, when adding a port with key=flow,
the match for tunnel_set gets a tunnel key id 0 with a mask.
If we don't reset the mask we'll fail later when we check
for unknown attributes that the mask was not reset.
Fixes: 8f283af89298 ("netdev-tc-offloads: Implement netdev flow put using tc
interface")
Signed-off-by: Paul Blakey <[email protected]>
Reviewed-by: Roi Dayan <[email protected]>
---
Hi,
This is V2 for the prev patch with
title "netdev-tc-offloads: Fix offloading when tunnel id is 0"
V1->V2:
- Use flow_tnl_dst_is_set() instead of checking mask
- Move memset of maks tunnel to outside the condition
- Update commit message
Thanks,
Roi
lib/netdev-tc-offloads.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/lib/netdev-tc-offloads.c b/lib/netdev-tc-offloads.c
index 3c145c2..524c7dc 100644
--- a/lib/netdev-tc-offloads.c
+++ b/lib/netdev-tc-offloads.c
@@ -683,7 +683,7 @@ netdev_tc_flow_put(struct netdev *netdev, struct match
*match,
memset(&flower, 0, sizeof flower);
- if (tnl->tun_id) {
+ if (flow_tnl_dst_is_set(&key->tunnel)) {
VLOG_DBG_RL(&rl,
"tunnel: id %#" PRIx64 " src " IP_FMT
" dst " IP_FMT " tp_src %d tp_dst %d",
@@ -698,9 +698,8 @@ netdev_tc_flow_put(struct netdev *netdev, struct match
*match,
flower.tunnel.tp_src = tnl->tp_src;
flower.tunnel.tp_dst = tnl->tp_dst;
flower.tunnel.tunnel = true;
-
- memset(&mask->tunnel, 0, sizeof mask->tunnel);
}
+ memset(&mask->tunnel, 0, sizeof mask->tunnel);
flower.key.eth_type = key->dl_type;
flower.mask.eth_type = mask->dl_type;
--
2.7.5
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev