netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: John Fastabend <john.fastabend@gmail.com>
To: Jiri Pirko <jiri@resnulli.us>
Cc: netdev@vger.kernel.org, davem@davemloft.net, sfeldma@gmail.com,
	idosch@mellanox.com, eladr@mellanox.com, tgraf@suug.ch,
	ast@plumgrid.com
Subject: Re: [patch net-next 00/14] rocker: add support for multiple worlds
Date: Mon, 05 Oct 2015 10:56:26 -0700	[thread overview]
Message-ID: <5612B9CA.2010101@gmail.com> (raw)
In-Reply-To: <20151005173951.GT2278@nanopsycho.orion>

[...]

>> I think your underestimating the flexibility of hardware. And
>> completely missing the hardware that is based on FPGAs and/or cell
>> architectures. This hardware is available today and could support
>> topology changes like this. But even less exotic hardware can/will
>> support parser updates which makes the device behave differently.
> 
> Sure, I'm just trying to explain that woulds and your "profiles" are
> something completely different. I feel like we are running in circles.
> 

Must be going in circles because I don't see the difference.

> 
>>
>> Other hardware can reconfigure the topology within some constraints,
>> the fm10k device supports this model. An extreme example would put
>> an ebpf interpreter in a fpga on the nic and expose it via a driver.
>>
>> If its just for rocker purposes I'm not really excited about adding
>> it to the kernel to support a qemu device. If we allow it for one
> 
> What exactly are you against? Multi-world support as it is of the
> userspace iface to change worlds? If the second, I understand, kind of.
> 

Just the userspace interface. I have hardware that can support
multiple worlds (although I'm fuzzy what you mean by worlds) today and
want to expose that as well. I guess my main objection is I wanted to
get away from out of band firmware/microcode updates and this doesn't
really look much better to me as I currently understand it. I'll have
a bank of microcode images and depending on the string load one of them.

I agree we need some way to support configurable hardware.

> 
>> driver I don't see how/why we should block it for "real" devices.
>>From the kernels point of view these are all real drivers. I could
>> build a qemu model that maps 1:1 with real hardware and do a drop
>> in replacement.
>>
>>>
>>> Rocker has a notion of "worlds". When a port is set to be in a certain
>>> world, it behaves in completely different way. Now we have just OF-DPA
>>> world. I will be adding BPF world shortly.
>>>
>>> This has nothing to do with profiles as you describe it, this is
>>> something completely different!
>>>
>>>
>>
>> I'm missing why its different.
>>
>> Would you object to me adding multiple worlds to fm10k
>> using opaque strings? I'll create a world with a topology that maps
>> well to ipv4 networks, a world for ipv6 networks, a world for l2 flat
>> networks, etc. Each world in this example will have a specific table
> 
> Not worlds in rocker terminology. This is what you call profiles.
> 
> 
>> topology and parser to support it. In this sense the ports will behave
>> in completely different ways i.e. packets will be processed by
>> different pipelines. Are you suggesting we do this?
> 
> No, I definitelly do not suggest this. Again, this is what you call "profile".
> I don't care about those, not in the scope of this patchset.
> 

hmm maybe you can explain to me what makes a change large enough
to be called a "world" and where it is a "profile"?

[...]

skipped a few comments because I think they were interesting but not
the point I was trying to ask.

>> Its related in that if you expose your device model you do not need
>> opaque strings to do wholesale reconfiguration of the device. Instead
>> if the parts of the device that are configurable are exposed to the
>> user they can build the "world" they want.
> 
> No, this is not about building. This is about choosing from fixed-sized
> pre-defined list of choices. Again, no "profiles".
> 

But I can just expose a list of pre-defined choices that map to what
I call "profiles". Must be missing the point help me understand what
a world is vs profile?

Maybe our goals are not actually conflicting. Do you have any objection
to pushing configuration code to create tables, insert a new parser,
and change the table topology, and then bind the tables to software
subsystems like fdb, l3, tc, nft, bpf, etc.

.John

  reply	other threads:[~2015-10-05 17:56 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-04 21:25 [patch net-next 00/14] rocker: add support for multiple worlds Jiri Pirko
2015-10-04 21:25 ` [patch net-next 01/14] rocker: remove unused rocker_port param from alloc funcs and shorten their names Jiri Pirko
2015-10-04 21:25 ` [patch net-next 02/14] rocker: rename rocker.h to rocker_hw.h Jiri Pirko
2015-10-04 21:25 ` [patch net-next 03/14] rocker: rename rocker.c to rocker_main.c Jiri Pirko
2015-10-04 21:25 ` [patch net-next 04/14] rocker: push tlv processing into separate files Jiri Pirko
2015-10-04 21:25 ` [patch net-next 05/14] rocker: implement set settings mode command Jiri Pirko
2015-10-06  4:51   ` Scott Feldman
2015-10-04 21:25 ` [patch net-next 06/14] rocker: introduce worlds infrastructure Jiri Pirko
2015-10-04 21:25 ` [patch net-next 07/14] rocker: introduce OF-DPA world skeleton Jiri Pirko
2015-10-04 21:25 ` [patch net-next 08/14] rocker: set default world on port probe and clean world on remove Jiri Pirko
2015-10-04 21:25 ` [patch net-next 09/14] rocker: add rtnl ops for port mode [gs]etting Jiri Pirko
2015-10-05 15:41   ` Scott Feldman
2015-10-05 15:52     ` John Fastabend
2015-10-05 16:37       ` Jiri Pirko
2015-10-05 17:07         ` John Fastabend
2015-10-05 17:24           ` Jiri Pirko
2015-10-05 17:43             ` John Fastabend
2015-10-05 17:50               ` Jiri Pirko
2015-10-05 15:53     ` Jiri Pirko
2015-10-05 16:37       ` Scott Feldman
2015-10-05 16:50         ` Jiri Pirko
2015-10-05 17:00           ` Scott Feldman
2015-10-05 17:12             ` Jiri Pirko
2015-10-04 21:25 ` [patch net-next 10/14] rocker: pass "learning" value as a parameter to rocker_port_set_learning Jiri Pirko
2015-10-05 15:16   ` David Laight
2015-10-05 15:24     ` Jiri Pirko
2015-10-04 21:25 ` [patch net-next 11/14] rocker: pre-allocate wait structures during cmd ring init Jiri Pirko
2015-10-04 21:25 ` [patch net-next 12/14] rocker: remove trans parameter to rocker_cmd_exec function Jiri Pirko
2015-10-04 21:25 ` [patch net-next 13/14] rocker: call rocker_cmd_exec function with "nowait" boolean instead of flags Jiri Pirko
2015-10-04 21:25 ` [patch net-next 14/14] rocker: move OF-DPA stuff into separate file Jiri Pirko
2015-10-05 15:41 ` [patch net-next 00/14] rocker: add support for multiple worlds John Fastabend
2015-10-05 16:30   ` Jiri Pirko
2015-10-05 16:58     ` John Fastabend
2015-10-05 17:39       ` Jiri Pirko
2015-10-05 17:56         ` John Fastabend [this message]
2015-10-05 17:49       ` Scott Feldman
2015-10-06  7:34         ` John Fastabend

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=5612B9CA.2010101@gmail.com \
    --to=john.fastabend@gmail.com \
    --cc=ast@plumgrid.com \
    --cc=davem@davemloft.net \
    --cc=eladr@mellanox.com \
    --cc=idosch@mellanox.com \
    --cc=jiri@resnulli.us \
    --cc=netdev@vger.kernel.org \
    --cc=sfeldma@gmail.com \
    --cc=tgraf@suug.ch \
    /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).