diff options
author | Joe Eykholt <jeykholt@cisco.com> | 2009-07-29 20:04:17 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2009-08-22 18:52:04 -0400 |
commit | f161fb72104c7addac3d404a1ff543b2491c1426 (patch) | |
tree | 8cee890fee11417429fb2cbd69410f04019d51b6 /drivers/scsi/fcoe/fcoe.c | |
parent | 7f74549ff630ad444b0b6bbcabf426f781910906 (diff) |
[SCSI] fcoe: stop delivery of received frames before doing lport_destroy()
To be more sure that no more input arrives at the local port as
it is being destroyed, clean the queues in the per-cpu receive
threads.
Signed-off-by: Joe Eykholt <jeykholt@cisco.com>
Signed-off-by: Robert Love <robert.w.love@intel.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi/fcoe/fcoe.c')
-rw-r--r-- | drivers/scsi/fcoe/fcoe.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c index 81601269f4cd..14a4017a1535 100644 --- a/drivers/scsi/fcoe/fcoe.c +++ b/drivers/scsi/fcoe/fcoe.c | |||
@@ -466,6 +466,9 @@ static int fcoe_if_destroy(struct net_device *netdev) | |||
466 | /* tear-down the FCoE controller */ | 466 | /* tear-down the FCoE controller */ |
467 | fcoe_ctlr_destroy(&fc->ctlr); | 467 | fcoe_ctlr_destroy(&fc->ctlr); |
468 | 468 | ||
469 | /* Free queued packets for the per-CPU receive threads */ | ||
470 | fcoe_percpu_clean(lp); | ||
471 | |||
469 | /* Cleanup the fc_lport */ | 472 | /* Cleanup the fc_lport */ |
470 | fc_lport_destroy(lp); | 473 | fc_lport_destroy(lp); |
471 | fc_fcp_destroy(lp); | 474 | fc_fcp_destroy(lp); |
@@ -478,9 +481,6 @@ static int fcoe_if_destroy(struct net_device *netdev) | |||
478 | if (lp->emp) | 481 | if (lp->emp) |
479 | fc_exch_mgr_free(lp->emp); | 482 | fc_exch_mgr_free(lp->emp); |
480 | 483 | ||
481 | /* Free the per-CPU receive threads */ | ||
482 | fcoe_percpu_clean(lp); | ||
483 | |||
484 | /* Free existing skbs */ | 484 | /* Free existing skbs */ |
485 | fcoe_clean_pending_queue(lp); | 485 | fcoe_clean_pending_queue(lp); |
486 | 486 | ||