diff options
Diffstat (limited to 'drivers/scsi/libfc/fc_lport.c')
-rw-r--r-- | drivers/scsi/libfc/fc_lport.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/scsi/libfc/fc_lport.c b/drivers/scsi/libfc/fc_lport.c index e55ed9cf23f..628f347404f 100644 --- a/drivers/scsi/libfc/fc_lport.c +++ b/drivers/scsi/libfc/fc_lport.c | |||
@@ -88,6 +88,7 @@ | |||
88 | */ | 88 | */ |
89 | 89 | ||
90 | #include <linux/timer.h> | 90 | #include <linux/timer.h> |
91 | #include <linux/delay.h> | ||
91 | #include <linux/slab.h> | 92 | #include <linux/slab.h> |
92 | #include <asm/unaligned.h> | 93 | #include <asm/unaligned.h> |
93 | 94 | ||
@@ -1029,8 +1030,16 @@ static void fc_lport_enter_reset(struct fc_lport *lport) | |||
1029 | FCH_EVT_LIPRESET, 0); | 1030 | FCH_EVT_LIPRESET, 0); |
1030 | fc_vports_linkchange(lport); | 1031 | fc_vports_linkchange(lport); |
1031 | fc_lport_reset_locked(lport); | 1032 | fc_lport_reset_locked(lport); |
1032 | if (lport->link_up) | 1033 | if (lport->link_up) { |
1034 | /* | ||
1035 | * Wait upto resource allocation time out before | ||
1036 | * doing re-login since incomplete FIP exchanged | ||
1037 | * from last session may collide with exchanges | ||
1038 | * in new session. | ||
1039 | */ | ||
1040 | msleep(lport->r_a_tov); | ||
1033 | fc_lport_enter_flogi(lport); | 1041 | fc_lport_enter_flogi(lport); |
1042 | } | ||
1034 | } | 1043 | } |
1035 | 1044 | ||
1036 | /** | 1045 | /** |