aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/isp
diff options
context:
space:
mode:
authorMatt Jacob <mjacob@FreeBSD.org>2011-12-27 14:59:24 +0000
committerMatt Jacob <mjacob@FreeBSD.org>2011-12-27 14:59:24 +0000
commitf6683e5594f1e68316fe0424dce117dd7f5ef986 (patch)
tree743190af88448fde12a41f8fbcc5a5f897769049 /sys/dev/isp
parentfd8a33c1d669249e1d747aee496d8659652d98d2 (diff)
Notes
Diffstat (limited to 'sys/dev/isp')
-rw-r--r--sys/dev/isp/isp_freebsd.c56
-rw-r--r--sys/dev/isp/isp_freebsd.h7
2 files changed, 35 insertions, 28 deletions
diff --git a/sys/dev/isp/isp_freebsd.c b/sys/dev/isp/isp_freebsd.c
index 9d93857532d14..56fedff558c0a 100644
--- a/sys/dev/isp/isp_freebsd.c
+++ b/sys/dev/isp/isp_freebsd.c
@@ -3170,10 +3170,10 @@ isptargstart(struct cam_periph *periph, union ccb *iccb)
xpt_print(atio->ccb_h.path, "[0x%x] Non-Zero Lun %d: cdb0=0x%x\n", atio->tag_id, return_lun, cdb[0]);
if (cdb[0] != INQUIRY && cdb[0] != REPORT_LUNS && cdb[0] != REQUEST_SENSE) {
status = SCSI_STATUS_CHECK_COND;
- atio->sense_data.error_code = SSD_ERRCODE_VALID|SSD_CURRENT_ERROR|SSD_KEY_ILLEGAL_REQUEST;
- atio->sense_data.add_sense_code = 0x25;
- atio->sense_data.add_sense_code_qual = 0x0;
- atio->sense_len = sizeof (atio->sense_data);
+ SDFIXED(atio->sense_data)->error_code = SSD_ERRCODE_VALID|SSD_CURRENT_ERROR|SSD_KEY_ILLEGAL_REQUEST;
+ SDFIXED(atio->sense_data)->add_sense_code = 0x25;
+ SDFIXED(atio->sense_data)->add_sense_code_qual = 0x0;
+ atio->sense_len = SSD_MIN_SIZE;
}
return_lun = CAM_LUN_WILDCARD;
}
@@ -3197,10 +3197,10 @@ isptargstart(struct cam_periph *periph, union ccb *iccb)
case READ_16:
if (isptarg_rwparm(cdb, disk_data, disk_size, atio->ccb_h.ccb_data_offset, &data_ptr, &data_len, &last)) {
status = SCSI_STATUS_CHECK_COND;
- atio->sense_data.error_code = SSD_ERRCODE_VALID|SSD_CURRENT_ERROR|SSD_KEY_UNIT_ATTENTION;
- atio->sense_data.add_sense_code = 0x5;
- atio->sense_data.add_sense_code_qual = 0x24;
- atio->sense_len = sizeof (atio->sense_data);
+ SDFIXED(atio->sense_data)->error_code = SSD_ERRCODE_VALID|SSD_CURRENT_ERROR|SSD_KEY_UNIT_ATTENTION;
+ SDFIXED(atio->sense_data)->add_sense_code = 0x5;
+ SDFIXED(atio->sense_data)->add_sense_code_qual = 0x24;
+ atio->sense_len = SSD_MIN_SIZE;
} else {
#ifdef ISP_FORCE_TIMEOUT
{
@@ -3236,10 +3236,10 @@ isptargstart(struct cam_periph *periph, union ccb *iccb)
case WRITE_16:
if (isptarg_rwparm(cdb, disk_data, disk_size, atio->ccb_h.ccb_data_offset, &data_ptr, &data_len, &last)) {
status = SCSI_STATUS_CHECK_COND;
- atio->sense_data.error_code = SSD_ERRCODE_VALID|SSD_CURRENT_ERROR|SSD_KEY_UNIT_ATTENTION;
- atio->sense_data.add_sense_code = 0x5;
- atio->sense_data.add_sense_code_qual = 0x24;
- atio->sense_len = sizeof (atio->sense_data);
+ SDFIXED(atio->sense_data)->error_code = SSD_ERRCODE_VALID|SSD_CURRENT_ERROR|SSD_KEY_UNIT_ATTENTION;
+ SDFIXED(atio->sense_data)->add_sense_code = 0x5;
+ SDFIXED(atio->sense_data)->add_sense_code_qual = 0x24;
+ atio->sense_len = SSD_MIN_SIZE;
} else {
#ifdef ISP_FORCE_TIMEOUT
{
@@ -3273,10 +3273,10 @@ isptargstart(struct cam_periph *periph, union ccb *iccb)
flags |= CAM_DIR_IN;
if (cdb[1] || cdb[2] || cdb[3]) {
status = SCSI_STATUS_CHECK_COND;
- atio->sense_data.error_code = SSD_ERRCODE_VALID|SSD_CURRENT_ERROR|SSD_KEY_UNIT_ATTENTION;
- atio->sense_data.add_sense_code = 0x5;
- atio->sense_data.add_sense_code_qual = 0x20;
- atio->sense_len = sizeof (atio->sense_data);
+ SDFIXED(atio->sense_data)->error_code = SSD_ERRCODE_VALID|SSD_CURRENT_ERROR|SSD_KEY_UNIT_ATTENTION;
+ SDFIXED(atio->sense_data)->add_sense_code = 0x5;
+ SDFIXED(atio->sense_data)->add_sense_code_qual = 0x20;
+ atio->sense_len = SSD_MIN_SIZE;
break;
}
data_len = sizeof (iqd);
@@ -3297,10 +3297,10 @@ isptargstart(struct cam_periph *periph, union ccb *iccb)
if (ca) {
ca = 0;
status = SCSI_STATUS_CHECK_COND;
- atio->sense_data.error_code = SSD_ERRCODE_VALID|SSD_CURRENT_ERROR|SSD_KEY_UNIT_ATTENTION;
- atio->sense_data.add_sense_code = 0x28;
- atio->sense_data.add_sense_code_qual = 0x0;
- atio->sense_len = sizeof (atio->sense_data);
+ SDFIXED(atio->sense_data)->error_code = SSD_ERRCODE_VALID|SSD_CURRENT_ERROR|SSD_KEY_UNIT_ATTENTION;
+ SDFIXED(atio->sense_data)->add_sense_code = 0x28;
+ SDFIXED(atio->sense_data)->add_sense_code_qual = 0x0;
+ atio->sense_len = SSD_MIN_SIZE;
}
break;
case SYNCHRONIZE_CACHE:
@@ -3315,10 +3315,10 @@ isptargstart(struct cam_periph *periph, union ccb *iccb)
flags |= CAM_DIR_IN;
if (cdb[2] || cdb[3] || cdb[4] || cdb[5]) {
status = SCSI_STATUS_CHECK_COND;
- atio->sense_data.error_code = SSD_ERRCODE_VALID|SSD_CURRENT_ERROR|SSD_KEY_UNIT_ATTENTION;
- atio->sense_data.add_sense_code = 0x5;
- atio->sense_data.add_sense_code_qual = 0x24;
- atio->sense_len = sizeof (atio->sense_data);
+ SDFIXED(atio->sense_data)->error_code = SSD_ERRCODE_VALID|SSD_CURRENT_ERROR|SSD_KEY_UNIT_ATTENTION;
+ SDFIXED(atio->sense_data)->add_sense_code = 0x5;
+ SDFIXED(atio->sense_data)->add_sense_code_qual = 0x24;
+ atio->sense_len = SSD_MIN_SIZE;
break;
}
if (cdb[8] & 0x1) { /* PMI */
@@ -3369,10 +3369,10 @@ isptargstart(struct cam_periph *periph, union ccb *iccb)
default:
flags |= CAM_DIR_NONE;
status = SCSI_STATUS_CHECK_COND;
- atio->sense_data.error_code = SSD_ERRCODE_VALID|SSD_CURRENT_ERROR|SSD_KEY_UNIT_ATTENTION;
- atio->sense_data.add_sense_code = 0x5;
- atio->sense_data.add_sense_code_qual = 0x20;
- atio->sense_len = sizeof (atio->sense_data);
+ SDFIXED(atio->sense_data)->error_code = SSD_ERRCODE_VALID|SSD_CURRENT_ERROR|SSD_KEY_UNIT_ATTENTION;
+ SDFIXED(atio->sense_data)->add_sense_code = 0x5;
+ SDFIXED(atio->sense_data)->add_sense_code_qual = 0x20;
+ atio->sense_len = SSD_MIN_SIZE;
break;
}
diff --git a/sys/dev/isp/isp_freebsd.h b/sys/dev/isp/isp_freebsd.h
index 0875e6419df64..d54defa99b661 100644
--- a/sys/dev/isp/isp_freebsd.h
+++ b/sys/dev/isp/isp_freebsd.h
@@ -76,6 +76,13 @@
#define ISP_IFLAGS INTR_TYPE_CAM | INTR_ENTROPY | INTR_MPSAFE
#ifdef ISP_TARGET_MODE
+/* Not quite right, but there was no bump for this change */
+#if __FreeBSD_version < 225469
+#define SDFIXED(x) (&x)
+#else
+#define SDFIXED(x) ((struct scsi_sense_data_fixed *)(&x))
+#endif
+
#define ISP_TARGET_FUNCTIONS 1
#define ATPDPSIZE 4096