[ovs-dev] [patch net-next RFC 10/12] openvswitch: add support for datapath hardware offload

Thomas Graf tgraf at suug.ch
Mon Aug 25 22:11:48 UTC 2014

First of all, thanks for the animated discussion, wouldn't
want to miss our arguments ;-)

On 08/25/14 at 12:48pm, Jamal Hadi Salim wrote:
> On 08/25/14 10:54, Thomas Graf wrote:
> >On 08/24/14 at 11:15am, Jamal Hadi Salim wrote:
> >Let's keep vendors out of this discussion.
> The API is from a vendor. It is clearly labelled as an OF API.
> It covers well abstracting that vendors SDK to enable OF. That
> is relevant info.
> If it covers all other vendors (which is where
> the quark handling comes in), I will be fine with it.
> I dont believe it does.

If I understand you correctly you are referring to the rocker
patch here. That is not part of the API.
> >That is simply not the case. The fact that John is using this model
> >to replace the flow director ioctl API should prove this.
> depends what NIC classifier John is mapping to. The Intels have
> about 4-5 different types of classifier on different hardware

Sorry for not addressing this but I think John should speak for
himself here, I don't want to misrepresent his plans.

> I gave a simple example.
> There are a hell more quarks than that.
> There are cases where there are multiple tables in terms of net masks
> etc.
> Yes, this should be handled in the driver. The input is the route
> message we already specify and not some XXX_Flow_XXx struct.

I would argue that swflow is a superset of a Netlink route. It
may infact be very useful to extend the API with something that
understands the Netlink representation of a route and have the
API translate that to a classifier that can be offloaded.

> I would be tagging along with you guys for flows if you:
> a) allow for different classifiers. This allows me to implement
> u32 and offload it.

Agreed. What you seem to disagree on is:

 - ndo_add_type1([...])
 - ndo_add_type2([...])
 - ndo_add_type3([...])


 - ndo_add_classifier(type, [...])

I honestly have little against the 2nd. It sounds a bit like an
ioctl interface though where a giant switch statement will cast
the data to a classifier specific struct which is why I slightly
dislike it.

It looks to me that a specific chip may either work in a flow/filter
mode, in a generic programmable mode or by providing a list of very
specific filters without a generic flow -> action relation. Having
multiple classifier types for all of them gives the impression that
an API user could use them in any combination which I would say will
typically not be the case.

> b) different actions (I think this part is not controversial, you
> seem to be having it already).


More information about the dev mailing list