linux/drivers/scsi/fnic
Hiral Patel 03298552cb [SCSI] fnic: fixing issues in device and firmware reset code
1. Handling overlapped firmware resets
     This fix serialize multiple firmware resets to avoid situation where fnic
     device fails to come up for link up event, when firmware resets are issued
     back to back. If there are overlapped firmware resets are issued,
     the firmware reset operation checks whether there is any firmware reset in
     progress, if so it polls for its completion in a loop with 100ms delay.

2. Handling device reset timeout
     fnic_device_reset code has been modified to handle Device reset timeout:
     - Issue terminate on device reset timeout.
     - Introduced flags field (one of the scratch fields in scsi_cmnd).
     With this, device reset request would have DEVICE_RESET flag set for other
     routines to determine the type of the request.
     Also modified fnic_terminate_rport_io, fnic_rport_exch_rset, completion
     routines to handle SCSI commands with DEVICE_RESET flag.

3. LUN/Device Reset hangs when issued through IOCTL using utilities like
   sg_reset.
     Each SCSI command is associated with a valid tag, fnic uses this tag to
     retrieve associated scsi command on completion. the LUN/Device Reset issued
     through IOCTL resulting into a SCSI command that is not associated with a
     valid tag. So fnic fails to retrieve associated scsi command on completion,
     which causes hang. This fix allocates tag, associates it with the
     scsi command and frees the tag, when the operation completed.

4. Preventing IOs during firmware reset.
     Current fnic implementation allows IO submissions during firmware reset.
     This fix synchronizes IO submissions and firmware reset operations.
     It ensures that IOs issued to fnic prior to reset will be issued to the
     firmware before firmware reset.

Signed-off-by: Narsimhulu Musini <nmusini@cisco.com>
Signed-off-by: Hiral Patel <hiralpat@cisco.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
2013-02-22 17:28:19 +00:00
..
cq_desc.h
cq_enet_desc.h
cq_exch_desc.h
fcpio.h
fnic.h [SCSI] fnic: fixing issues in device and firmware reset code 2013-02-22 17:28:19 +00:00
fnic_attrs.c
fnic_fcs.c [SCSI] fnic: fix for trusted cos 2013-01-29 14:00:04 +11:00
fnic_io.h
fnic_isr.c [SCSI] fnic: Process all cq entries per ISR 2009-12-04 12:00:35 -06:00
fnic_main.c [SCSI] fnic: fixing issues in device and firmware reset code 2013-02-22 17:28:19 +00:00
fnic_res.c [SCSI] fnic: Add FIP support to the fnic driver 2009-12-04 12:01:19 -06:00
fnic_res.h [SCSI] fnic: Add FIP support to the fnic driver 2009-12-04 12:01:19 -06:00
fnic_scsi.c [SCSI] fnic: fixing issues in device and firmware reset code 2013-02-22 17:28:19 +00:00
Makefile
rq_enet_desc.h
vnic_cq.c
vnic_cq.h
vnic_cq_copy.h
vnic_dev.c [SCSI] fnic: fix memory leak 2011-02-12 10:58:02 -06:00
vnic_dev.h
vnic_devcmd.h [SCSI] fnic: Allow multicast and unicast address registrations for fnic 2010-02-17 17:43:49 -06:00
vnic_intr.c
vnic_intr.h
vnic_nic.h
vnic_resource.h
vnic_rq.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
vnic_rq.h
vnic_scsi.h [SCSI] fnic: Add FIP support to the fnic driver 2009-12-04 12:01:19 -06:00
vnic_stats.h
vnic_wq.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
vnic_wq.h
vnic_wq_copy.c
vnic_wq_copy.h
wq_enet_desc.h