From: Jiri Pirko <jiri@resnulli.us>
To: netdev@vger.kernel.org
Cc: davem@davemloft.net, stephen@networkplumber.org,
Narendra_K@Dell.com, bhutchings@solarflare.com,
john.r.fastabend@intel.com, or.gerlitz@gmail.com,
jeffrey.t.kirsher@intel.com, jesse.brandeburg@intel.com,
bruce.w.allan@intel.com, carolyn.wyborny@intel.com,
donald.c.skidmore@intel.com, gregory.v.rose@intel.com,
peter.p.waskiewicz.jr@intel.com, alexander.h.duyck@intel.com,
john.ronciak@intel.com, tushar.n.dave@intel.com,
matthew.vick@intel.com, mitch.a.williams@intel.com,
vyasevic@redhat.com, amwang@redhat.com,
johannes@sipsolutions.net
Subject: [patch net-next v6 0/4] export device physical port id to userspace
Date: Mon, 29 Jul 2013 18:16:48 +0200 [thread overview]
Message-ID: <1375114612-537-1-git-send-email-jiri@resnulli.us> (raw)
This patchset is based on patch by Narendra_K@Dell.com
Once device which can change phys port id during its lifetime adopts this,
NETDEV_CHANGEPHYSPORTID event will be added and driver will call
call_netdevice_notifiers(NETDEV_NETDEV_CHANGEPHYSPORTID, dev) to propagate
the change to userspace.
v1->v2: as suggested by Ben, handle -EOPNOTSUPP in rtnl code (wrapped up ndo call)
v2->v3: adjusted patch 1 commit message
v3->v4: used "%phN" for sysfs printf as suggested by DaveM
added igb/igbvf implementation as requested by Or Gerlitz
v4->v5: used prandom_u32 to generate id in igb_probe
removed duplicate code in ibgvf_probe
pushed dev_err string into one line in igbvf_refresh_ppid
v5->v6: use uuid_le_gen for generating 16-byte phys port id for igb/igbvf
as suggested by BenH
1) Why do we need this, and why do existing facilities fail to provide
a way to accomplish this?
Currenty there's very hard to tell if two netdevs are using the same physical
port. For sr-iov this can be get by sysfs. For other mechanisms, like NPAR
there's very hard to do it (one must learn it from NIC BIOS). But even for
sr-iov there's no way to say if two netdevs are using the same phys port when
these are passed through to virtual guests.
This patchset provides the generic way of letting this information know to
userspace. This info can be used by apps like NetworkManager, teamd, Wicked,
ovs daemon, etc, to do smarter bonding decisions.
2) Why is the physical port ID defined as a 32 byte opaque cookie?
What formats and layouts need to be accomodated, and which
influenced the design of the ID?
For user to distinguish if two netdevs are using the same port, he only needs
to compare their phys port ids. Nothing else is needed. This id has no
structure for security reasons. VF should not know anything about PF.
3) Are IDs globally unique? Why or why not? If IDs should be
globally unique, but only in certain cases, what exactly are those
cases.
Most of the time only uniqueness needed is in scope of single machine.
There might be case when the id should be unique between couple of machines
in virtualization environment. Given that for example for igb/igbvf 16B uuid
is used, there is no problem for this case as well. But each driver can
implement this differently focusing the hw capabilities and needs.
Jiri Pirko (4):
net: add ndo to get id of physical port of the device
rtnl: export physical port id via RT netlink
net: export physical port id via sysfs
igb/igbvf: implement ndo_get_phys_port_id
drivers/net/ethernet/intel/igb/e1000_mbx.h | 1 +
drivers/net/ethernet/intel/igb/igb.h | 3 +++
drivers/net/ethernet/intel/igb/igb_main.c | 37 ++++++++++++++++++++++++++++-
drivers/net/ethernet/intel/igbvf/igbvf.h | 4 ++++
drivers/net/ethernet/intel/igbvf/mbx.h | 1 +
drivers/net/ethernet/intel/igbvf/netdev.c | 38 ++++++++++++++++++++++++++++++
drivers/net/ethernet/intel/igbvf/vf.c | 34 ++++++++++++++++++++++++++
drivers/net/ethernet/intel/igbvf/vf.h | 1 +
include/linux/netdevice.h | 20 ++++++++++++++++
include/uapi/linux/if_link.h | 1 +
net/core/dev.c | 18 ++++++++++++++
net/core/net-sysfs.c | 22 +++++++++++++++++
net/core/rtnetlink.c | 25 +++++++++++++++++++-
13 files changed, 203 insertions(+), 2 deletions(-)
--
1.8.1.4
next reply other threads:[~2013-07-29 16:16 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-29 16:16 Jiri Pirko [this message]
2013-07-29 16:16 ` [patch net-next v6 1/4] net: add ndo to get id of physical port of the device Jiri Pirko
2013-07-29 16:16 ` [patch net-next v6 2/4] rtnl: export physical port id via RT netlink Jiri Pirko
2013-07-29 16:16 ` [patch net-next v6 3/4] net: export physical port id via sysfs Jiri Pirko
2013-07-29 16:16 ` [patch net-next v6 4/4] igb/igbvf: implement ndo_get_phys_port_id Jiri Pirko
2013-08-22 10:39 ` Jeff Kirsher
2013-08-22 13:10 ` Jiri Pirko
2013-08-28 2:26 ` Brown, Aaron F
2013-08-28 6:05 ` Jiri Pirko
2013-08-28 19:06 ` Brown, Aaron F
2014-02-21 8:02 ` Jiri Pirko
2013-07-29 22:23 ` [patch net-next v6 0/4] export device physical port id to userspace Jeff Kirsher
2013-07-31 0:36 ` David Miller
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=1375114612-537-1-git-send-email-jiri@resnulli.us \
--to=jiri@resnulli.us \
--cc=Narendra_K@Dell.com \
--cc=alexander.h.duyck@intel.com \
--cc=amwang@redhat.com \
--cc=bhutchings@solarflare.com \
--cc=bruce.w.allan@intel.com \
--cc=carolyn.wyborny@intel.com \
--cc=davem@davemloft.net \
--cc=donald.c.skidmore@intel.com \
--cc=gregory.v.rose@intel.com \
--cc=jeffrey.t.kirsher@intel.com \
--cc=jesse.brandeburg@intel.com \
--cc=johannes@sipsolutions.net \
--cc=john.r.fastabend@intel.com \
--cc=john.ronciak@intel.com \
--cc=matthew.vick@intel.com \
--cc=mitch.a.williams@intel.com \
--cc=netdev@vger.kernel.org \
--cc=or.gerlitz@gmail.com \
--cc=peter.p.waskiewicz.jr@intel.com \
--cc=stephen@networkplumber.org \
--cc=tushar.n.dave@intel.com \
--cc=vyasevic@redhat.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).