net: dcbnl, add multicast group for DCB
authorJohn Fastabend <john.r.fastabend@intel.com>
Tue, 21 Jun 2011 07:34:37 +0000 (07:34 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 21 Jun 2011 23:06:11 +0000 (16:06 -0700)
commit314b4778ed579f29b6d46ba90dbf31314c13805f
tree116b9424343f8261cacfa055e43455b588ce2893
parentc7797baf9f3900996ca800ab6298f95957bb4606
net: dcbnl, add multicast group for DCB

Now that dcbnl is being used in many cases by more
than a single agent it is beneficial to be notified
when some entity either driver or user space has
changed the DCB attributes.

Today applications either end up polling the interface
or relying on a user space database to maintain the DCB
state and post events. Polling is a poor solution for
obvious reasons. And relying on a user space database
has its own downside. Namely it has created strange
boot dependencies requiring the database be populated
before any applications dependent on DCB attributes
starts or the application goes into a polling loop.
Populating the database requires negotiating link
setting with the peer and can take anywhere from less
than a second up to a few seconds depending on the switch
implementation.

Perhaps more importantly if another application or an
embedded agent sets a DCB link attribute the database
has no way of knowing other than polling the kernel.
This prevents applications from responding quickly to
changes in link events which at least in the FCoE case
and probably any other protocols expecting a lossless
link may result in IO errors.

By adding a multicast group for DCB we have clean way
to disseminate kernel DCB link attributes up to user
space. Avoiding the need for user space to maintain
a coherant database and disperse events that potentially
do not reflect the current link state.

Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/rtnetlink.h
include/net/dcbnl.h
net/dcb/dcbnl.c