aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/mps
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/mps')
-rw-r--r--sys/dev/mps/mps_sas.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/sys/dev/mps/mps_sas.c b/sys/dev/mps/mps_sas.c
index 40d2dbb40fae..4bc78728cdd2 100644
--- a/sys/dev/mps/mps_sas.c
+++ b/sys/dev/mps/mps_sas.c
@@ -3231,8 +3231,19 @@ mpssas_async(void *callback_arg, uint32_t code, struct cam_path *path,
if ((mpssas_get_ccbstatus((union ccb *)&cdai) == CAM_REQ_CMP)
&& (rcap_buf.prot & SRC16_PROT_EN)) {
- lun->eedp_formatted = TRUE;
- lun->eedp_block_size = scsi_4btoul(rcap_buf.length);
+ switch (rcap_buf.prot & SRC16_P_TYPE) {
+ case SRC16_PTYPE_1:
+ case SRC16_PTYPE_3:
+ lun->eedp_formatted = TRUE;
+ lun->eedp_block_size =
+ scsi_4btoul(rcap_buf.length);
+ break;
+ case SRC16_PTYPE_2:
+ default:
+ lun->eedp_formatted = FALSE;
+ lun->eedp_block_size = 0;
+ break;
+ }
} else {
lun->eedp_formatted = FALSE;
lun->eedp_block_size = 0;