"Firmware timed out" with qlogic 2312 FC cards

Leo Prasath Arulraj leo at nec-labs.com
Tue Jul 13 20:07:32 UTC 2010


I am running  scsi target mode disk emulation code on a QLogic 2312 FC 
card. My OS version is : 9.0-CURRENT FreeBSD . This FreeBSD machine acts 
as the target while a separate Linux machine acts as the initiator 
accessing the FreeBSD machine as target.

I am seeing "Firmware timed out" errors on the FreeBSD side :


isp0: isp_action code 933
(targ0:isp0:0:0:0): isp_target_start_ctio: CTIO2[207c] flags 40 xfrlen 0 
offset 4096
isp0: RISC2HOST ISR 0x2f08013
isp0: Firmware timed out on command
isp0: data CTIO complete
isp0: isp_handle_platform_ctio: CTIO2[2034] sts 0xb flg 0x840 sns 0 
resid 0 MID
isp0: MIDTERM  CTIO[0x2034] done


And I see UNDERRUN errors on the Linux side :

[ 1661.998946] sd 0:0:0:0: [sdb] Unhandled error code
[ 1661.998955] sd 0:0:0:0: [sdb] Result: hostbyte=DID_OK 
driverbyte=DRIVER_TIMEOUT
[ 1661.998973] sd 0:0:0:0: [sdb] CDB: Read(10): 28 00 00 00 00 00 00 00 
08 00
[ 1661.999024] end_request: I/O error, dev sdb, sector 0
[ 1662.219095] comp_status 21 scsi_status 0
[ 1662.219118] scsi(0:0:0) UNDERRUN status detected 0x15-0x0. resid=0xda 
fw_resid=0x0 cdb=0x12 os_underflow=0x0
[ 1662.219137] scsi(0:0:0:0) Dropped frame(s) detected (da of fe 
bytes)...firmware reported underrun...retrying command.


I changed the ct_timeout field of a CTIO in the isp_freebsd.c file to 
120 from 10:

isp_freebsd.c:1624:        cto->ct_timeout = 120; // was 10
isp_freebsd.c:1658:        cto->ct_timeout = 120 ; // was 10

Is there someway I can fix this ? Or should I handle it the userspace 
program by retrying commands. I suspect something goes wrong with the 
firmware because , after this error happens, subsequents requests also fail.

Should I update the firmware assembly file isp_2300.h ? Where should I 
get the assembly version of the firmware from ?

Any help is appreciated.

Thanks,
Leo.






More information about the freebsd-scsi mailing list