svn commit: r282908 - head/sys/dev/xen/netfront

Roger Pau Monné royger at FreeBSD.org
Thu May 14 16:29:12 UTC 2015


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


More information about the svn-src-all mailing list