if (!adapter)
                return;
 
-       /*
-        * Disable all Virtual Interfaces.  This will shut down the
+       /* Disable all Virtual Interfaces.  This will shut down the
         * delivery of all ingress packets into the chip for these
         * Virtual Interfaces.
         */
-       for_each_port(adapter, pidx) {
-               struct net_device *netdev;
-               struct port_info *pi;
-
-               if (!test_bit(pidx, &adapter->registered_device_map))
-                       continue;
-
-               netdev = adapter->port[pidx];
-               if (!netdev)
-                       continue;
+       for_each_port(adapter, pidx)
+               if (test_bit(pidx, &adapter->registered_device_map))
+                       unregister_netdev(adapter->port[pidx]);
 
-               pi = netdev_priv(netdev);
-               t4vf_enable_vi(adapter, pi->viid, false, false);
+       /* Free up all Queues which will prevent further DMA and
+        * Interrupts allowing various internal pathways to drain.
+        */
+       t4vf_sge_stop(adapter);
+       if (adapter->flags & USING_MSIX) {
+               pci_disable_msix(adapter->pdev);
+               adapter->flags &= ~USING_MSIX;
+       } else if (adapter->flags & USING_MSI) {
+               pci_disable_msi(adapter->pdev);
+               adapter->flags &= ~USING_MSI;
        }
 
        /*
         * Interrupts allowing various internal pathways to drain.
         */
        t4vf_free_sge_resources(adapter);
+       pci_set_drvdata(pdev, NULL);
 }
 
 /*