[SCSI] qla4xxx: Fixed request queue count manipulation on response path
authorTej Parkash <tej.parkash@qlogic.com>
Thu, 7 Mar 2013 10:43:13 +0000 (05:43 -0500)
committerJames Bottomley <JBottomley@Parallels.com>
Wed, 10 Apr 2013 18:49:34 +0000 (11:49 -0700)
commita24058f9c2368568aed14593b8a63706408547da
treeecd9fcb537f353aa6eaa3938592dd42b73f40d2c
parent33338e31839fe45fa794bcc227d292dd7fab786c
[SCSI] qla4xxx: Fixed request queue count manipulation on response path

Issue:
Request queue count holds the information about free space in request queue
which has to be manipulated based on request in and out pointer.
But in driver response path, this count was incremented unconditionally,
which could move req_in pointer beyond req_out pointer.
This scenario leads fw hang during IO.

Solution:
Request queue count manipulation has to be done in IO path only, keeping
req_in and req_out pointer two IOCB count away

Signed-off-by: Tej Parkash <tej.parkash@qlogic.com>
Signed-off-by: Shyam Sundar <shyam.sundar@qlogic.com>
Signed-off-by: Vikas Chaudhary <vikas.chaudhary@qlogic.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/qla4xxx/ql4_glbl.h
drivers/scsi/qla4xxx/ql4_isr.c
drivers/scsi/qla4xxx/ql4_os.c