Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 14 May 2015 16:29:12 +0000 (UTC)
From:      Roger Pau Monné <royger@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r282908 - head/sys/dev/xen/netfront
Message-ID:  <201505141629.t4EGTCKx014407@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: royger
Date: Thu May 14 16:29:11 2015
New Revision: 282908
URL: https://svnweb.freebsd.org/changeset/base/282908

Log:
  netfront: wait for backend to connect before sending ARP
  
  Netfront has to wait for the backend to switch to state XenbusStateConnected
  before sending the ARP request, or else the backend might not be connected
  and thus the packet will be lost.
  
  Sponsored by: Citrix Systems R&D
  MFC after: 1 week

Modified:
  head/sys/dev/xen/netfront/netfront.c

Modified: head/sys/dev/xen/netfront/netfront.c
==============================================================================
--- head/sys/dev/xen/netfront/netfront.c	Thu May 14 15:49:48 2015	(r282907)
+++ head/sys/dev/xen/netfront/netfront.c	Thu May 14 16:29:11 2015	(r282908)
@@ -682,7 +682,6 @@ netfront_backend_changed(device_t dev, X
 	switch (newstate) {
 	case XenbusStateInitialising:
 	case XenbusStateInitialised:
-	case XenbusStateConnected:
 	case XenbusStateUnknown:
 	case XenbusStateClosed:
 	case XenbusStateReconfigured:
@@ -694,13 +693,15 @@ netfront_backend_changed(device_t dev, X
 		if (network_connect(sc) != 0)
 			break;
 		xenbus_set_state(dev, XenbusStateConnected);
-#ifdef INET
-		netfront_send_fake_arp(dev, sc);
-#endif
 		break;
 	case XenbusStateClosing:
 		xenbus_set_state(dev, XenbusStateClosed);
 		break;
+	case XenbusStateConnected:
+#ifdef INET
+		netfront_send_fake_arp(dev, sc);
+#endif
+		break;
 	}
 }
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201505141629.t4EGTCKx014407>