const char *fc;
                const struct port_info *pi = netdev_priv(dev);
 
-               netif_carrier_on(dev);
-
                switch (pi->link_cfg.speed) {
                case 100:
                        s = "100Mbps";
 
                netdev_info(dev, "link up, %s, full-duplex, %s PAUSE\n", s, fc);
        } else {
-               netif_carrier_off(dev);
                netdev_info(dev, "link down\n");
        }
 }
         */
        if (ret == 0)
                ret = t4vf_enable_vi(pi->adapter, pi->viid, true, true);
+
+       /* The Virtual Interfaces are connected to an internal switch on the
+        * chip which allows VIs attached to the same port to talk to each
+        * other even when the port link is down.  As a result, we generally
+        * want to always report a VI's link as being "up", provided there are
+        * no errors in enabling vi.
+        */
+
+       if (ret == 0)
+               netif_carrier_on(dev);
+
        return ret;
 }