Message ID | 1634807897-98819-4-git-send-email-nanteby@nvidia.com |
---|---|
State | Accepted |
Commit | 5f60741dcfb1180b27d3efc18861a08be854fe91 |
Headers | show |
Series | netdev datapath hardware offload support for GRE flows | expand |
Context | Check | Description |
---|---|---|
ovsrobot/apply-robot | success | apply and check: success |
ovsrobot/github-robot-_Build_and_Test | fail | github build: failed |
On 10/21/21 11:18, Nir Anteby via dev wrote: > Add support for tnl_pop action for gre vport. > > Signed-off-by: Nir Anteby <nanteby@nvidia.com> > --- > lib/netdev-offload-dpdk.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/lib/netdev-offload-dpdk.c b/lib/netdev-offload-dpdk.c > index af56491..a2d7c85 100644 > --- a/lib/netdev-offload-dpdk.c > +++ b/lib/netdev-offload-dpdk.c > @@ -908,6 +908,12 @@ vport_to_rte_tunnel(struct netdev *vport, > ds_put_format(s_tnl, "flow tunnel create %d type vxlan; ", > netdev_dpdk_get_port_id(netdev)); > } > + } else if (!strcmp(netdev_get_type(vport), "gre")) { > + tunnel->type = RTE_FLOW_ITEM_TYPE_GRE; > + if (!VLOG_DROP_DBG(&rl)) { > + ds_put_format(s_tnl, "flow tunnel create %d type gre; ", > + netdev_dpdk_get_port_id(netdev)); > + } > } else { > VLOG_DBG_RL(&rl, "vport type '%s' is not supported", > netdev_get_type(vport)); > @@ -2236,6 +2242,9 @@ get_vport_netdev_cb(struct netdev *netdev, > if (!aux->type || strcmp(netdev_get_type(netdev), aux->type)) { > return false; > } > + if (!strcmp(netdev_get_type(netdev), "gre")) { > + goto out; > + } > > tnl_cfg = netdev_get_tunnel_config(netdev); > if (!tnl_cfg) { > @@ -2248,6 +2257,7 @@ get_vport_netdev_cb(struct netdev *netdev, > return false; > } > > +out: > /* Found the netdev. Store the results and stop the traversing. */ > aux->vport = netdev_ref(netdev); > *aux->odp_port = odp_port; > @@ -2269,6 +2279,8 @@ get_vport_netdev(const char *dpif_type, > > if (tunnel->type == RTE_FLOW_ITEM_TYPE_VXLAN) { > aux.type = "vxlan"; > + } else if (tunnel->type == RTE_FLOW_ITEM_TYPE_GRE) { > + aux.type = "gre"; > } > netdev_ports_traverse(dpif_type, get_vport_netdev_cb, &aux); > > With the change in patch 1, aux->vport and aux->odp_port are now properly set: Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com> Thanks, Maxime
diff --git a/lib/netdev-offload-dpdk.c b/lib/netdev-offload-dpdk.c index af56491..a2d7c85 100644 --- a/lib/netdev-offload-dpdk.c +++ b/lib/netdev-offload-dpdk.c @@ -908,6 +908,12 @@ vport_to_rte_tunnel(struct netdev *vport, ds_put_format(s_tnl, "flow tunnel create %d type vxlan; ", netdev_dpdk_get_port_id(netdev)); } + } else if (!strcmp(netdev_get_type(vport), "gre")) { + tunnel->type = RTE_FLOW_ITEM_TYPE_GRE; + if (!VLOG_DROP_DBG(&rl)) { + ds_put_format(s_tnl, "flow tunnel create %d type gre; ", + netdev_dpdk_get_port_id(netdev)); + } } else { VLOG_DBG_RL(&rl, "vport type '%s' is not supported", netdev_get_type(vport)); @@ -2236,6 +2242,9 @@ get_vport_netdev_cb(struct netdev *netdev, if (!aux->type || strcmp(netdev_get_type(netdev), aux->type)) { return false; } + if (!strcmp(netdev_get_type(netdev), "gre")) { + goto out; + } tnl_cfg = netdev_get_tunnel_config(netdev); if (!tnl_cfg) { @@ -2248,6 +2257,7 @@ get_vport_netdev_cb(struct netdev *netdev, return false; } +out: /* Found the netdev. Store the results and stop the traversing. */ aux->vport = netdev_ref(netdev); *aux->odp_port = odp_port; @@ -2269,6 +2279,8 @@ get_vport_netdev(const char *dpif_type, if (tunnel->type == RTE_FLOW_ITEM_TYPE_VXLAN) { aux.type = "vxlan"; + } else if (tunnel->type == RTE_FLOW_ITEM_TYPE_GRE) { + aux.type = "gre"; } netdev_ports_traverse(dpif_type, get_vport_netdev_cb, &aux);
Add support for tnl_pop action for gre vport. Signed-off-by: Nir Anteby <nanteby@nvidia.com> --- lib/netdev-offload-dpdk.c | 12 ++++++++++++ 1 file changed, 12 insertions(+)