dev: support deferring device flag change notifications
authorPatrick McHardy <kaber@trash.net>
Fri, 26 Feb 2010 06:34:53 +0000 (06:34 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sat, 27 Feb 2010 10:43:40 +0000 (02:43 -0800)
commitbd38081160bb3d036db98472e537b6a7dd4da51a
tree26af1cae5e2dda3269da6f812586e93954582d54
parenta2835763e130c343ace5320c20d33c281e7097b7
dev: support deferring device flag change notifications

Split dev_change_flags() into two functions: __dev_change_flags() to
perform the actual changes and __dev_notify_flags() to invoke netdevice
notifiers. This will be used by rtnl_link to defer netlink notifications
until the device has been fully configured.

This changes ordering of some operations, in particular:

- netlink notifications are sent after all changes have been performed.
  As a side effect this surpresses one unnecessary netlink message when
  the IFF_UP and other flags are changed simultaneously.

- The NETDEV_UP/NETDEV_DOWN and NETDEV_CHANGE notifiers are invoked
  after all changes have been performed. Their relative is unchanged.

- net_dmaengine_put() is invoked before the NETDEV_DOWN notifier instead
  of afterwards. This should not make any difference since both RX and TX
  are already shut down at this point.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/netdevice.h
net/core/dev.c
net/core/rtnetlink.c