app/testpmd: add tunnel types
authorEli Britstein <elibr@nvidia.com>
Thu, 23 Sep 2021 08:43:00 +0000 (11:43 +0300)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 19 Oct 2021 21:51:10 +0000 (23:51 +0200)
Current testpmd implementation supports VXLAN only for tunnel offload.
Add GRE, NVGRE and GENEVE for tunnel offload flow matches.

For example:
testpmd> flow tunnel create 0 type vxlan
port 0: flow tunnel #1 type vxlan
testpmd> flow tunnel create 0 type nvgre
port 0: flow tunnel #2 type nvgre
testpmd> flow tunnel create 0 type gre
port 0: flow tunnel #3 type gre
testpmd> flow tunnel create 0 type geneve
port 0: flow tunnel #4 type geneve

Fixes: 1b9f274623b8 ("app/testpmd: add commands for tunnel offload")
Cc: stable@dpdk.org
Signed-off-by: Eli Britstein <elibr@nvidia.com>
Reviewed-by: Gregory Etelson <getelson@nvidia.com>
app/test-pmd/config.c

index bdcd826..23aa334 100644 (file)
@@ -1249,6 +1249,15 @@ port_flow_tunnel_type(struct rte_flow_tunnel *tunnel)
        case RTE_FLOW_ITEM_TYPE_VXLAN:
                type = "vxlan";
                break;
+       case RTE_FLOW_ITEM_TYPE_GRE:
+               type = "gre";
+               break;
+       case RTE_FLOW_ITEM_TYPE_NVGRE:
+               type = "nvgre";
+               break;
+       case RTE_FLOW_ITEM_TYPE_GENEVE:
+               type = "geneve";
+               break;
        }
 
        return type;
@@ -1309,6 +1318,12 @@ void port_flow_tunnel_create(portid_t port_id, const struct tunnel_ops *ops)
 
        if (!strcmp(ops->type, "vxlan"))
                type = RTE_FLOW_ITEM_TYPE_VXLAN;
+       else if (!strcmp(ops->type, "gre"))
+               type = RTE_FLOW_ITEM_TYPE_GRE;
+       else if (!strcmp(ops->type, "nvgre"))
+               type = RTE_FLOW_ITEM_TYPE_NVGRE;
+       else if (!strcmp(ops->type, "geneve"))
+               type = RTE_FLOW_ITEM_TYPE_GENEVE;
        else {
                fprintf(stderr, "cannot offload \"%s\" tunnel type\n",
                        ops->type);