From: Chaoyong He <[email protected]>

We should try our best to fill all the fields of 'struct rte_flow_tunnel',
rather than just give PMD what it need for now.

The number and logic of PMD are increase everyday, and they can use any
field in the API I think.

For nfp PMD, to implement the offload of tunnel pop action, use the
value of 'is_ipv6' field of 'struct rte_flow_tunnel' is natural and simple.
Of course it can scan and parse the pattern array to get this information,
but that will increase complex logic.

Fixes: be56e063d028 ("netdev-offload-dpdk: Support tunnel pop action.")
Signed-off-by: Chaoyong He <[email protected]>
Reviewed-by: Louis Peens <[email protected]>
Signed-off-by: Simon Horman <[email protected]>
---
 lib/netdev-offload-dpdk.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/lib/netdev-offload-dpdk.c b/lib/netdev-offload-dpdk.c
index 2819ebd1aa69..7c8d2e536f6d 100644
--- a/lib/netdev-offload-dpdk.c
+++ b/lib/netdev-offload-dpdk.c
@@ -1108,12 +1108,18 @@ vport_to_rte_tunnel(struct netdev *vport,
     const struct netdev_tunnel_config *tnl_cfg;
 
     memset(tunnel, 0, sizeof *tunnel);
+
+    tnl_cfg = netdev_get_tunnel_config(vport);
+    if (!tnl_cfg) {
+        return -1;
+    }
+
+    if (!IN6_IS_ADDR_V4MAPPED(&tnl_cfg->ipv6_dst)) {
+        tunnel->is_ipv6 = true;
+    }
+
     if (!strcmp(netdev_get_type(vport), "vxlan")) {
         tunnel->type = RTE_FLOW_ITEM_TYPE_VXLAN;
-        tnl_cfg = netdev_get_tunnel_config(vport);
-        if (!tnl_cfg) {
-            return -1;
-        }
         tunnel->tp_dst = tnl_cfg->dst_port;
         if (!VLOG_DROP_DBG(&rl)) {
             ds_put_format(s_tnl, "flow tunnel create %d type vxlan; ",
-- 
2.30.2

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to