[SCSI] bnx2fc: Need not schedule destroy_work from __bnx2fc_destroy
Since it is already called in the right context with rtnl_lock and dev_mutex
held.
Signed-off-by: Bhanu Prakash Gollapudi <bprakash@broadcom.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
diff --git a/drivers/scsi/bnx2fc/bnx2fc_fcoe.c b/drivers/scsi/bnx2fc/bnx2fc_fcoe.c
index e6c9879..24e7071 100644
--- a/drivers/scsi/bnx2fc/bnx2fc_fcoe.c
+++ b/drivers/scsi/bnx2fc/bnx2fc_fcoe.c
@@ -56,7 +56,7 @@
static struct fc_function_template bnx2fc_transport_function;
static struct fc_function_template bnx2fc_vport_xport_function;
static int bnx2fc_create(struct net_device *netdev, enum fip_state fip_mode);
-static void __bnx2fc_destroy(struct bnx2fc_interface *interface, bool schedule);
+static void __bnx2fc_destroy(struct bnx2fc_interface *interface);
static int bnx2fc_destroy(struct net_device *net_device);
static int bnx2fc_enable(struct net_device *netdev);
static int bnx2fc_disable(struct net_device *netdev);
@@ -840,7 +840,7 @@
list_for_each_entry_safe(interface, tmp, &if_list, list) {
if (interface->hba != hba)
continue;
- __bnx2fc_destroy(interface, true);
+ __bnx2fc_destroy(interface);
}
mutex_unlock(&bnx2fc_dev_lock);
return;
@@ -1479,21 +1479,16 @@
scsi_host_put(lport->host);
}
-static void __bnx2fc_destroy(struct bnx2fc_interface *interface, bool schedule)
+static void __bnx2fc_destroy(struct bnx2fc_interface *interface)
{
struct fc_lport *lport = interface->ctlr.lp;
- struct fcoe_port *port = lport_priv(lport);
bnx2fc_interface_cleanup(interface);
bnx2fc_stop(interface);
-
list_del(&interface->list);
lport = interface->ctlr.lp;
bnx2fc_interface_put(interface);
- if (schedule)
- queue_work(bnx2fc_wq, &port->destroy_work);
- else
- bnx2fc_if_destroy(lport);
+ bnx2fc_if_destroy(lport);
}
/**
@@ -1523,7 +1518,7 @@
destroy_workqueue(interface->timer_work_queue);
- __bnx2fc_destroy(interface, false);
+ __bnx2fc_destroy(interface);
netdev_err:
mutex_unlock(&bnx2fc_dev_lock);
@@ -2110,7 +2105,7 @@
list_for_each_entry_safe(interface, tmp, &if_list, list)
/* destroy not called yet, move to quiesced list */
if (interface->hba == hba)
- __bnx2fc_destroy(interface, false);
+ __bnx2fc_destroy(interface);
mutex_unlock(&bnx2fc_dev_lock);
bnx2fc_ulp_stop(hba);