arcmsr(4): Fix SCSI command timeout on ARC-1886.
Many thanks to Areca for continuing to support FreeBSD. Submitted by: 黃清隆 <ching2048 areca com tw> MFC after: 2 weeks
This commit is contained in:
parent
33cb3cb2e3
commit
438b553207
@ -83,6 +83,8 @@
|
||||
** 1.40.00.01 10/30/2017 Ching Huang Fixed release memory resource
|
||||
** 1.50.00.00 09/30/2020 Ching Huang Added support ARC-1886, NVMe/SAS/SATA controller
|
||||
** 1.50.00.01 02/26/2021 Ching Huang Fixed no action of hot plugging device on type_F adapter
|
||||
** 1.50.00.02 04/16/2021 Ching Huang Fixed scsi command timeout on ARC-1886 when
|
||||
** scatter-gather count large than some number
|
||||
******************************************************************************************
|
||||
*/
|
||||
|
||||
@ -140,7 +142,7 @@ __FBSDID("$FreeBSD$");
|
||||
|
||||
#define arcmsr_callout_init(a) callout_init(a, /*mpsafe*/1);
|
||||
|
||||
#define ARCMSR_DRIVER_VERSION "arcmsr version 1.50.00.01 2021-02-26"
|
||||
#define ARCMSR_DRIVER_VERSION "arcmsr version 1.50.00.02 2021-04-16"
|
||||
#include <dev/arcmsr/arcmsr.h>
|
||||
/*
|
||||
**************************************************************************
|
||||
@ -1183,8 +1185,12 @@ static void arcmsr_post_srb(struct AdapterControlBlock *acb, struct CommandContr
|
||||
|
||||
if (srb->arc_cdb_size <= 0x300)
|
||||
arc_cdb_size = (srb->arc_cdb_size - 1) >> 6 | 1;
|
||||
else
|
||||
arc_cdb_size = (((srb->arc_cdb_size + 0xff) >> 8) + 2) << 1 | 1;
|
||||
else {
|
||||
arc_cdb_size = ((srb->arc_cdb_size + 0xff) >> 8) + 2;
|
||||
if (arc_cdb_size > 0xF)
|
||||
arc_cdb_size = 0xF;
|
||||
arc_cdb_size = (arc_cdb_size << 1) | 1;
|
||||
}
|
||||
ccb_post_stamp = (srb->smid | arc_cdb_size);
|
||||
CHIP_REG_WRITE32(HBF_MessageUnit, 0, inbound_queueport_high, 0);
|
||||
CHIP_REG_WRITE32(HBF_MessageUnit, 0, inbound_queueport_low, ccb_post_stamp);
|
||||
|
Loading…
Reference in New Issue
Block a user