Hi Ian/Greg

I just tested your patch with a custom kernel Greg compiled for me and it works 
for hyperv too as one would expect.
I can now see that a GARP is sent (using wireshark) and that my switch tables 
are updating.  

Many thanks for your work on this and Thanks to Greg for his help.

Regards

Mike

________________________________________
From: Ian Campbell [[email protected]]
Sent: 05 March 2011 09:36
To: Greg KH
Cc: [email protected]; [email protected]; [email protected]; 
[email protected]; [email protected]; 
[email protected]; David S. Miller; Haiyang Zhang; Mike Surcouf; Hank 
Janssen
Subject: Re: [17/18] arp_notify: unconditionally send gratuitous ARP for 
NETDEV_NOTIFY_PEERS.

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);
>
>

----------------------------------------------------------------------
A E Surcouf and Sons Ltd. - Privacy, Security and Confidentiality Notice

This e-mail and any attachments may contain confidential and privileged
information. If you have received this e-mail in error please notify us
immediately and delete it from your system. You must not copy, distribute,
disclose or otherwise use any part of it. This email has been scanned
by current virus software, however it is the responsibility of the 
recipient to ensure that this e-mail is virus free and no responsibility
is accepted by A E Surcouf and Sons Ltd. for any loss or damage arising in
any way from receipt or use of it. Unencrypted electronic mail is not 
secure and may not be authentic.
-----------------------------------------------------------------------

 



_______________________________________________
stable mailing list
[email protected]
http://linux.kernel.org/mailman/listinfo/stable

Reply via email to