diff options
author | Scott Long <scottl@FreeBSD.org> | 2013-09-25 15:55:56 +0000 |
---|---|---|
committer | Scott Long <scottl@FreeBSD.org> | 2013-09-25 15:55:56 +0000 |
commit | f564de00f794fb33bf22a8c4fba818a8bee8a71e (patch) | |
tree | 9a78df2c62172d1d88764bd09a66b3946c768f72 /sys/cam/cam_ccb.h | |
parent | 35e3d367a614f70b62bb5953bc7cbcd9a7c7b4ed (diff) | |
download | src-test2-f564de00f794fb33bf22a8c4fba818a8bee8a71e.tar.gz src-test2-f564de00f794fb33bf22a8c4fba818a8bee8a71e.zip |
Notes
Diffstat (limited to 'sys/cam/cam_ccb.h')
-rw-r--r-- | sys/cam/cam_ccb.h | 29 |
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]; |