On Thu, Sep 04, 2014 at 11:24:58AM +0200, Jiri Pirko wrote:
> Thu, Sep 04, 2014 at 11:04:49AM CEST, simon.hor...@netronome.com wrote:
> >Hi Jiri,
> >
> >sorry for coming a little late to the party.
> >I'm very happy to see work in this area.
> >
> >On Thu, Aug 21, 2014 at 06:19:03PM +0200, Jiri Pirko wrote:
> >> Benefit from the possibility to work with flows in switch devices and
> >> use the swdev api to offload flow datapath.
> >> 
> >> Signed-off-by: Jiri Pirko <j...@resnulli.us>
> >> ---
> >>  include/linux/sw_flow.h        |  14 +++
> >>  net/openvswitch/Makefile       |   3 +-
> >>  net/openvswitch/datapath.c     |  33 ++++++
> >>  net/openvswitch/datapath.h     |   3 +
> >>  net/openvswitch/flow_table.c   |   1 +
> >>  net/openvswitch/hw_offload.c   | 235 
> >> +++++++++++++++++++++++++++++++++++++++++
> >>  net/openvswitch/hw_offload.h   |  22 ++++
> >>  net/openvswitch/vport-netdev.c |   3 +
> >>  net/openvswitch/vport.h        |   2 +
> >>  9 files changed, 315 insertions(+), 1 deletion(-)
> >>  create mode 100644 net/openvswitch/hw_offload.c
> >>  create mode 100644 net/openvswitch/hw_offload.h
> >> 
> >> diff --git a/include/linux/sw_flow.h b/include/linux/sw_flow.h
> >> index b622fde..079d065 100644
> >> --- a/include/linux/sw_flow.h
> >> +++ b/include/linux/sw_flow.h
> >> @@ -80,7 +80,21 @@ struct sw_flow_mask {
> >>    struct sw_flow_key key;
> >>  };
> >>  
> >> +enum sw_flow_action_type {
> >> +  SW_FLOW_ACTION_TYPE_OUTPUT,
> >> +  SW_FLOW_ACTION_TYPE_VLAN_PUSH,
> >> +  SW_FLOW_ACTION_TYPE_VLAN_POP,
> >> +};
> >> +
> >>  struct sw_flow_action {
> >> +  enum sw_flow_action_type type;
> >> +  union {
> >> +          struct net_device *output_dev;
> >> +          struct {
> >> +                  __be16 vlan_proto;
> >> +                  u16 vlan_tci;
> >> +          } vlan;
> >> +  };
> >>  };
> >
> >I think it would be nice to use an more end-to-end approach for actions.
> >
> >The way things that are set up in this patch there are thee actions
> >that are allowed. This is in contrast to the Open vSwtich datapath which
> >supports a much later superset of actions. And occasionally aquires
> >support for new ones (e.g. my recent work on MPLS push, pop and set
> >actions).
> >
> >I think it would be nicer if arbitrary actions could be passed
> >down to the swdev API and for the underlying driver to return
> >an appropriate error code if an action is unsupported. Rather than having
> >datapath or swdev API code filtering actions.
> >
> >That is allow end-to-end communication between the datapath and the driver
> >rather than having a filter in the middle.
> 
> There is not an intention to filter this on swdev layer. Only couple od
> action types is supported atm. But nothing prevents to add more action
> types in the set. What you describe (driver receiving all and provides
> feedback if it can handle or not) is the goal.

Ok, good to know.

I think it would be ideal if the intermediate layers didn't need
to be taught about every new action.

> >[snip]
> >
> >In relation to ports and datapaths it seems to me that the API that
> >has been developed accommodates a model where a port may belong to a
> >switch device; that this topology is fixed before any API calls are made
> >and that all all ports belonging to the same switch belong to the same
> >datapath.
> >
> >This makes sense in the case of hardware that looks a lot like a switch.
> >But I think that other scenarios are possible. For example hardware that
> >is able to handle the same abstractions handled by the datapath: datapaths
> >may be created or destroyed; vports may be added and removed from datapaths.
> 
> Hmm. Maybe there can be added something like "datapath id" that would
> couple multiple ports?

I can see how something like that could work.

> >So one might have a piece of hardware that is configured with more than one
> >datapath configured and its different ports belong to it might be
> >associated with different datapaths.
> 
> But that could propagate 2 switch ids (datapath ids), one for each dp.

Right, I think so too. But I think it would also provide a way
to configure things dynamically, if the hardware supports such
configuration.

> I believe that switchid should say what ports are part of one silicon. I
> can imagine adding port-dp manipulation api later and that would come
> with datapath id notion.

Right, it may well make sense for this to be a separate API.
Sorry for overlooking that in my previous email.

> >Or we might have hardware that is able to offload a tunnel vport.
> >
> >In short I am thinking in terms of API callbacks to manipulate datapaths
> >and vports. Although I have not thought about it in detail I believe
> >that the current model you have implemented using such a scheme because
> >the scheme I am suggesting maps to that of the datapath and you have
> >implemented your model there.
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to