ciss.c (232854) | ciss.c (245459) |
---|---|
1/*- 2 * Copyright (c) 2001 Michael Smith 3 * Copyright (c) 2004 Paul Saab 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 10 unchanged lines hidden (view full) --- 19 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25 * SUCH DAMAGE. 26 * | 1/*- 2 * Copyright (c) 2001 Michael Smith 3 * Copyright (c) 2004 Paul Saab 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 10 unchanged lines hidden (view full) --- 19 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25 * SUCH DAMAGE. 26 * |
27 * $FreeBSD: head/sys/dev/ciss/ciss.c 232854 2012-03-12 08:03:51Z scottl $ | 27 * $FreeBSD: head/sys/dev/ciss/ciss.c 245459 2013-01-15 14:35:35Z sbruno $ |
28 */ 29 30/* 31 * Common Interface for SCSI-3 Support driver. 32 * 33 * CISS claims to provide a common interface between a generic SCSI 34 * transport and an intelligent host adapter. 35 * --- 1162 unchanged lines hidden (view full) --- 1198#if 0 1199 /* XXX later revisions may not need this */ 1200 sc->ciss_flags |= CISS_FLAG_FAKE_SYNCH; 1201#endif 1202 1203 /* XXX only really required for old 5300 adapters? */ 1204 sc->ciss_flags |= CISS_FLAG_BMIC_ABORT; 1205 | 28 */ 29 30/* 31 * Common Interface for SCSI-3 Support driver. 32 * 33 * CISS claims to provide a common interface between a generic SCSI 34 * transport and an intelligent host adapter. 35 * --- 1162 unchanged lines hidden (view full) --- 1198#if 0 1199 /* XXX later revisions may not need this */ 1200 sc->ciss_flags |= CISS_FLAG_FAKE_SYNCH; 1201#endif 1202 1203 /* XXX only really required for old 5300 adapters? */ 1204 sc->ciss_flags |= CISS_FLAG_BMIC_ABORT; 1205 |
1206 /* 1207 * Earlier controller specs do not contain these config 1208 * entries, so assume that a 0 means its old and assign 1209 * these values to the defaults that were established 1210 * when this driver was developed for them 1211 */ 1212 if (sc->ciss_cfg->max_logical_supported == 0) 1213 sc->ciss_cfg->max_logical_supported = CISS_MAX_LOGICAL; 1214 if (sc->ciss_cfg->max_physical_supported == 0) 1215 sc->ciss_cfg->max_physical_supported = CISS_MAX_PHYSICAL; |
|
1206 /* print information */ 1207 if (bootverbose) { | 1216 /* print information */ 1217 if (bootverbose) { |
1208#if 0 /* XXX proxy volumes??? */ | |
1209 ciss_printf(sc, " %d logical drive%s configured\n", 1210 sc->ciss_id->configured_logical_drives, 1211 (sc->ciss_id->configured_logical_drives == 1) ? "" : "s"); | 1218 ciss_printf(sc, " %d logical drive%s configured\n", 1219 sc->ciss_id->configured_logical_drives, 1220 (sc->ciss_id->configured_logical_drives == 1) ? "" : "s"); |
1212#endif | |
1213 ciss_printf(sc, " firmware %4.4s\n", sc->ciss_id->running_firmware_revision); 1214 ciss_printf(sc, " %d SCSI channels\n", sc->ciss_id->scsi_bus_count); 1215 1216 ciss_printf(sc, " signature '%.4s'\n", sc->ciss_cfg->signature); 1217 ciss_printf(sc, " valence %d\n", sc->ciss_cfg->valence); 1218 ciss_printf(sc, " supported I/O methods 0x%b\n", 1219 sc->ciss_cfg->supported_methods, 1220 "\20\1READY\2simple\3performant\4MEMQ\n"); --- 6 unchanged lines hidden (view full) --- 1227 ciss_printf(sc, " interrupt coalesce count %d\n", 1228 sc->ciss_cfg->interrupt_coalesce_count); 1229 ciss_printf(sc, " max outstanding commands %d\n", 1230 sc->ciss_cfg->max_outstanding_commands); 1231 ciss_printf(sc, " bus types 0x%b\n", sc->ciss_cfg->bus_types, 1232 "\20\1ultra2\2ultra3\10fibre1\11fibre2\n"); 1233 ciss_printf(sc, " server name '%.16s'\n", sc->ciss_cfg->server_name); 1234 ciss_printf(sc, " heartbeat 0x%x\n", sc->ciss_cfg->heartbeat); | 1221 ciss_printf(sc, " firmware %4.4s\n", sc->ciss_id->running_firmware_revision); 1222 ciss_printf(sc, " %d SCSI channels\n", sc->ciss_id->scsi_bus_count); 1223 1224 ciss_printf(sc, " signature '%.4s'\n", sc->ciss_cfg->signature); 1225 ciss_printf(sc, " valence %d\n", sc->ciss_cfg->valence); 1226 ciss_printf(sc, " supported I/O methods 0x%b\n", 1227 sc->ciss_cfg->supported_methods, 1228 "\20\1READY\2simple\3performant\4MEMQ\n"); --- 6 unchanged lines hidden (view full) --- 1235 ciss_printf(sc, " interrupt coalesce count %d\n", 1236 sc->ciss_cfg->interrupt_coalesce_count); 1237 ciss_printf(sc, " max outstanding commands %d\n", 1238 sc->ciss_cfg->max_outstanding_commands); 1239 ciss_printf(sc, " bus types 0x%b\n", sc->ciss_cfg->bus_types, 1240 "\20\1ultra2\2ultra3\10fibre1\11fibre2\n"); 1241 ciss_printf(sc, " server name '%.16s'\n", sc->ciss_cfg->server_name); 1242 ciss_printf(sc, " heartbeat 0x%x\n", sc->ciss_cfg->heartbeat); |
1243 ciss_printf(sc, " max logical logical volumes: %d\n", sc->ciss_cfg->max_logical_supported); 1244 ciss_printf(sc, " max physical disks supported: %d\n", sc->ciss_cfg->max_physical_supported); 1245 ciss_printf(sc, " max physical disks per logical volume: %d\n", sc->ciss_cfg->max_physical_per_logical); |
|
1235 } 1236 1237out: 1238 if (error) { 1239 if (sc->ciss_id != NULL) { 1240 free(sc->ciss_id, CISS_MALLOC_CLASS); 1241 sc->ciss_id = NULL; 1242 } --- 71 unchanged lines hidden (view full) --- 1314 */ 1315 ciss_report_request(cr, &command_status, NULL); 1316 switch(command_status) { 1317 case CISS_CMD_STATUS_SUCCESS: /* buffer right size */ 1318 case CISS_CMD_STATUS_DATA_UNDERRUN: /* buffer too large, not bad */ 1319 break; 1320 case CISS_CMD_STATUS_DATA_OVERRUN: 1321 ciss_printf(sc, "WARNING: more units than driver limit (%d)\n", | 1246 } 1247 1248out: 1249 if (error) { 1250 if (sc->ciss_id != NULL) { 1251 free(sc->ciss_id, CISS_MALLOC_CLASS); 1252 sc->ciss_id = NULL; 1253 } --- 71 unchanged lines hidden (view full) --- 1325 */ 1326 ciss_report_request(cr, &command_status, NULL); 1327 switch(command_status) { 1328 case CISS_CMD_STATUS_SUCCESS: /* buffer right size */ 1329 case CISS_CMD_STATUS_DATA_UNDERRUN: /* buffer too large, not bad */ 1330 break; 1331 case CISS_CMD_STATUS_DATA_OVERRUN: 1332 ciss_printf(sc, "WARNING: more units than driver limit (%d)\n", |
1322 CISS_MAX_LOGICAL); | 1333 sc->ciss_cfg->max_logical_supported); |
1323 break; 1324 default: 1325 ciss_printf(sc, "error detecting logical drive configuration (%s)\n", 1326 ciss_name_command_status(command_status)); 1327 error = EIO; 1328 goto out; 1329 } 1330 ciss_release_request(cr); --- 17 unchanged lines hidden (view full) --- 1348{ 1349 struct ciss_lun_report *cll; 1350 int error = 0, i, j; 1351 int ndrives; 1352 1353 debug_called(1); 1354 1355 cll = ciss_report_luns(sc, CISS_OPCODE_REPORT_LOGICAL_LUNS, | 1334 break; 1335 default: 1336 ciss_printf(sc, "error detecting logical drive configuration (%s)\n", 1337 ciss_name_command_status(command_status)); 1338 error = EIO; 1339 goto out; 1340 } 1341 ciss_release_request(cr); --- 17 unchanged lines hidden (view full) --- 1359{ 1360 struct ciss_lun_report *cll; 1361 int error = 0, i, j; 1362 int ndrives; 1363 1364 debug_called(1); 1365 1366 cll = ciss_report_luns(sc, CISS_OPCODE_REPORT_LOGICAL_LUNS, |
1356 CISS_MAX_LOGICAL); | 1367 sc->ciss_cfg->max_logical_supported); |
1357 if (cll == NULL) { 1358 error = ENXIO; 1359 goto out; 1360 } 1361 1362 /* sanity-check reply */ 1363 ndrives = (ntohl(cll->list_size) / sizeof(union ciss_device_address)); | 1368 if (cll == NULL) { 1369 error = ENXIO; 1370 goto out; 1371 } 1372 1373 /* sanity-check reply */ 1374 ndrives = (ntohl(cll->list_size) / sizeof(union ciss_device_address)); |
1364 if ((ndrives < 0) || (ndrives > CISS_MAX_LOGICAL)) { | 1375 if ((ndrives < 0) || (ndrives > sc->ciss_cfg->max_logical_supported)) { |
1365 ciss_printf(sc, "adapter claims to report absurd number of logical drives (%d > %d)\n", | 1376 ciss_printf(sc, "adapter claims to report absurd number of logical drives (%d > %d)\n", |
1366 ndrives, CISS_MAX_LOGICAL); | 1377 ndrives, sc->ciss_cfg->max_logical_supported); |
1367 error = ENXIO; 1368 goto out; 1369 } 1370 1371 /* 1372 * Save logical drive information. 1373 */ 1374 if (bootverbose) { --- 6 unchanged lines hidden (view full) --- 1381 CISS_MALLOC_CLASS, M_NOWAIT | M_ZERO); 1382 if (sc->ciss_logical == NULL) { 1383 error = ENXIO; 1384 goto out; 1385 } 1386 1387 for (i = 0; i <= sc->ciss_max_logical_bus; i++) { 1388 sc->ciss_logical[i] = | 1378 error = ENXIO; 1379 goto out; 1380 } 1381 1382 /* 1383 * Save logical drive information. 1384 */ 1385 if (bootverbose) { --- 6 unchanged lines hidden (view full) --- 1392 CISS_MALLOC_CLASS, M_NOWAIT | M_ZERO); 1393 if (sc->ciss_logical == NULL) { 1394 error = ENXIO; 1395 goto out; 1396 } 1397 1398 for (i = 0; i <= sc->ciss_max_logical_bus; i++) { 1399 sc->ciss_logical[i] = |
1389 malloc(CISS_MAX_LOGICAL * sizeof(struct ciss_ldrive), | 1400 malloc(sc->ciss_cfg->max_logical_supported * 1401 sizeof(struct ciss_ldrive), |
1390 CISS_MALLOC_CLASS, M_NOWAIT | M_ZERO); 1391 if (sc->ciss_logical[i] == NULL) { 1392 error = ENXIO; 1393 goto out; 1394 } 1395 | 1402 CISS_MALLOC_CLASS, M_NOWAIT | M_ZERO); 1403 if (sc->ciss_logical[i] == NULL) { 1404 error = ENXIO; 1405 goto out; 1406 } 1407 |
1396 for (j = 0; j < CISS_MAX_LOGICAL; j++) | 1408 for (j = 0; j < sc->ciss_cfg->max_logical_supported; j++) |
1397 sc->ciss_logical[i][j].cl_status = CISS_LD_NONEXISTENT; 1398 } 1399 1400 | 1409 sc->ciss_logical[i][j].cl_status = CISS_LD_NONEXISTENT; 1410 } 1411 1412 |
1401 for (i = 0; i < CISS_MAX_LOGICAL; i++) { | 1413 for (i = 0; i < sc->ciss_cfg->max_logical_supported; i++) { |
1402 if (i < ndrives) { 1403 struct ciss_ldrive *ld; 1404 int bus, target; 1405 1406 bus = CISS_LUN_TO_BUS(cll->lun[i].logical.lun); 1407 target = CISS_LUN_TO_TARGET(cll->lun[i].logical.lun); 1408 ld = &sc->ciss_logical[bus][target]; 1409 --- 25 unchanged lines hidden (view full) --- 1435 int bus, target; 1436 1437 debug_called(1); 1438 1439 bus = 0; 1440 target = 0; 1441 1442 cll = ciss_report_luns(sc, CISS_OPCODE_REPORT_PHYSICAL_LUNS, | 1414 if (i < ndrives) { 1415 struct ciss_ldrive *ld; 1416 int bus, target; 1417 1418 bus = CISS_LUN_TO_BUS(cll->lun[i].logical.lun); 1419 target = CISS_LUN_TO_TARGET(cll->lun[i].logical.lun); 1420 ld = &sc->ciss_logical[bus][target]; 1421 --- 25 unchanged lines hidden (view full) --- 1447 int bus, target; 1448 1449 debug_called(1); 1450 1451 bus = 0; 1452 target = 0; 1453 1454 cll = ciss_report_luns(sc, CISS_OPCODE_REPORT_PHYSICAL_LUNS, |
1443 CISS_MAX_PHYSICAL); | 1455 sc->ciss_cfg->max_physical_supported); |
1444 if (cll == NULL) { 1445 error = ENXIO; 1446 goto out; 1447 } 1448 1449 nphys = (ntohl(cll->list_size) / sizeof(union ciss_device_address)); 1450 1451 if (bootverbose) { --- 526 unchanged lines hidden (view full) --- 1978 if (sc->ciss_reply_dmat) 1979 bus_dma_tag_destroy(sc->ciss_reply_dmat); 1980 1981 /* destroy DMA tags */ 1982 if (sc->ciss_parent_dmat) 1983 bus_dma_tag_destroy(sc->ciss_parent_dmat); 1984 if (sc->ciss_logical) { 1985 for (i = 0; i <= sc->ciss_max_logical_bus; i++) { | 1456 if (cll == NULL) { 1457 error = ENXIO; 1458 goto out; 1459 } 1460 1461 nphys = (ntohl(cll->list_size) / sizeof(union ciss_device_address)); 1462 1463 if (bootverbose) { --- 526 unchanged lines hidden (view full) --- 1990 if (sc->ciss_reply_dmat) 1991 bus_dma_tag_destroy(sc->ciss_reply_dmat); 1992 1993 /* destroy DMA tags */ 1994 if (sc->ciss_parent_dmat) 1995 bus_dma_tag_destroy(sc->ciss_parent_dmat); 1996 if (sc->ciss_logical) { 1997 for (i = 0; i <= sc->ciss_max_logical_bus; i++) { |
1986 for (j = 0; j < CISS_MAX_LOGICAL; j++) { | 1998 for (j = 0; j < sc->ciss_cfg->max_logical_supported; j++) { |
1987 if (sc->ciss_logical[i][j].cl_ldrive) 1988 free(sc->ciss_logical[i][j].cl_ldrive, CISS_MALLOC_CLASS); 1989 if (sc->ciss_logical[i][j].cl_lstatus) 1990 free(sc->ciss_logical[i][j].cl_lstatus, CISS_MALLOC_CLASS); 1991 } 1992 free(sc->ciss_logical[i], CISS_MALLOC_CLASS); 1993 } 1994 free(sc->ciss_logical, CISS_MALLOC_CLASS); --- 966 unchanged lines hidden (view full) --- 2961 struct ccb_pathinq *cpi = &ccb->cpi; 2962 2963 debug(1, "XPT_PATH_INQ %d:%d:%d", cam_sim_bus(sim), ccb->ccb_h.target_id, ccb->ccb_h.target_lun); 2964 2965 cpi->version_num = 1; 2966 cpi->hba_inquiry = PI_TAG_ABLE; /* XXX is this correct? */ 2967 cpi->target_sprt = 0; 2968 cpi->hba_misc = 0; | 1999 if (sc->ciss_logical[i][j].cl_ldrive) 2000 free(sc->ciss_logical[i][j].cl_ldrive, CISS_MALLOC_CLASS); 2001 if (sc->ciss_logical[i][j].cl_lstatus) 2002 free(sc->ciss_logical[i][j].cl_lstatus, CISS_MALLOC_CLASS); 2003 } 2004 free(sc->ciss_logical[i], CISS_MALLOC_CLASS); 2005 } 2006 free(sc->ciss_logical, CISS_MALLOC_CLASS); --- 966 unchanged lines hidden (view full) --- 2973 struct ccb_pathinq *cpi = &ccb->cpi; 2974 2975 debug(1, "XPT_PATH_INQ %d:%d:%d", cam_sim_bus(sim), ccb->ccb_h.target_id, ccb->ccb_h.target_lun); 2976 2977 cpi->version_num = 1; 2978 cpi->hba_inquiry = PI_TAG_ABLE; /* XXX is this correct? */ 2979 cpi->target_sprt = 0; 2980 cpi->hba_misc = 0; |
2969 cpi->max_target = CISS_MAX_LOGICAL; | 2981 cpi->max_target = sc->ciss_cfg->max_logical_supported; |
2970 cpi->max_lun = 0; /* 'logical drive' channel only */ | 2982 cpi->max_lun = 0; /* 'logical drive' channel only */ |
2971 cpi->initiator_id = CISS_MAX_LOGICAL; | 2983 cpi->initiator_id = sc->ciss_cfg->max_logical_supported; |
2972 strncpy(cpi->sim_vid, "FreeBSD", SIM_IDLEN); 2973 strncpy(cpi->hba_vid, "msmith@freebsd.org", HBA_IDLEN); 2974 strncpy(cpi->dev_name, cam_sim_name(sim), DEV_IDLEN); 2975 cpi->unit_number = cam_sim_unit(sim); 2976 cpi->bus_id = cam_sim_bus(sim); 2977 cpi->base_transfer_speed = 132 * 1024; /* XXX what to set this to? */ 2978 cpi->transport = XPORT_SPI; 2979 cpi->transport_version = 2; --- 894 unchanged lines hidden (view full) --- 3874 struct ciss_ldrive *ld; 3875 int i, j, ndrives; 3876 3877 /* 3878 * We must rescan all logical volumes to get the right logical 3879 * drive address. 3880 */ 3881 cll = ciss_report_luns(sc, CISS_OPCODE_REPORT_LOGICAL_LUNS, | 2984 strncpy(cpi->sim_vid, "FreeBSD", SIM_IDLEN); 2985 strncpy(cpi->hba_vid, "msmith@freebsd.org", HBA_IDLEN); 2986 strncpy(cpi->dev_name, cam_sim_name(sim), DEV_IDLEN); 2987 cpi->unit_number = cam_sim_unit(sim); 2988 cpi->bus_id = cam_sim_bus(sim); 2989 cpi->base_transfer_speed = 132 * 1024; /* XXX what to set this to? */ 2990 cpi->transport = XPORT_SPI; 2991 cpi->transport_version = 2; --- 894 unchanged lines hidden (view full) --- 3886 struct ciss_ldrive *ld; 3887 int i, j, ndrives; 3888 3889 /* 3890 * We must rescan all logical volumes to get the right logical 3891 * drive address. 3892 */ 3893 cll = ciss_report_luns(sc, CISS_OPCODE_REPORT_LOGICAL_LUNS, |
3882 CISS_MAX_LOGICAL); | 3894 sc->ciss_cfg->max_logical_supported); |
3883 if (cll == NULL) 3884 return; 3885 3886 ndrives = (ntohl(cll->list_size) / sizeof(union ciss_device_address)); 3887 3888 /* 3889 * Delete any of the drives which were destroyed by the 3890 * firmware. 3891 */ 3892 for (i = 0; i < sc->ciss_max_logical_bus; i++) { | 3895 if (cll == NULL) 3896 return; 3897 3898 ndrives = (ntohl(cll->list_size) / sizeof(union ciss_device_address)); 3899 3900 /* 3901 * Delete any of the drives which were destroyed by the 3902 * firmware. 3903 */ 3904 for (i = 0; i < sc->ciss_max_logical_bus; i++) { |
3893 for (j = 0; j < CISS_MAX_LOGICAL; j++) { | 3905 for (j = 0; j < sc->ciss_cfg->max_logical_supported; j++) { |
3894 ld = &sc->ciss_logical[i][j]; 3895 3896 if (ld->cl_update == 0) 3897 continue; 3898 3899 if (ld->cl_status != CISS_LD_ONLINE) { 3900 ciss_cam_rescan_target(sc, i, j); 3901 ld->cl_update = 0; --- 152 unchanged lines hidden (view full) --- 4054 */ 4055 if ((bus >= 0) && (target >= 0)) 4056 sc->ciss_physical[bus][target].cp_online = 0; 4057 } else { 4058 /* 4059 * Rescan the physical lun list for new items 4060 */ 4061 cll = ciss_report_luns(sc, CISS_OPCODE_REPORT_PHYSICAL_LUNS, | 3906 ld = &sc->ciss_logical[i][j]; 3907 3908 if (ld->cl_update == 0) 3909 continue; 3910 3911 if (ld->cl_status != CISS_LD_ONLINE) { 3912 ciss_cam_rescan_target(sc, i, j); 3913 ld->cl_update = 0; --- 152 unchanged lines hidden (view full) --- 4066 */ 4067 if ((bus >= 0) && (target >= 0)) 4068 sc->ciss_physical[bus][target].cp_online = 0; 4069 } else { 4070 /* 4071 * Rescan the physical lun list for new items 4072 */ 4073 cll = ciss_report_luns(sc, CISS_OPCODE_REPORT_PHYSICAL_LUNS, |
4062 CISS_MAX_PHYSICAL); | 4074 sc->ciss_cfg->max_physical_supported); |
4063 if (cll == NULL) { 4064 ciss_printf(sc, "Warning, cannot get physical lun list\n"); 4065 break; 4066 } 4067 ciss_filter_physical(sc, cll); 4068 } 4069 break; 4070 --- 231 unchanged lines hidden (view full) --- 4302 sc->ciss_qstat[i].q_length, 4303 sc->ciss_qstat[i].q_max); 4304 } 4305 ciss_printf(sc, "max_requests %d\n", sc->ciss_max_requests); 4306 ciss_printf(sc, "flags %b\n", sc->ciss_flags, 4307 "\20\1notify_ok\2control_open\3aborting\4running\21fake_synch\22bmic_abort\n"); 4308 4309 for (i = 0; i < sc->ciss_max_logical_bus; i++) { | 4075 if (cll == NULL) { 4076 ciss_printf(sc, "Warning, cannot get physical lun list\n"); 4077 break; 4078 } 4079 ciss_filter_physical(sc, cll); 4080 } 4081 break; 4082 --- 231 unchanged lines hidden (view full) --- 4314 sc->ciss_qstat[i].q_length, 4315 sc->ciss_qstat[i].q_max); 4316 } 4317 ciss_printf(sc, "max_requests %d\n", sc->ciss_max_requests); 4318 ciss_printf(sc, "flags %b\n", sc->ciss_flags, 4319 "\20\1notify_ok\2control_open\3aborting\4running\21fake_synch\22bmic_abort\n"); 4320 4321 for (i = 0; i < sc->ciss_max_logical_bus; i++) { |
4310 for (j = 0; j < CISS_MAX_LOGICAL; j++) { | 4322 for (j = 0; j < sc->ciss_cfg->max_logical_supported; j++) { |
4311 ciss_printf(sc, "LOGICAL DRIVE %d: ", i); 4312 ciss_print_ldrive(sc, &sc->ciss_logical[i][j]); 4313 } 4314 } 4315 4316 /* XXX Should physical drives be printed out here? */ 4317 4318 for (i = 1; i < sc->ciss_max_requests; i++) --- 341 unchanged lines hidden --- | 4323 ciss_printf(sc, "LOGICAL DRIVE %d: ", i); 4324 ciss_print_ldrive(sc, &sc->ciss_logical[i][j]); 4325 } 4326 } 4327 4328 /* XXX Should physical drives be printed out here? */ 4329 4330 for (i = 1; i < sc->ciss_max_requests; i++) --- 341 unchanged lines hidden --- |