app/testpmd: add tunnel types

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>
This commit is contained in:
Eli Britstein 2021-09-23 11:43:00 +03:00 committed by Ferruh Yigit
parent 287ca31bea
commit ad6a8a20cb

View 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);