Use a variable to indicate Gen3 controllers and remove all PCI ids based
checks used for gen3 controllers. Submitted by: Sumit Saxena <sumit.saxena@broadcom.com> Reviewed by: Kashyap Desai <Kashyap.Desai@broadcom.com> MFC after: 3 days Sponsored by: Broadcom Limited/AVAGO Technologies
This commit is contained in:
parent
731b75614d
commit
f9c630813e
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=309285
@ -832,6 +832,15 @@ mrsas_attach(device_t dev)
|
||||
sc->mrsas_dev = dev;
|
||||
sc->device_id = pci_get_device(dev);
|
||||
|
||||
if ((sc->device_id == MRSAS_INVADER) ||
|
||||
(sc->device_id == MRSAS_FURY) ||
|
||||
(sc->device_id == MRSAS_INTRUDER) ||
|
||||
(sc->device_id == MRSAS_INTRUDER_24) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_52) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_53)) {
|
||||
sc->mrsas_gen3_ctrl = 1;
|
||||
}
|
||||
|
||||
mrsas_get_tunables(sc);
|
||||
|
||||
/*
|
||||
@ -1632,12 +1641,7 @@ mrsas_complete_cmd(struct mrsas_softc *sc, u_int32_t MSIxIndex)
|
||||
*/
|
||||
if (threshold_reply_count >= THRESHOLD_REPLY_COUNT) {
|
||||
if (sc->msix_enable) {
|
||||
if ((sc->device_id == MRSAS_INVADER) ||
|
||||
(sc->device_id == MRSAS_FURY) ||
|
||||
(sc->device_id == MRSAS_INTRUDER) ||
|
||||
(sc->device_id == MRSAS_INTRUDER_24) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_52) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_53))
|
||||
if (sc->mrsas_gen3_ctrl)
|
||||
mrsas_write_reg(sc, sc->msix_reg_offset[MSIxIndex / 8],
|
||||
((MSIxIndex & 0x7) << 24) |
|
||||
sc->last_reply_idx[MSIxIndex]);
|
||||
@ -1658,12 +1662,7 @@ mrsas_complete_cmd(struct mrsas_softc *sc, u_int32_t MSIxIndex)
|
||||
|
||||
/* Clear response interrupt */
|
||||
if (sc->msix_enable) {
|
||||
if ((sc->device_id == MRSAS_INVADER) ||
|
||||
(sc->device_id == MRSAS_FURY) ||
|
||||
(sc->device_id == MRSAS_INTRUDER) ||
|
||||
(sc->device_id == MRSAS_INTRUDER_24) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_52) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_53)) {
|
||||
if (sc->mrsas_gen3_ctrl) {
|
||||
mrsas_write_reg(sc, sc->msix_reg_offset[MSIxIndex / 8],
|
||||
((MSIxIndex & 0x7) << 24) |
|
||||
sc->last_reply_idx[MSIxIndex]);
|
||||
@ -2461,12 +2460,7 @@ mrsas_ioc_init(struct mrsas_softc *sc)
|
||||
init_frame->flags |= MFI_FRAME_DONT_POST_IN_REPLY_QUEUE;
|
||||
|
||||
/* driver support Extended MSIX */
|
||||
if ((sc->device_id == MRSAS_INVADER) ||
|
||||
(sc->device_id == MRSAS_FURY) ||
|
||||
(sc->device_id == MRSAS_INTRUDER) ||
|
||||
(sc->device_id == MRSAS_INTRUDER_24) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_52) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_53)) {
|
||||
if (sc->mrsas_gen3_ctrl) {
|
||||
init_frame->driver_operations.
|
||||
mfi_capabilities.support_additional_msix = 1;
|
||||
}
|
||||
@ -3512,12 +3506,7 @@ mrsas_build_mptmfi_passthru(struct mrsas_softc *sc, struct mrsas_mfi_cmd *mfi_cm
|
||||
|
||||
io_req = mpt_cmd->io_request;
|
||||
|
||||
if ((sc->device_id == MRSAS_INVADER) ||
|
||||
(sc->device_id == MRSAS_FURY) ||
|
||||
(sc->device_id == MRSAS_INTRUDER) ||
|
||||
(sc->device_id == MRSAS_INTRUDER_24) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_52) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_53)) {
|
||||
if (sc->mrsas_gen3_ctrl) {
|
||||
pMpi25IeeeSgeChain64_t sgl_ptr_end = (pMpi25IeeeSgeChain64_t)&io_req->SGL;
|
||||
|
||||
sgl_ptr_end += sc->max_sge_in_main_msg - 1;
|
||||
|
@ -2795,6 +2795,7 @@ struct mrsas_softc {
|
||||
LD_LOAD_BALANCE_INFO load_balance_info[MAX_LOGICAL_DRIVES_EXT];
|
||||
LD_SPAN_INFO log_to_span[MAX_LOGICAL_DRIVES_EXT];
|
||||
|
||||
u_int8_t mrsas_gen3_ctrl;
|
||||
u_int8_t secure_jbod_support;
|
||||
u_int8_t use_seqnum_jbod_fp;
|
||||
u_int8_t max256vdSupport;
|
||||
|
@ -877,12 +877,7 @@ mrsas_setup_io(struct mrsas_softc *sc, struct mrsas_mpt_cmd *cmd,
|
||||
cmd->request_desc->SCSIIO.RequestFlags =
|
||||
(MPI2_REQ_DESCRIPT_FLAGS_HIGH_PRIORITY <<
|
||||
MRSAS_REQ_DESCRIPT_FLAGS_TYPE_SHIFT);
|
||||
if ((sc->device_id == MRSAS_INVADER) ||
|
||||
(sc->device_id == MRSAS_FURY) ||
|
||||
(sc->device_id == MRSAS_INTRUDER) ||
|
||||
(sc->device_id == MRSAS_INTRUDER_24) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_52) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_53)) {
|
||||
if (sc->mrsas_gen3_ctrl) {
|
||||
if (io_request->RaidContext.regLockFlags == REGION_TYPE_UNUSED)
|
||||
cmd->request_desc->SCSIIO.RequestFlags =
|
||||
(MRSAS_REQ_DESCRIPT_FLAGS_NO_LOCK <<
|
||||
@ -911,12 +906,7 @@ mrsas_setup_io(struct mrsas_softc *sc, struct mrsas_mpt_cmd *cmd,
|
||||
cmd->request_desc->SCSIIO.RequestFlags =
|
||||
(MRSAS_REQ_DESCRIPT_FLAGS_LD_IO <<
|
||||
MRSAS_REQ_DESCRIPT_FLAGS_TYPE_SHIFT);
|
||||
if ((sc->device_id == MRSAS_INVADER) ||
|
||||
(sc->device_id == MRSAS_FURY) ||
|
||||
(sc->device_id == MRSAS_INTRUDER) ||
|
||||
(sc->device_id == MRSAS_INTRUDER_24) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_52) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_53)) {
|
||||
if (sc->mrsas_gen3_ctrl) {
|
||||
if (io_request->RaidContext.regLockFlags == REGION_TYPE_UNUSED)
|
||||
cmd->request_desc->SCSIIO.RequestFlags =
|
||||
(MRSAS_REQ_DESCRIPT_FLAGS_NO_LOCK <<
|
||||
@ -1192,12 +1182,7 @@ mrsas_data_load_cb(void *arg, bus_dma_segment_t *segs, int nseg, int error)
|
||||
io_request = cmd->io_request;
|
||||
sgl_ptr = (pMpi25IeeeSgeChain64_t)&io_request->SGL;
|
||||
|
||||
if ((sc->device_id == MRSAS_INVADER) ||
|
||||
(sc->device_id == MRSAS_FURY) ||
|
||||
(sc->device_id == MRSAS_INTRUDER) ||
|
||||
(sc->device_id == MRSAS_INTRUDER_24) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_52) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_53)) {
|
||||
if (sc->mrsas_gen3_ctrl) {
|
||||
pMpi25IeeeSgeChain64_t sgl_ptr_end = sgl_ptr;
|
||||
|
||||
sgl_ptr_end += sc->max_sge_in_main_msg - 1;
|
||||
@ -1208,12 +1193,7 @@ mrsas_data_load_cb(void *arg, bus_dma_segment_t *segs, int nseg, int error)
|
||||
sgl_ptr->Address = segs[i].ds_addr;
|
||||
sgl_ptr->Length = segs[i].ds_len;
|
||||
sgl_ptr->Flags = 0;
|
||||
if ((sc->device_id == MRSAS_INVADER) ||
|
||||
(sc->device_id == MRSAS_FURY) ||
|
||||
(sc->device_id == MRSAS_INTRUDER) ||
|
||||
(sc->device_id == MRSAS_INTRUDER_24) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_52) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_53)) {
|
||||
if (sc->mrsas_gen3_ctrl) {
|
||||
if (i == nseg - 1)
|
||||
sgl_ptr->Flags = IEEE_SGE_FLAGS_END_OF_LIST;
|
||||
}
|
||||
@ -1223,12 +1203,7 @@ mrsas_data_load_cb(void *arg, bus_dma_segment_t *segs, int nseg, int error)
|
||||
(nseg > sc->max_sge_in_main_msg)) {
|
||||
pMpi25IeeeSgeChain64_t sg_chain;
|
||||
|
||||
if ((sc->device_id == MRSAS_INVADER) ||
|
||||
(sc->device_id == MRSAS_FURY) ||
|
||||
(sc->device_id == MRSAS_INTRUDER) ||
|
||||
(sc->device_id == MRSAS_INTRUDER_24) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_52) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_53)) {
|
||||
if (sc->mrsas_gen3_ctrl) {
|
||||
if ((cmd->io_request->IoFlags & MPI25_SAS_DEVICE0_FLAGS_ENABLED_FAST_PATH)
|
||||
!= MPI25_SAS_DEVICE0_FLAGS_ENABLED_FAST_PATH)
|
||||
cmd->io_request->ChainOffset = sc->chain_offset_io_request;
|
||||
@ -1237,12 +1212,7 @@ mrsas_data_load_cb(void *arg, bus_dma_segment_t *segs, int nseg, int error)
|
||||
} else
|
||||
cmd->io_request->ChainOffset = sc->chain_offset_io_request;
|
||||
sg_chain = sgl_ptr;
|
||||
if ((sc->device_id == MRSAS_INVADER) ||
|
||||
(sc->device_id == MRSAS_FURY) ||
|
||||
(sc->device_id == MRSAS_INTRUDER) ||
|
||||
(sc->device_id == MRSAS_INTRUDER_24) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_52) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_53))
|
||||
if (sc->mrsas_gen3_ctrl)
|
||||
sg_chain->Flags = IEEE_SGE_FLAGS_CHAIN_ELEMENT;
|
||||
else
|
||||
sg_chain->Flags = (IEEE_SGE_FLAGS_CHAIN_ELEMENT | MPI2_IEEE_SGE_FLAGS_IOCPLBNTA_ADDR);
|
||||
|
@ -747,15 +747,6 @@ mr_spanset_get_phy_params(struct mrsas_softc *sc, u_int32_t ld, u_int64_t stripR
|
||||
u_int64_t *pdBlock = &io_info->pdBlock;
|
||||
u_int16_t *pDevHandle = &io_info->devHandle;
|
||||
u_int32_t logArm, rowMod, armQ, arm;
|
||||
u_int8_t do_invader = 0;
|
||||
|
||||
if ((sc->device_id == MRSAS_INVADER) ||
|
||||
(sc->device_id == MRSAS_FURY) ||
|
||||
(sc->device_id == MRSAS_INTRUDER) ||
|
||||
(sc->device_id == MRSAS_INTRUDER_24) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_52) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_53))
|
||||
do_invader = 1;
|
||||
|
||||
/* Get row and span from io_info for Uneven Span IO. */
|
||||
row = io_info->start_row;
|
||||
@ -782,7 +773,7 @@ mr_spanset_get_phy_params(struct mrsas_softc *sc, u_int32_t ld, u_int64_t stripR
|
||||
*pDevHandle = MR_PdDevHandleGet(pd, map);
|
||||
else {
|
||||
*pDevHandle = MR_PD_INVALID;
|
||||
if ((raid->level >= 5) && ((!do_invader) || (do_invader &&
|
||||
if ((raid->level >= 5) && ((!sc->mrsas_gen3_ctrl) || (sc->mrsas_gen3_ctrl &&
|
||||
raid->regTypeReqOnRead != REGION_TYPE_UNUSED)))
|
||||
pRAID_Context->regLockFlags = REGION_TYPE_EXCLUSIVE;
|
||||
else if (raid->level == 1) {
|
||||
@ -965,12 +956,7 @@ MR_BuildRaidContext(struct mrsas_softc *sc, struct IO_REQUEST_INFO *io_info,
|
||||
regSize += stripSize;
|
||||
}
|
||||
pRAID_Context->timeoutValue = map->raidMap.fpPdIoTimeoutSec;
|
||||
if ((sc->device_id == MRSAS_INVADER) ||
|
||||
(sc->device_id == MRSAS_FURY) ||
|
||||
(sc->device_id == MRSAS_INTRUDER) ||
|
||||
(sc->device_id == MRSAS_INTRUDER_24) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_52) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_53))
|
||||
if (sc->mrsas_gen3_ctrl)
|
||||
pRAID_Context->regLockFlags = (isRead) ? raid->regTypeReqOnRead : raid->regTypeReqOnWrite;
|
||||
else
|
||||
pRAID_Context->regLockFlags = (isRead) ? REGION_TYPE_SHARED_READ : raid->regTypeReqOnWrite;
|
||||
@ -1453,15 +1439,6 @@ MR_GetPhyParams(struct mrsas_softc *sc, u_int32_t ld,
|
||||
u_int64_t *pdBlock = &io_info->pdBlock;
|
||||
u_int16_t *pDevHandle = &io_info->devHandle;
|
||||
u_int32_t rowMod, armQ, arm, logArm;
|
||||
u_int8_t do_invader = 0;
|
||||
|
||||
if ((sc->device_id == MRSAS_INVADER) ||
|
||||
(sc->device_id == MRSAS_FURY) ||
|
||||
(sc->device_id == MRSAS_INTRUDER) ||
|
||||
(sc->device_id == MRSAS_INTRUDER_24) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_52) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_53))
|
||||
do_invader = 1;
|
||||
|
||||
row = mega_div64_32(stripRow, raid->rowDataSize);
|
||||
|
||||
@ -1501,7 +1478,7 @@ MR_GetPhyParams(struct mrsas_softc *sc, u_int32_t ld,
|
||||
*pDevHandle = MR_PdDevHandleGet(pd, map);
|
||||
else {
|
||||
*pDevHandle = MR_PD_INVALID; /* set dev handle as invalid. */
|
||||
if ((raid->level >= 5) && ((!do_invader) || (do_invader &&
|
||||
if ((raid->level >= 5) && ((!sc->mrsas_gen3_ctrl) || (sc->mrsas_gen3_ctrl &&
|
||||
raid->regTypeReqOnRead != REGION_TYPE_UNUSED)))
|
||||
pRAID_Context->regLockFlags = REGION_TYPE_EXCLUSIVE;
|
||||
else if (raid->level == 1) {
|
||||
|
Loading…
Reference in New Issue
Block a user