Index: /trunk/src/VBox/HostDrivers/VBoxNetAdp/linux/VBoxNetAdp-linux.c
===================================================================
--- /trunk/src/VBox/HostDrivers/VBoxNetAdp/linux/VBoxNetAdp-linux.c	(revision 58206)
+++ /trunk/src/VBox/HostDrivers/VBoxNetAdp/linux/VBoxNetAdp-linux.c	(revision 58207)
@@ -200,4 +200,17 @@
             memcpy(pNetDev->dev_addr, pMACAddress, ETH_ALEN);
             Log2(("vboxNetAdpOsCreate: pNetDev->dev_addr = %.6Rhxd\n", pNetDev->dev_addr));
+
+            /*
+             * To get proper operstate transition to IF_OPER_UP we
+             * need to call netif_carrier_on(), which triggers netlink
+             * notifications that do the work.  But first we need to
+             * turn it off here, otherwise that call will do nothing
+             * and we will be stuck in IF_OPER_UNKNOWN.
+             *
+             * Do this before registration so that only the state bit
+             * is set, but no state change notifications are generated.
+             */
+            netif_carrier_off(pNetDev);
+
             err = register_netdev(pNetDev);
             if (!err)
@@ -206,4 +219,11 @@
                 pThis->szName[sizeof(pThis->szName) - 1] = '\0';
                 pThis->u.s.pNetDev = pNetDev;
+
+                /*
+                 * TODO: We might want to set carrier only when
+                 * VBoxNetFlt attaches the intnet to us.
+                 */
+                netif_carrier_on(pNetDev);
+
                 Log2(("vboxNetAdpOsCreate: pThis=%p pThis->szName = %p\n", pThis, pThis->szName));
                 return VINF_SUCCESS;
