diff mbox series

[ovs-dev,V2] netdev-tc-offloads: Fix vxlan tunnel offloading

Message ID 1505311498-13843-1-git-send-email-roid@mellanox.com
State Accepted
Headers show
Series [ovs-dev,V2] netdev-tc-offloads: Fix vxlan tunnel offloading | expand

Commit Message

Roi Dayan Sept. 13, 2017, 2:04 p.m. UTC
From: Paul Blakey <paulb@mellanox.com>

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 <paulb@mellanox.com>
Reviewed-by: Roi Dayan <roid@mellanox.com>
---
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(-)

Comments

Simon Horman Sept. 20, 2017, 7:17 a.m. UTC | #1
On Wed, Sep 13, 2017 at 05:04:58PM +0300, Roi Dayan wrote:
> From: Paul Blakey <paulb@mellanox.com>
> 
> 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 <paulb@mellanox.com>
> Reviewed-by: Roi Dayan <roid@mellanox.com>
> ---
> 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, applied to master and branch-2.8.
diff mbox series

Patch

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;