From: John Fastabend <john.r.fastabend@intel.com>
To: Simon Horman <simon.horman@netronome.com>
Cc: John Fastabend <john.fastabend@gmail.com>,
Jamal Hadi Salim <jhs@mojatatu.com>,
Jiri Pirko <jiri@resnulli.us>,
netdev@vger.kernel.org, davem@davemloft.net,
nhorman@tuxdriver.com, andy@greyhouse.net, tgraf@suug.ch,
dborkman@redhat.com, ogerlitz@mellanox.com, jesse@nicira.com,
pshelar@nicira.com, azhou@nicira.com, ben@decadent.org.uk,
stephen@networkplumber.org, jeffrey.t.kirsher@intel.com,
vyasevic@redhat.com, xiyou.wangcong@gmail.com,
edumazet@google.com, sfeldma@gmail.com, f.fainelli@gmail.com,
roopa@cumulusnetworks.com, linville@tuxdriver.com,
jasowang@redhat.com, ebiederm@xmission.com,
nicolas.dichtel@6wind.com, ryazanov.s.a@gmail.com,
buytenh@wantstofly.org, aviadr@mellanox.com, nbd@openwrt.org,
alexei.starovoitov@gmail.com, Neil.Jerram@metaswitch.com,
ronye@mellanox.com, alexander.h.duyck@redhat.com,
john.ronciak@intel.com, mleitner@redhat.com, shrijeet@gmail.com,
Subject: Re: [patch net-next v2 00/10] introduce rocker switch driver with hardware accelerated datapath api - phase 1: bridge fdb offload
Date: Thu, 20 Nov 2014 23:20:13 -0800 [thread overview]
Message-ID: <546EE7AD.90503@intel.com> (raw)
In-Reply-To: <20141121020108.GA1457@vergenet.net>
On 11/20/2014 06:01 PM, Simon Horman wrote:
> Hi John,
>
> On Wed, Nov 12, 2014 at 10:31:06PM -0800, John Fastabend wrote:
>> On 11/12/2014 09:44 PM, Simon Horman wrote:
>>> [snip]
>>>
>>>> Simon, if your feeling adventurous any feedback on the repo link
>>>> would be great. I still need to smash the commit log into something
>>>> coherent though at the moment you can see all the errors and rewrites,
>>>> etc as I made them.
>>>
>>> Hi John,
>>>
>>> here is some preliminary feedback:
>>>
>>> * I notice that the parse graph code isn't present yet.
>>> I suppose this is a difficult piece that naturally follows many
>>> other piece. None the less it is possibly the piece of most
>>> interest to me :-)
>>
>> I can add this over the next few days. Also I wanted to publish some
>> more complex examples on top of rocker switch. The nic drivers are
>> interesting but not as complex as some of the switch devices.
>
> I see that you have added the header graph, which seems pretty nice
> from my reading so far.
Great. I'm iterating over some other hardware now to be sure it will
work on some more complex configurations. And about ready to start
the rocker implementation.
>
> It seems to allow for arbitrary connections between instances
> of net_flow_header_node, including I loops I suppose. This seems
> nice and flexible to me.
Right loops could be supported.
>
> I have a very minor update to contribute which helped me to
> read the code. Please feel free to squash/ignore/...
>
I like the patch. This sort of cleanup is needed.
> diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_pipeline.h b/drivers/net/ethernet/intel/ixgbe/ixgbe_pipeline.h
> index a4818ab..4025a61 100644
> --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_pipeline.h
> +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_pipeline.h
> @@ -412,7 +412,7 @@ struct net_flow_jump_table ixgbe_vlan_inner_jump[2] = {
> .type = NET_FLOW_FIELD_REF_ATTR_TYPE_U16,
> .value_u16 = 0x0800,
> },
> - .node = 4,
> + .node = HEADER_INSTANCE_IP,
> },
> {
> .field = {0},
> @@ -443,7 +443,7 @@ struct net_flow_jump_table ixgbe_ip_jump[2] = {
> .type = NET_FLOW_FIELD_REF_ATTR_TYPE_U8,
> .value_u8 = 0x06,
> },
> - .node = 5,
> + .node = HEADER_INSTANCE_TCP,
> },
> {
> .field = {0},
>
>> There is also the table graph layout which I wanted tweak a bit. At
>> the moment I have hardware that can run tables in parallel and some
>> that executes tables in sequence. It might not be clear from the code
>> (why I need the cleanup) but the source id is being used to indicate
>> if the tables are executed in parallel or not.
>
> Thanks, that was not clear to me.
>
>>> * Will del and update flows require flows to already exist?
>>> And similarly, will add flow require flows with the same match to not
>>> already exist? If so, the error handling seems tricky of more than one
>>> flow is to be deleted/updated. IIRC there was some discussion of that
>>> kind of issue at the (double) round table discussion on the last day of
>>> LPC14 in Düsseldorf.
>>
>> I would expect del/updates for flows that don't exist should fail.
>
> Am I right in thinking that del and update flow NDOs may take
> a list of flows? If so I think some consideration needs
> to be made for handling failure of e.g. the last element of
> the list when the previous elements succeeded.
Yes the list of add/deletes are needed for user space to push down
bulk commands. At init time or when management software resets or
likely other cases we get large sets of rules being pushed
down doing this in bulk is much better then one-offing the flow commands.
>
> I suppose that user-space could dump the flow table if an error and
> adjust its state accordingly. But that seems somewhat onerous.
Right we talked about this briefly @ LPC if I recall correctly. I see
a couple ways to do this. Either we do a best effort and return the
first flow to have an error so userspace can learn where the failure
occurred. Another option is to have the driver roll-back and remove any
flows that were added leaving the driver in the same state it was before
the add flow command started. Or we could support both and let user space
tell us if we should use best effort or required modes.
Any thoughts?
>
>> I didn't intend to add any checks in the kernel to verify the matches
>> are unique. My opinion on this is that user space shouldn't add new
>> duplicate flows. And if it does hardware resources will be wasted.
>
> I don't have any strong opinions on that at this time.
> But it does seem reasonable so long as its clear that is the case.
When I get to document this I'll call it out explicitly. I think we
should have something in ./Documentation/networkin/ for this API.
>
>>> * Should the .node_count value of ixgbe_table_node_l2 be 3?
>>> ixgbe_table_graph_nodes has three elements but perhaps you
>>> are intentionally excluding the last element ixgbe_table_node_nil?
>>>
>>
>> Actually I could just drop the node_count at the moment because I've
>> been null terminating the arrays with null items.
>>
>> I should either add a count field to all the structures or null terminate
>> the arrays. For now I mostly null terminate the arrays when I use
>> them. For example matches is null terminates same for actions.
>
> It looks like you have move towards the null termination option.
> No objections here.
>
yep, the code looked nicer to me at least with this approach.
Thanks for looking it over,
John
next prev parent reply other threads:[~2014-11-21 7:20 UTC|newest]
Thread overview: 100+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-09 10:51 [patch net-next v2 00/10] introduce rocker switch driver with hardware accelerated datapath api - phase 1: bridge fdb offload Jiri Pirko
2014-11-09 10:51 ` [patch net-next v2 01/10] net: rename netdev_phys_port_id to more generic name Jiri Pirko
2014-11-10 3:35 ` Jamal Hadi Salim
2014-11-10 5:23 ` David Miller
2014-11-10 12:06 ` Jamal Hadi Salim
2014-11-10 12:33 ` Daniel Borkmann
2014-11-10 12:56 ` Jamal Hadi Salim
2014-11-10 16:28 ` David Miller
2014-11-10 7:43 ` Jiri Pirko
2014-11-10 12:17 ` Jamal Hadi Salim
2014-11-10 13:16 ` Jiri Pirko
2014-11-10 13:20 ` Jamal Hadi Salim
2014-11-10 16:28 ` David Miller
2014-11-10 19:03 ` Jamal Hadi Salim
2014-11-10 21:57 ` John Fastabend
2014-11-09 10:51 ` [patch net-next v2 02/10] net: introduce generic switch devices support Jiri Pirko
2014-11-10 21:59 ` John Fastabend
2014-11-11 15:11 ` Jiri Pirko
2014-11-11 9:49 ` M. Braun
2014-11-11 10:04 ` Jiri Pirko
2014-11-19 13:28 ` Roopa Prabhu
2014-11-19 13:46 ` Jiri Pirko
2014-11-19 13:59 ` Roopa Prabhu
2014-11-20 15:55 ` Andy Gospodarek
2014-11-21 7:16 ` Jiri Pirko
2014-11-09 10:51 ` [patch net-next v2 03/10] rtnl: expose physical switch id for particular device Jiri Pirko
2014-11-10 3:43 ` Jamal Hadi Salim
2014-11-10 7:45 ` Jiri Pirko
2014-11-10 17:58 ` Roopa Prabhu
2014-11-10 20:02 ` Scott Feldman
2014-11-11 13:55 ` Roopa Prabhu
2014-11-10 22:14 ` Jiri Pirko
2014-11-10 22:31 ` John Fastabend
2014-11-10 22:01 ` John Fastabend
2014-11-09 10:51 ` [patch net-next v2 04/10] net-sysfs: " Jiri Pirko
2014-11-10 22:01 ` John Fastabend
2014-11-09 10:51 ` [patch net-next v2 05/10] rocker: introduce rocker switch driver Jiri Pirko
2014-11-10 22:04 ` John Fastabend
2014-11-11 14:29 ` Thomas Graf
2014-11-11 15:19 ` Jiri Pirko
2014-11-11 15:32 ` Thomas Graf
2014-11-11 15:40 ` Jiri Pirko
2014-11-11 16:10 ` Thomas Graf
2014-11-27 14:09 ` Florian Fainelli
2014-11-11 15:41 ` Roopa Prabhu
2014-11-11 15:44 ` John Fastabend
2014-11-11 15:28 ` Jiri Pirko
2014-11-09 10:51 ` [patch net-next v2 06/10] bridge: introduce fdb offloading via switchdev Jiri Pirko
2014-11-10 3:47 ` Jamal Hadi Salim
2014-11-10 8:15 ` Jiri Pirko
2014-11-10 9:30 ` Scott Feldman
2014-11-10 12:47 ` Jamal Hadi Salim
2014-11-10 13:47 ` Jiri Pirko
2014-11-10 19:13 ` Jamal Hadi Salim
2014-11-10 13:51 ` Thomas Graf
2014-11-10 17:30 ` Andy Gospodarek
2014-11-10 19:03 ` Roopa Prabhu
2014-11-12 13:43 ` Jiri Pirko
2014-11-09 10:51 ` [patch net-next v2 07/10] bridge: call netdev_sw_port_stp_update when bridge port STP status changes Jiri Pirko
2014-11-10 13:11 ` Jamal Hadi Salim
2014-11-10 14:04 ` Thomas Graf
2014-11-10 19:20 ` Jamal Hadi Salim
2014-11-10 15:59 ` Roopa Prabhu
2014-11-09 10:51 ` [patch net-next v2 08/10] bridge: add API to notify bridge driver of learned FBD on offloaded device Jiri Pirko
2014-11-11 14:21 ` Roopa Prabhu
2014-11-11 17:38 ` Scott Feldman
2014-11-11 21:43 ` Roopa Prabhu
2014-11-09 10:51 ` [patch net-next v2 09/10] rocker: implement rocker ofdpa flow table manipulation Jiri Pirko
2014-11-09 10:51 ` [patch net-next v2 10/10] rocker: implement L2 bridge offloading Jiri Pirko
2014-11-10 3:53 ` Jamal Hadi Salim
2014-11-10 8:18 ` Jiri Pirko
2014-11-10 9:10 ` Nicolas Dichtel
2014-11-10 8:46 ` Scott Feldman
2014-11-10 12:27 ` Jamal Hadi Salim
2014-11-10 16:12 ` Roopa Prabhu
2014-11-10 17:36 ` Scott Feldman
2014-11-10 18:35 ` Roopa Prabhu
2014-11-10 19:27 ` Jamal Hadi Salim
2014-11-10 19:47 ` Scott Feldman
2014-11-10 21:14 ` Jamal Hadi Salim
2014-11-10 19:25 ` Jamal Hadi Salim
2014-11-10 17:22 ` Scott Feldman
2014-11-09 16:40 ` [patch net-next] bridge: rename fdb_*_hw to fdb_*_hw_addr to avoid confusion Jiri Pirko
2014-11-11 2:33 ` David Miller
2014-11-11 7:20 ` Jiri Pirko
2014-11-10 3:31 ` [patch net-next v2 00/10] introduce rocker switch driver with hardware accelerated datapath api - phase 1: bridge fdb offload Jamal Hadi Salim
2014-11-10 3:46 ` Simon Horman
2014-11-10 4:03 ` Jamal Hadi Salim
2014-11-10 4:58 ` Simon Horman
2014-11-10 22:23 ` John Fastabend
2014-11-11 8:51 ` Simon Horman
2014-11-13 5:44 ` Simon Horman
2014-11-13 6:31 ` John Fastabend
2014-11-21 2:01 ` Simon Horman
2014-11-21 7:20 ` John Fastabend [this message]
2014-11-10 7:23 ` Jiri Pirko
2014-11-10 12:16 ` Jamal Hadi Salim
2014-11-10 13:12 ` Jiri Pirko
2014-11-10 16:48 ` Thomas Graf
2014-11-12 13:44 ` Jiri Pirko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=546EE7AD.90503@intel.com \
--to=john.r.fastabend@intel.com \
--cc=Neil.Jerram@metaswitch.com \
--cc=alexander.h.duyck@redhat.com \
--cc=alexei.starovoitov@gmail.com \
--cc=andy@greyhouse.net \
--cc=aviadr@mellanox.com \
--cc=azhou@nicira.com \
--cc=ben@decadent.org.uk \
--cc=buytenh@wantstofly.org \
--cc=davem@davemloft.net \
--cc=dborkman@redhat.com \
--cc=ebiederm@xmission.com \
--cc=edumazet@google.com \
--cc=f.fainelli@gmail.com \
--cc=jasowang@redhat.com \
--cc=jeffrey.t.kirsher@intel.com \
--cc=jesse@nicira.com \
--cc=jhs@mojatatu.com \
--cc=jiri@resnulli.us \
--cc=john.fastabend@gmail.com \
--cc=john.ronciak@intel.com \
--cc=linville@tuxdriver.com \
--cc=mleitner@redhat.com \
--cc=nbd@openwrt.org \
--cc=netdev@vger.kernel.org \
--cc=nhorman@tuxdriver.com \
--cc=nicolas.dichtel@6wind.com \
--cc=ogerlitz@mellanox.com \
--cc=pshelar@nicira.com \
--cc=ronye@mellanox.com \
--cc=roopa@cumulusnetworks.com \
--cc=ryazanov.s.a@gmail.com \
--cc=sfeldma@gmail.com \
--cc=shrijeet@gmail.com \
--cc=simon.horman@netronome.com \
--cc=stephen@networkplumber.org \
--cc=tgraf@suug.ch \
--cc=vyasevic@redhat.com \
--cc=xiyou.wangcong@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).