diff mbox series

[ovs-dev,v2,1/1] netdev-offload-dpdk: Fix GRE without a key match

Message ID 20231031144622.122954-1-salems@nvidia.com
State Superseded
Headers show
Series [ovs-dev,v2,1/1] netdev-offload-dpdk: Fix GRE without a key match | expand

Checks

Context Check Description
ovsrobot/apply-robot warning apply and check: warning
ovsrobot/github-robot-_Build_and_Test success github build: passed
ovsrobot/intel-ovs-compilation success test: success

Commit Message

Salem Sol Oct. 31, 2023, 2:46 p.m. UTC
In case there is no match on GRE key, avoid adding the key match item.

Fixes: 7617d0583c73 ("netdev-offload-dpdk: Add support for matching on gre fields.")
Signed-off-by: Salem Sol <salems@nvidia.com>
---
 lib/netdev-offload-dpdk.c | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)
diff mbox series

Patch

diff --git a/lib/netdev-offload-dpdk.c b/lib/netdev-offload-dpdk.c
index 992627fa2..b2bb9013e 100644
--- a/lib/netdev-offload-dpdk.c
+++ b/lib/netdev-offload-dpdk.c
@@ -1336,16 +1336,19 @@  parse_gre_match(struct flow_patterns *patterns,
         greh_spec->k = !!(match->flow.tunnel.flags & FLOW_TNL_F_KEY);
         greh_mask->k = 1;
 
-        key_spec = xzalloc(sizeof *key_spec);
-        key_mask = xzalloc(sizeof *key_mask);
+        if (greh_spec->k) {
+            key_spec = xzalloc(sizeof *key_spec);
+            key_mask = xzalloc(sizeof *key_mask);
 
-        *key_spec = htonl(ntohll(match->flow.tunnel.tun_id));
-        *key_mask = htonl(ntohll(match->wc.masks.tunnel.tun_id));
+            *key_spec = htonl(ntohll(match->flow.tunnel.tun_id));
+            *key_mask = htonl(ntohll(match->wc.masks.tunnel.tun_id));
+
+            add_flow_pattern(patterns, RTE_FLOW_ITEM_TYPE_GRE_KEY, key_spec,
+                             key_mask, NULL);
+        }
 
         consumed_masks->tunnel.tun_id = 0;
         consumed_masks->tunnel.flags &= ~FLOW_TNL_F_KEY;
-        add_flow_pattern(patterns, RTE_FLOW_ITEM_TYPE_GRE_KEY, key_spec,
-                         key_mask, NULL);
     }
 
     consumed_masks->tunnel.flags &= ~FLOW_TNL_F_DONT_FRAGMENT;