summaryrefslogtreecommitdiff
path: root/sys/cam/cam_ccb.h
diff options
context:
space:
mode:
authorScott Long <scottl@FreeBSD.org>2013-09-25 15:55:56 +0000
committerScott Long <scottl@FreeBSD.org>2013-09-25 15:55:56 +0000
commitf564de00f794fb33bf22a8c4fba818a8bee8a71e (patch)
tree9a78df2c62172d1d88764bd09a66b3946c768f72 /sys/cam/cam_ccb.h
parent35e3d367a614f70b62bb5953bc7cbcd9a7c7b4ed (diff)
downloadsrc-test2-f564de00f794fb33bf22a8c4fba818a8bee8a71e.tar.gz
src-test2-f564de00f794fb33bf22a8c4fba818a8bee8a71e.zip
Notes
Diffstat (limited to 'sys/cam/cam_ccb.h')
-rw-r--r--sys/cam/cam_ccb.h29
1 files changed, 19 insertions, 10 deletions
diff --git a/sys/cam/cam_ccb.h b/sys/cam/cam_ccb.h
index 401206814c60..c1dd5f4a3cc7 100644
--- a/sys/cam/cam_ccb.h
+++ b/sys/cam/cam_ccb.h
@@ -107,6 +107,10 @@ typedef enum {
CAM_SEND_STATUS = 0x40000000 /* Send status after data phase */
} ccb_flags;
+typedef enum {
+ CAM_EXTLUN_VALID = 0x00000001,/* 64bit lun field is valid */
+} ccb_xflags;
+
/* XPT Opcodes for xpt_action */
typedef enum {
/* Function code flags are bits greater than 0xff */
@@ -296,6 +300,12 @@ typedef union {
u_int8_t bytes[CCB_SIM_PRIV_SIZE * sizeof(ccb_priv_entry)];
} ccb_spriv_area;
+typedef struct {
+ struct timeval *etime;
+ uintptr_t sim_data;
+ uintptr_t periph_data;
+} ccb_qos_area;
+
struct ccb_hdr {
cam_pinfo pinfo; /* Info for priority scheduling */
camq_entry xpt_links; /* For chaining in the XPT layer */
@@ -310,16 +320,14 @@ struct ccb_hdr {
path_id_t path_id; /* Path ID for the request */
target_id_t target_id; /* Target device ID */
lun_id_t target_lun; /* Target LUN number */
+ lun64_id_t ext_lun; /* 64bit extended/multi-level LUNs */
u_int32_t flags; /* ccb_flags */
+ u_int32_t xflags; /* Extended flags */
ccb_ppriv_area periph_priv;
ccb_spriv_area sim_priv;
- u_int32_t timeout; /* Timeout value */
-
- /*
- * Deprecated, only for use by non-MPSAFE SIMs. All others must
- * allocate and initialize their own callout storage.
- */
- struct callout_handle timeout_ch;
+ ccb_qos_area qos;
+ u_int32_t timeout; /* Hard timeout value in mseconds */
+ struct timeval softtimeout; /* Soft timeout value in sec + usec */
};
/* Get Device Information CCB */
@@ -541,7 +549,7 @@ struct ccb_dev_match {
/*
* Definitions for the path inquiry CCB fields.
*/
-#define CAM_VERSION 0x17 /* Hex value for current version */
+#define CAM_VERSION 0x18 /* Hex value for current version */
typedef enum {
PI_MDP_ABLE = 0x80, /* Supports MDP message */
@@ -564,6 +572,7 @@ typedef enum {
} pi_tmflag;
typedef enum {
+ PIM_EXTLUNS = 0x100,/* 64bit extended LUNs supported */
PIM_SCANHILO = 0x80, /* Bus scans from high ID to low ID */
PIM_NOREMOVE = 0x40, /* Removeable devices not included in scan */
PIM_NOINITIATOR = 0x20, /* Initiator role not supported. */
@@ -595,8 +604,8 @@ struct ccb_pathinq {
struct ccb_hdr ccb_h;
u_int8_t version_num; /* Version number for the SIM/HBA */
u_int8_t hba_inquiry; /* Mimic of INQ byte 7 for the HBA */
- u_int8_t target_sprt; /* Flags for target mode support */
- u_int8_t hba_misc; /* Misc HBA features */
+ u_int16_t target_sprt; /* Flags for target mode support */
+ u_int32_t hba_misc; /* Misc HBA features */
u_int16_t hba_eng_cnt; /* HBA engine count */
/* Vendor Unique capabilities */
u_int8_t vuhba_flags[VUHBALEN];