On Sat, 2011-03-05 at 01:03 +0000, Greg KH wrote: > 2.6.32-longterm review patch. If anyone has any objections, please let us > know. > > ------------------ > > From: Ian Campbell <[email protected]> > > commit d11327ad6695db8117c78d70611e71102ceec2ac upstream. > > NETDEV_NOTIFY_PEER is an explicit request by the driver to send a link > notification while NETDEV_UP/NETDEV_CHANGEADDR generate link > notifications as a sort of side effect. > > In the later cases the sysctl option is present because link > notification events can have undesired effects e.g. if the link is > flapping. I don't think this applies in the case of an explicit > request from a driver. > > This patch makes NETDEV_NOTIFY_PEER unconditional, if preferred we > could add a new sysctl for this case which defaults to on. > > This change causes Xen post-migration ARP notifications (which cause > switches to relearn their MAC tables etc) to be sent by default. > > Signed-off-by: Ian Campbell <[email protected]> > Signed-off-by: David S. Miller <[email protected]> > [reported to solve hyperv live migration problem - gkh]
I hadn't spotted this second caller of netif_notify_peers under drivers/staging but, yes, I rather suspect it will help hyperv as well as Xen given that 7c161d0b900ea9bd9fc5ea5d3fa9916e9eb0dd88 "staging: hv: Enable sending GARP packet after live migration" is already in the stable and longterm trees. Ian. > Cc: Haiyang Zhang <[email protected]> > Cc: Mike Surcouf <[email protected]> > Cc: Hank Janssen <[email protected]> > Signed-off-by: Greg Kroah-Hartman <[email protected]> > > --- > net/ipv4/devinet.c | 30 ++++++++++++++++++++---------- > 1 file changed, 20 insertions(+), 10 deletions(-) > > --- a/net/ipv4/devinet.c > +++ b/net/ipv4/devinet.c > @@ -1025,6 +1025,21 @@ static inline bool inetdev_valid_mtu(uns > return mtu >= 68; > } > > +static void inetdev_send_gratuitous_arp(struct net_device *dev, > + struct in_device *in_dev) > + > +{ > + struct in_ifaddr *ifa = in_dev->ifa_list; > + > + if (!ifa) > + return; > + > + arp_send(ARPOP_REQUEST, ETH_P_ARP, > + ifa->ifa_address, dev, > + ifa->ifa_address, NULL, > + dev->dev_addr, NULL); > +} > + > /* Called only under RTNL semaphore */ > > static int inetdev_event(struct notifier_block *this, unsigned long event, > @@ -1076,18 +1091,13 @@ static int inetdev_event(struct notifier > } > ip_mc_up(in_dev); > /* fall through */ > - case NETDEV_NOTIFY_PEERS: > case NETDEV_CHANGEADDR: > + if (!IN_DEV_ARP_NOTIFY(in_dev)) > + break; > + /* fall through */ > + case NETDEV_NOTIFY_PEERS: > /* Send gratuitous ARP to notify of link change */ > - if (IN_DEV_ARP_NOTIFY(in_dev)) { > - struct in_ifaddr *ifa = in_dev->ifa_list; > - > - if (ifa) > - arp_send(ARPOP_REQUEST, ETH_P_ARP, > - ifa->ifa_address, dev, > - ifa->ifa_address, NULL, > - dev->dev_addr, NULL); > - } > + inetdev_send_gratuitous_arp(dev, in_dev); > break; > case NETDEV_DOWN: > ip_mc_down(in_dev); > > _______________________________________________ stable mailing list [email protected] http://linux.kernel.org/mailman/listinfo/stable
