[ovs-dev] [patch net-next RFC 03/12] net: introduce generic switch devices support
jiri at resnulli.us
Tue Aug 26 08:34:52 UTC 2014
Sun, Aug 24, 2014 at 01:46:05PM CEST, tgraf at suug.ch wrote:
>On 08/21/14 at 06:18pm, Jiri Pirko wrote:
>> diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
>> index 39294b9..8b5d14c 100644
>> --- a/include/linux/netdevice.h
>> +++ b/include/linux/netdevice.h
>> @@ -49,6 +49,8 @@
>> #include <linux/netdev_features.h>
>> #include <linux/neighbour.h>
>> +#include <linux/sw_flow.h>
>> #include <uapi/linux/netdevice.h>
>> struct netpoll_info;
>> @@ -997,6 +999,24 @@ typedef u16 (*select_queue_fallback_t)(struct net_device *dev,
>> + * int (*ndo_swdev_flow_insert)(struct net_device *dev,
>> + * const struct sw_flow *flow);
>> + * Called to insert a flow into switch device. If driver does
>> + * not implement this, it is assumed that the hw does not have
>> + * a capability to work with flows.
>I asume you are planning to add an additional expandable struct
>paramter to handle insertion parameters when the first is introduced
>to avoid requiring to touch every driver every time.
Sure. That is the way to go.
>> + * swdev_flow_insert - Insert a flow into switch
>> + * @dev: port device
>> + * @flow: flow descriptor
>> + *
>> + * Insert a flow into switch this port is part of.
>> + */
>> +int swdev_flow_insert(struct net_device *dev, const struct sw_flow *flow)
>> + const struct net_device_ops *ops = dev->netdev_ops;
>> + print_flow(flow, dev, "insert");
>> + if (!ops->ndo_swdev_flow_insert)
>> + return -EOPNOTSUPP;
>> + WARN_ON(!ops->ndo_swdev_get_id);
>> + BUG_ON(!flow->actions);
>> + return ops->ndo_swdev_flow_insert(dev, flow);
>Splitting the flow specific API into a separate file (maybe
>swdev_flow.c?) might help resolve some of the concerns around the
>focus on flows. It would make it clear that it's one of multiple
>models to be supported.
I understand your point. But the file is tiny as it is. I would keep all
in one file for now.
More information about the dev