Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752166Ab1CEJgz (ORCPT ); Sat, 5 Mar 2011 04:36:55 -0500 Received: from smtp.citrix.com ([66.165.176.89]:27735 "EHLO SMTP.CITRIX.COM" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751140Ab1CEJgw (ORCPT ); Sat, 5 Mar 2011 04:36:52 -0500 X-IronPort-AV: E=Sophos;i="4.62,268,1297054800"; d="scan'208";a="12979637" Subject: Re: [17/18] arp_notify: unconditionally send gratuitous ARP for NETDEV_NOTIFY_PEERS. From: Ian Campbell To: Greg KH CC: "linux-kernel@vger.kernel.org" , "stable@kernel.org" , "stable-review@kernel.org" , "torvalds@linux-foundation.org" , "akpm@linux-foundation.org" , "alan@lxorguk.ukuu.org.uk" , "David S. Miller" , Haiyang Zhang , Mike Surcouf , Hank Janssen In-Reply-To: <20110305010353.482533027@clark.kroah.org> References: <20110305010353.482533027@clark.kroah.org> Content-Type: text/plain; charset="ISO-8859-1" Organization: Citrix Systems, Inc. Date: Sat, 5 Mar 2011 09:36:49 +0000 Message-ID: <1299317809.13328.42.camel@localhost.localdomain> MIME-Version: 1.0 X-Mailer: Evolution 2.32.2 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3289 Lines: 102 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 > > 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 > Signed-off-by: David S. Miller > [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 > Cc: Mike Surcouf > Cc: Hank Janssen > Signed-off-by: Greg Kroah-Hartman > > --- > 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); > > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/