svn commit: r342062 - head/sys/dev/mrsas
Kashyap D Desai
kadesai at FreeBSD.org
Fri Dec 14 08:00:47 UTC 2018
Author: kadesai
Date: Fri Dec 14 08:00:45 2018
New Revision: 342062
URL: https://svnweb.freebsd.org/changeset/base/342062
Log:
This patch will add new interface to support more than 256 JBODs.
Submitted by: Sumit Saxena <sumit.saxena at broadcom.com>
Reviewed by: Kashyap Desai <Kashyap.Desai at broadcom.com>
Approved by: ken
MFC after: 3 days
Sponsored by: Broadcom Inc
Modified:
head/sys/dev/mrsas/mrsas.c
head/sys/dev/mrsas/mrsas.h
head/sys/dev/mrsas/mrsas_cam.c
Modified: head/sys/dev/mrsas/mrsas.c
==============================================================================
--- head/sys/dev/mrsas/mrsas.c Fri Dec 14 08:00:01 2018 (r342061)
+++ head/sys/dev/mrsas/mrsas.c Fri Dec 14 08:00:45 2018 (r342062)
@@ -2272,6 +2272,9 @@ mrsas_init_fw(struct mrsas_softc *sc)
if (sc->use_seqnum_jbod_fp)
device_printf(sc->mrsas_dev, "FW supports JBOD Map \n");
+ if (sc->support_morethan256jbod)
+ device_printf(sc->mrsas_dev, "FW supports JBOD Map Ext \n");
+
if (mrsas_setup_raidmap(sc) != SUCCESS) {
device_printf(sc->mrsas_dev, "Error: RAID map setup FAILED !!! "
"There seems to be some problem in the controller\n"
@@ -3381,6 +3384,9 @@ mrsas_get_ctrl_info(struct mrsas_softc *sc)
sc->use_seqnum_jbod_fp =
sc->ctrl_info->adapterOperations3.useSeqNumJbodFP;
+ sc->support_morethan256jbod =
+ sc->ctrl_info->adapterOperations4.supportPdMapTargetId;
+
sc->disableOnlineCtrlReset =
sc->ctrl_info->properties.OnOffProperties.disableOnlineCtrlReset;
Modified: head/sys/dev/mrsas/mrsas.h
==============================================================================
--- head/sys/dev/mrsas/mrsas.h Fri Dec 14 08:00:01 2018 (r342061)
+++ head/sys/dev/mrsas/mrsas.h Fri Dec 14 08:00:45 2018 (r342062)
@@ -1023,7 +1023,8 @@ struct MR_PD_CFG_SEQ {
u_int8_t tmCapable:1;
u_int8_t reserved:7;
} capability;
- u_int8_t reserved[3];
+ u_int8_t reserved;
+ u_int16_t pdTargetId;
} __packed;
struct MR_PD_CFG_SEQ_NUM_SYNC {
@@ -2197,7 +2198,21 @@ struct mrsas_ctrl_info {
u_int32_t reserved:7;
} adapterOperations3;
- u_int8_t pad[0x800 - 0x7EC]; /* 0x7EC */
+ u_int8_t pad_cpld[16];
+
+ struct {
+ u_int16_t ctrlInfoExtSupported:1;
+ u_int16_t supportIbuttonLess:1;
+ u_int16_t supportedEncAlgo:1;
+ u_int16_t supportEncryptedMfc:1;
+ u_int16_t imageUploadSupported:1;
+ u_int16_t supportSESCtrlInMultipathCfg:1;
+ u_int16_t supportPdMapTargetId:1;
+ u_int16_t FWSwapsBBUVPDInfo:1;
+ u_int16_t reserved:8;
+ } adapterOperations4;
+
+ u_int8_t pad[0x800 - 0x7FE]; /* 0x7FE */
} __packed;
/*
@@ -3042,6 +3057,8 @@ struct mrsas_softc {
u_int8_t mrsas_gen3_ctrl;
u_int8_t secure_jbod_support;
u_int8_t use_seqnum_jbod_fp;
+ /* FW suport for more than 256 PD/JBOD */
+ u_int32_t support_morethan256jbod;
u_int8_t max256vdSupport;
u_int16_t fw_supported_vd_count;
u_int16_t fw_supported_pd_count;
Modified: head/sys/dev/mrsas/mrsas_cam.c
==============================================================================
--- head/sys/dev/mrsas/mrsas_cam.c Fri Dec 14 08:00:01 2018 (r342061)
+++ head/sys/dev/mrsas/mrsas_cam.c Fri Dec 14 08:00:45 2018 (r342062)
@@ -1084,7 +1084,13 @@ mrsas_build_syspdio(struct mrsas_softc *sc, struct mrs
//printf("Using Drv seq num\n");
pd_sync = (void *)sc->jbodmap_mem[(sc->pd_seq_map_id - 1) & 1];
cmd->tmCapable = pd_sync->seq[device_id].capability.tmCapable;
- io_request->RaidContext.raid_context.VirtualDiskTgtId = device_id + 255;
+ /* More than 256 PD/JBOD support for Ventura */
+ if (sc->support_morethan256jbod)
+ io_request->RaidContext.raid_context.VirtualDiskTgtId =
+ pd_sync->seq[device_id].pdTargetId;
+ else
+ io_request->RaidContext.raid_context.VirtualDiskTgtId =
+ device_id + 255;
io_request->RaidContext.raid_context.configSeqNum = pd_sync->seq[device_id].seqNum;
io_request->DevHandle = pd_sync->seq[device_id].devHandle;
if (sc->is_ventura)
More information about the svn-src-head
mailing list