{
        struct fcoe_port *port;
        struct fcoe_interface *fcoe;
-       int npiv = 0;
 
        port = container_of(work, struct fcoe_port, destroy_work);
        mutex_lock(&fcoe_config_mutex);
 
-       /* set if this is an NPIV port */
-       npiv = port->lport->vport ? 1 : 0;
-
        fcoe = port->priv;
        fcoe_if_destroy(port->lport);
 
-       /* Do not tear down the fcoe interface for NPIV port */
-       if (!npiv)
-               fcoe_interface_cleanup(fcoe);
+       fcoe_interface_cleanup(fcoe);
 
        mutex_unlock(&fcoe_config_mutex);
 }
        struct Scsi_Host *shost = vport_to_shost(vport);
        struct fc_lport *n_port = shost_priv(shost);
        struct fc_lport *vn_port = vport->dd_data;
-       struct fcoe_port *port = lport_priv(vn_port);
 
        mutex_lock(&n_port->lp_mutex);
        list_del(&vn_port->list);
        mutex_unlock(&n_port->lp_mutex);
-       queue_work(fcoe_wq, &port->destroy_work);
+
+       mutex_lock(&fcoe_config_mutex);
+       fcoe_if_destroy(vn_port);
+       mutex_unlock(&fcoe_config_mutex);
+
        return 0;
 }