FreeBSD kernel CAM code
cam_ccb.h File Reference
#include <sys/queue.h>
#include <sys/cdefs.h>
#include <sys/time.h>
#include <sys/limits.h>
#include <cam/cam_debug.h>
#include <cam/scsi/scsi_all.h>
#include <cam/ata/ata_all.h>
#include <cam/nvme/nvme_all.h>
#include <cam/mmc/mmc_all.h>
#include <cam/mmc/mmc_bus.h>
Include dependency graph for cam_ccb.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

union  camq_entry
 
union  ccb_priv_entry
 
union  ccb_ppriv_area
 
union  ccb_spriv_area
 
struct  ccb_qos_area
 
struct  ccb_hdr
 
struct  ccb_getdev
 
struct  ccb_getdevstats
 
struct  ccb_getdevlist
 
struct  periph_match_pattern
 
struct  device_id_match_pattern
 
struct  device_match_pattern
 
struct  bus_match_pattern
 
union  match_pattern
 
struct  dev_match_pattern
 
struct  periph_match_result
 
struct  device_match_result
 
struct  bus_match_result
 
union  match_result
 
struct  dev_match_result
 
struct  ccb_dm_cookie
 
struct  ccb_dev_position
 
struct  ccb_dev_match
 
struct  ccb_pathinq_settings_spi
 
struct  ccb_pathinq_settings_fc
 
struct  ccb_pathinq_settings_sas
 
struct  ccb_pathinq_settings_nvme
 
struct  ccb_pathinq
 
struct  ccb_pathstats
 
struct  ccb_smpio
 
union  sense_t
 
union  cdb_t
 
struct  ccb_scsiio
 
struct  ccb_ataio
 
struct  ccb_mmcio
 
struct  ccb_accept_tio
 
struct  ccb_relsim
 
struct  ccb_nvmeio
 
struct  ac_contract
 
struct  ac_device_changed
 
struct  ccb_setasync
 
struct  ccb_setdev
 
struct  ccb_abort
 
struct  ccb_resetbus
 
struct  ccb_resetdev
 
struct  ccb_termio
 
struct  ccb_trans_settings_scsi
 
struct  ccb_trans_settings_ata
 
struct  ccb_trans_settings_spi
 
struct  ccb_trans_settings_fc
 
struct  ccb_trans_settings_sas
 
struct  ccb_trans_settings_pata
 
struct  ccb_trans_settings_sata
 
struct  ccb_trans_settings_nvme
 
struct  ccb_trans_settings_mmc
 
struct  ccb_trans_settings
 
struct  ccb_calc_geometry
 
struct  ccb_sim_knob_settings_spi
 
struct  ccb_sim_knob_settings_fc
 
struct  ccb_sim_knob_settings_sas
 
struct  ccb_sim_knob
 
struct  ccb_rescan
 
struct  ccb_debug
 
struct  ccb_en_lun
 
struct  ccb_immed_notify
 
struct  ccb_notify_ack
 
struct  ccb_immediate_notify
 
struct  ccb_notify_acknowledge
 
struct  ccb_eng_inq
 
struct  ccb_eng_exec
 
struct  ccb_dev_advinfo
 
struct  ccb_async
 
union  ccb
 

Macros

#define IOCDBLEN   CAM_MAX_CDBLEN /* Space for CDB bytes/pointer */
 
#define VUHBALEN   14 /* Vendor Unique HBA length */
 
#define SIM_IDLEN   16 /* ASCII string len for SIM ID */
 
#define HBA_IDLEN   16 /* ASCII string len for HBA ID */
 
#define DEV_IDLEN   16 /* ASCII string len for device names */
 
#define CCB_PERIPH_PRIV_SIZE   2 /* size of peripheral private area */
 
#define CCB_SIM_PRIV_SIZE   2 /* size of sim private area */
 
#define XPT_FC_GROUP_MASK   0xF0
 
#define XPT_FC_GROUP(op)   ((op) & XPT_FC_GROUP_MASK)
 
#define XPT_FC_GROUP_COMMON   0x00
 
#define XPT_FC_GROUP_SCSI_CONTROL   0x10
 
#define XPT_FC_GROUP_HBA_ENGINE   0x20
 
#define XPT_FC_GROUP_TMODE   0x30
 
#define XPT_FC_GROUP_VENDOR_UNIQUE   0x80
 
#define XPT_FC_IS_DEV_QUEUED(ccb)    (((ccb)->ccb_h.func_code & XPT_FC_DEV_QUEUED) == XPT_FC_DEV_QUEUED)
 
#define XPT_FC_IS_QUEUED(ccb)    (((ccb)->ccb_h.func_code & XPT_FC_QUEUED) != 0)
 
#define XPORT_IS_NVME(t)   ((t) == XPORT_NVME)
 
#define XPORT_IS_ATA(t)   ((t) == XPORT_ATA || (t) == XPORT_SATA)
 
#define XPORT_IS_SCSI(t)
 
#define XPORT_DEVSTAT_TYPE(t)
 
#define PROTO_VERSION_UNKNOWN   (UINT_MAX - 1)
 
#define PROTO_VERSION_UNSPECIFIED   UINT_MAX
 
#define XPORT_VERSION_UNKNOWN   (UINT_MAX - 1)
 
#define XPORT_VERSION_UNSPECIFIED   UINT_MAX
 
#define CAM_BUS_GENERATION   0x00
 
#define CAM_TARGET_GENERATION   0x01
 
#define CAM_DEV_GENERATION   0x02
 
#define CAM_PERIPH_GENERATION   0x03
 
#define CAM_VERSION   0x1a /* Hex value for current version */
 
#define NVME_DEV_NAME_LEN   52
 
#define PATHINQ_SETTINGS_SIZE   128
 
#define CAM_TAG_ACTION_NONE   0x00
 
#define ATA_FLAG_AUX   0x1
 
#define ATA_FLAG_ICC   0x2
 
#define RELSIM_ADJUST_OPENINGS   0x01
 
#define RELSIM_RELEASE_AFTER_TIMEOUT   0x02
 
#define RELSIM_RELEASE_AFTER_CMDCMPLT   0x04
 
#define RELSIM_RELEASE_AFTER_QEMPTY   0x08
 
#define AC_CONTRACT_DATA_MAX   (128 - sizeof (u_int64_t))
 
#define AC_CONTRACT_DEV_CHG   1
 
#define CTS_SCSI_VALID_TQ   0x01
 
#define CTS_SCSI_FLAGS_TAG_ENB   0x01
 
#define CTS_ATA_VALID_TQ   0x01
 
#define CTS_ATA_FLAGS_TAG_ENB   0x01
 
#define CTS_SPI_VALID_SYNC_RATE   0x01
 
#define CTS_SPI_VALID_SYNC_OFFSET   0x02
 
#define CTS_SPI_VALID_BUS_WIDTH   0x04
 
#define CTS_SPI_VALID_DISC   0x08
 
#define CTS_SPI_VALID_PPR_OPTIONS   0x10
 
#define CTS_SPI_FLAGS_DISC_ENB   0x01
 
#define CTS_FC_VALID_WWNN   0x8000
 
#define CTS_FC_VALID_WWPN   0x4000
 
#define CTS_FC_VALID_PORT   0x2000
 
#define CTS_FC_VALID_SPEED   0x1000
 
#define CTS_SAS_VALID_SPEED   0x1000
 
#define CTS_ATA_VALID_MODE   0x01
 
#define CTS_ATA_VALID_BYTECOUNT   0x02
 
#define CTS_ATA_VALID_ATAPI   0x20
 
#define CTS_ATA_VALID_CAPS   0x40
 
#define CTS_ATA_CAPS_H   0x0000ffff
 
#define CTS_ATA_CAPS_H_DMA48   0x00000001 /* 48-bit DMA */
 
#define CTS_ATA_CAPS_D   0xffff0000
 
#define CTS_SATA_VALID_MODE   0x01
 
#define CTS_SATA_VALID_BYTECOUNT   0x02
 
#define CTS_SATA_VALID_REVISION   0x04
 
#define CTS_SATA_VALID_PM   0x08
 
#define CTS_SATA_VALID_TAGS   0x10
 
#define CTS_SATA_VALID_ATAPI   0x20
 
#define CTS_SATA_VALID_CAPS   0x40
 
#define CTS_SATA_CAPS_H   0x0000ffff
 
#define CTS_SATA_CAPS_H_PMREQ   0x00000001
 
#define CTS_SATA_CAPS_H_APST   0x00000002
 
#define CTS_SATA_CAPS_H_DMAAA   0x00000010 /* Auto-activation */
 
#define CTS_SATA_CAPS_H_AN   0x00000020 /* Async. notification */
 
#define CTS_SATA_CAPS_D   0xffff0000
 
#define CTS_SATA_CAPS_D_PMREQ   0x00010000
 
#define CTS_SATA_CAPS_D_APST   0x00020000
 
#define CTS_NVME_VALID_SPEC   0x01
 
#define CTS_NVME_VALID_CAPS   0x02
 
#define CTS_NVME_VALID_LINK   0x04
 
#define MMC_CLK   (1 << 1)
 
#define MMC_VDD   (1 << 2)
 
#define MMC_CS   (1 << 3)
 
#define MMC_BW   (1 << 4)
 
#define MMC_PM   (1 << 5)
 
#define MMC_BT   (1 << 6)
 
#define MMC_BM   (1 << 7)
 
#define MMC_VCCQ   (1 << 8)
 
#define MMC_CAP_4_BIT_DATA   (1 << 0) /* Can do 4-bit data transfers */
 
#define MMC_CAP_8_BIT_DATA   (1 << 1) /* Can do 8-bit data transfers */
 
#define MMC_CAP_HSPEED   (1 << 2) /* Can do High Speed transfers */
 
#define MMC_CAP_BOOT_NOACC   (1 << 4) /* Cannot access boot partitions */
 
#define MMC_CAP_WAIT_WHILE_BUSY   (1 << 5) /* Host waits for busy responses */
 
#define MMC_CAP_UHS_SDR12   (1 << 6) /* Can do UHS SDR12 */
 
#define MMC_CAP_UHS_SDR25   (1 << 7) /* Can do UHS SDR25 */
 
#define MMC_CAP_UHS_SDR50   (1 << 8) /* Can do UHS SDR50 */
 
#define MMC_CAP_UHS_SDR104   (1 << 9) /* Can do UHS SDR104 */
 
#define MMC_CAP_UHS_DDR50   (1 << 10) /* Can do UHS DDR50 */
 
#define MMC_CAP_MMC_DDR52_120   (1 << 11) /* Can do eMMC DDR52 at 1.2 V */
 
#define MMC_CAP_MMC_DDR52_180   (1 << 12) /* Can do eMMC DDR52 at 1.8 V */
 
#define MMC_CAP_MMC_DDR52   (MMC_CAP_MMC_DDR52_120 | MMC_CAP_MMC_DDR52_180)
 
#define MMC_CAP_MMC_HS200_120   (1 << 13) /* Can do eMMC HS200 at 1.2 V */
 
#define MMC_CAP_MMC_HS200_180   (1 << 14) /* Can do eMMC HS200 at 1.8 V */
 
#define MMC_CAP_MMC_HS200   (MMC_CAP_MMC_HS200_120| MMC_CAP_MMC_HS200_180)
 
#define MMC_CAP_MMC_HS400_120   (1 << 15) /* Can do eMMC HS400 at 1.2 V */
 
#define MMC_CAP_MMC_HS400_180   (1 << 16) /* Can do eMMC HS400 at 1.8 V */
 
#define MMC_CAP_MMC_HS400   (MMC_CAP_MMC_HS400_120 | MMC_CAP_MMC_HS400_180)
 
#define MMC_CAP_MMC_HSX00_120   (MMC_CAP_MMC_HS200_120 | MMC_CAP_MMC_HS400_120)
 
#define MMC_CAP_MMC_ENH_STROBE   (1 << 17) /* Can do eMMC Enhanced Strobe */
 
#define MMC_CAP_SIGNALING_120   (1 << 18) /* Can do signaling at 1.2 V */
 
#define MMC_CAP_SIGNALING_180   (1 << 19) /* Can do signaling at 1.8 V */
 
#define MMC_CAP_SIGNALING_330   (1 << 20) /* Can do signaling at 3.3 V */
 
#define MMC_CAP_DRIVER_TYPE_A   (1 << 21) /* Can do Driver Type A */
 
#define MMC_CAP_DRIVER_TYPE_C   (1 << 22) /* Can do Driver Type C */
 
#define MMC_CAP_DRIVER_TYPE_D   (1 << 23) /* Can do Driver Type D */
 
#define KNOB_VALID_ADDRESS   0x1
 
#define KNOB_VALID_ROLE   0x2
 
#define KNOB_ROLE_NONE   0x0
 
#define KNOB_ROLE_INITIATOR   0x1
 
#define KNOB_ROLE_TARGET   0x2
 
#define KNOB_ROLE_BOTH   0x3
 
#define KNOB_SETTINGS_SIZE   128
 
#define CAM_RSP_TMF_COMPLETE   0x00
 
#define CAM_RSP_TMF_REJECTED   0x04
 
#define CAM_RSP_TMF_FAILED   0x05
 
#define CAM_RSP_TMF_SUCCEEDED   0x08
 
#define CAM_RSP_TMF_INCORRECT_LUN   0x09
 
#define CAM_TIME_DEFAULT   0x00000000 /* Use SIM default value */
 
#define CAM_TIME_INFINITY   0xFFFFFFFF /* Infinite timeout */
 
#define CAM_SUCCESS   0 /* For signaling general success */
 
#define XPT_CCB_INVALID   -1 /* for signaling a bad CCB to free */
 
#define CDAI_FLAG_NONE   0x0 /* No flags set */
 
#define CDAI_FLAG_STORE   0x1 /* If set, action becomes store */
 
#define CDAI_TYPE_SCSI_DEVID   1
 
#define CDAI_TYPE_SERIAL_NUM   2
 
#define CDAI_TYPE_PHYS_PATH   3
 
#define CDAI_TYPE_RCAPLONG   4
 
#define CDAI_TYPE_EXT_INQ   5
 
#define CDAI_TYPE_NVME_CNTRL   6 /* NVMe Identify Controller data */
 
#define CDAI_TYPE_NVME_NS   7 /* NVMe Identify Namespace data */
 
#define CDAI_TYPE_MMC_PARAMS   8 /* MMC/SD ident */
 
#define CAM_SCSI_DEVID_MAXLEN   65536 /* length in buffer is an uint16_t */
 
#define CCB_CLEAR_ALL_EXCEPT_HDR(ccbp)
 

Typedefs

typedef void ac_callback_t(void *softc, u_int32_t code, struct cam_path *path, void *args)
 

Enumerations

enum  ccb_alloc_flags { CAM_CCB_FROM_UMA = 0x00000001 }
 
enum  ccb_flags {
  CAM_CDB_POINTER = 0x00000001 , CAM_unused1 = 0x00000002 , CAM_unused2 = 0x00000004 , CAM_NEGOTIATE = 0x00000008 ,
  CAM_DATA_ISPHYS = 0x00000010 , CAM_DIS_AUTOSENSE = 0x00000020 , CAM_DIR_BOTH = 0x00000000 , CAM_DIR_IN = 0x00000040 ,
  CAM_DIR_OUT = 0x00000080 , CAM_DIR_NONE = 0x000000C0 , CAM_DIR_MASK = 0x000000C0 , CAM_DATA_VADDR = 0x00000000 ,
  CAM_DATA_PADDR = 0x00000010 , CAM_DATA_SG = 0x00040000 , CAM_DATA_SG_PADDR = 0x00040010 , CAM_DATA_BIO = 0x00200000 ,
  CAM_DATA_MASK = 0x00240010 , CAM_unused3 = 0x00000100 , CAM_unused4 = 0x00000200 , CAM_DEV_QFRZDIS = 0x00000400 ,
  CAM_DEV_QFREEZE = 0x00000800 , CAM_HIGH_POWER = 0x00001000 , CAM_SENSE_PTR = 0x00002000 , CAM_SENSE_PHYS = 0x00004000 ,
  CAM_TAG_ACTION_VALID = 0x00008000 , CAM_PASS_ERR_RECOVER = 0x00010000 , CAM_DIS_DISCONNECT = 0x00020000 , CAM_unused5 = 0x00080000 ,
  CAM_unused6 = 0x00100000 , CAM_CDB_PHYS = 0x00400000 , CAM_unused7 = 0x00800000 , CAM_unused8 = 0x01000000 ,
  CAM_unused9 = 0x02000000 , CAM_unused10 = 0x04000000 , CAM_unused11 = 0x08000000 , CAM_unused12 = 0x10000000 ,
  CAM_unused13 = 0x20000000 , CAM_unused14 = 0x40000000 , CAM_SEND_SENSE = 0x08000000 , CAM_unused15 = 0x10000000 ,
  CAM_unused16 = 0x20000000 , CAM_SEND_STATUS = 0x40000000 , CAM_UNLOCKED = 0x80000000
}
 
enum  ccb_xflags { CAM_USER_DATA_ADDR = 0x00000002 , CAM_SG_FORMAT_IOVEC = 0x00000004 , CAM_UNMAPPED_BUF = 0x00000008 }
 
enum  xpt_opcode {
  XPT_FC_QUEUED = 0x100 , XPT_FC_USER_CCB = 0x200 , XPT_FC_XPT_ONLY = 0x400 , XPT_FC_DEV_QUEUED = 0x800 | XPT_FC_QUEUED ,
  XPT_NOOP = 0x00 , XPT_SCSI_IO = 0x01 | XPT_FC_DEV_QUEUED , XPT_GDEV_TYPE = 0x02 , XPT_GDEVLIST = 0x03 ,
  XPT_PATH_INQ = 0x04 , XPT_REL_SIMQ = 0x05 , XPT_SASYNC_CB = 0x06 , XPT_SDEV_TYPE = 0x07 ,
  XPT_SCAN_BUS , XPT_DEV_MATCH = 0x09 | XPT_FC_XPT_ONLY , XPT_DEBUG = 0x0a , XPT_PATH_STATS = 0x0b ,
  XPT_GDEV_STATS = 0x0c , XPT_DEV_ADVINFO = 0x0e , XPT_ASYNC , XPT_ABORT = 0x10 ,
  XPT_RESET_BUS = 0x11 | XPT_FC_XPT_ONLY , XPT_RESET_DEV = 0x12 | XPT_FC_DEV_QUEUED , XPT_TERM_IO = 0x13 , XPT_SCAN_LUN ,
  XPT_GET_TRAN_SETTINGS = 0x15 , XPT_SET_TRAN_SETTINGS = 0x16 , XPT_CALC_GEOMETRY = 0x17 , XPT_ATA_IO = 0x18 | XPT_FC_DEV_QUEUED ,
  XPT_GET_SIM_KNOB_OLD = 0x18 , XPT_SET_SIM_KNOB = 0x19 , XPT_GET_SIM_KNOB = 0x1a , XPT_SMP_IO = 0x1b | XPT_FC_DEV_QUEUED ,
  XPT_NVME_IO = 0x1c | XPT_FC_DEV_QUEUED , XPT_MMC_IO = 0x1d | XPT_FC_DEV_QUEUED , XPT_SCAN_TGT , XPT_NVME_ADMIN = 0x1f | XPT_FC_DEV_QUEUED ,
  XPT_ENG_INQ = 0x20 | XPT_FC_XPT_ONLY , XPT_ENG_EXEC = 0x21 | XPT_FC_DEV_QUEUED , XPT_EN_LUN = 0x30 , XPT_TARGET_IO = 0x31 | XPT_FC_DEV_QUEUED ,
  XPT_ACCEPT_TARGET_IO = 0x32 | XPT_FC_QUEUED | XPT_FC_USER_CCB , XPT_CONT_TARGET_IO = 0x33 | XPT_FC_DEV_QUEUED , XPT_IMMED_NOTIFY = 0x34 | XPT_FC_QUEUED | XPT_FC_USER_CCB , XPT_NOTIFY_ACK = 0x35 ,
  XPT_IMMEDIATE_NOTIFY = 0x36 | XPT_FC_QUEUED | XPT_FC_USER_CCB , XPT_NOTIFY_ACKNOWLEDGE = 0x37 | XPT_FC_QUEUED | XPT_FC_USER_CCB , XPT_REPROBE_LUN = 0x38 | XPT_FC_QUEUED | XPT_FC_USER_CCB , XPT_MMC_SET_TRAN_SETTINGS = 0x40 | XPT_FC_DEV_QUEUED ,
  XPT_MMC_GET_TRAN_SETTINGS = 0x41 | XPT_FC_DEV_QUEUED , XPT_VUNIQUE = 0x80
}
 
enum  cam_proto {
  PROTO_UNKNOWN , PROTO_UNSPECIFIED , PROTO_SCSI , PROTO_ATA ,
  PROTO_ATAPI , PROTO_SATAPM , PROTO_SEMB , PROTO_NVME ,
  PROTO_MMCSD
}
 
enum  cam_xport {
  XPORT_UNKNOWN , XPORT_UNSPECIFIED , XPORT_SPI , XPORT_FC ,
  XPORT_SSA , XPORT_USB , XPORT_PPB , XPORT_ATA ,
  XPORT_SAS , XPORT_SATA , XPORT_ISCSI , XPORT_SRP ,
  XPORT_NVME , XPORT_MMCSD
}
 
enum  ccb_getdevlist_status_e { CAM_GDEVLIST_LAST_DEVICE , CAM_GDEVLIST_LIST_CHANGED , CAM_GDEVLIST_MORE_DEVS , CAM_GDEVLIST_ERROR }
 
enum  periph_pattern_flags {
  PERIPH_MATCH_ANY = 0x000 , PERIPH_MATCH_PATH = 0x001 , PERIPH_MATCH_TARGET = 0x002 , PERIPH_MATCH_LUN = 0x004 ,
  PERIPH_MATCH_NAME = 0x008 , PERIPH_MATCH_UNIT = 0x010
}
 
enum  dev_pattern_flags {
  DEV_MATCH_ANY = 0x000 , DEV_MATCH_PATH = 0x001 , DEV_MATCH_TARGET = 0x002 , DEV_MATCH_LUN = 0x004 ,
  DEV_MATCH_INQUIRY = 0x008 , DEV_MATCH_DEVID = 0x010
}
 
enum  bus_pattern_flags {
  BUS_MATCH_ANY = 0x000 , BUS_MATCH_PATH = 0x001 , BUS_MATCH_NAME = 0x002 , BUS_MATCH_UNIT = 0x004 ,
  BUS_MATCH_BUS_ID = 0x008
}
 
enum  dev_match_type { DEV_MATCH_PERIPH , DEV_MATCH_DEVICE , DEV_MATCH_BUS }
 
enum  dev_result_flags { DEV_RESULT_NOFLAG = 0x00 , DEV_RESULT_UNCONFIGURED = 0x01 }
 
enum  ccb_dev_match_status {
  CAM_DEV_MATCH_LAST , CAM_DEV_MATCH_MORE , CAM_DEV_MATCH_LIST_CHANGED , CAM_DEV_MATCH_SIZE_ERROR ,
  CAM_DEV_MATCH_ERROR
}
 
enum  dev_pos_type {
  CAM_DEV_POS_NONE = 0x000 , CAM_DEV_POS_BUS = 0x001 , CAM_DEV_POS_TARGET = 0x002 , CAM_DEV_POS_DEVICE = 0x004 ,
  CAM_DEV_POS_PERIPH = 0x008 , CAM_DEV_POS_PDPTR = 0x010 , CAM_DEV_POS_TYPEMASK = 0xf00 , CAM_DEV_POS_EDT = 0x100 ,
  CAM_DEV_POS_PDRV = 0x200
}
 
enum  pi_inqflag {
  PI_MDP_ABLE = 0x80 , PI_WIDE_32 = 0x40 , PI_WIDE_16 = 0x20 , PI_SDTR_ABLE = 0x10 ,
  PI_LINKED_CDB = 0x08 , PI_SATAPM = 0x04 , PI_TAG_ABLE = 0x02 , PI_SOFT_RST = 0x01
}
 
enum  pi_tmflag {
  PIT_PROCESSOR = 0x80 , PIT_PHASE = 0x40 , PIT_DISCONNECT = 0x20 , PIT_TERM_IO = 0x10 ,
  PIT_GRP_6 = 0x08 , PIT_GRP_7 = 0x04
}
 
enum  pi_miscflag {
  PIM_ATA_EXT = 0x200 , PIM_EXTLUNS = 0x100 , PIM_SCANHILO = 0x80 , PIM_NOREMOVE = 0x40 ,
  PIM_NOINITIATOR = 0x20 , PIM_NOBUSRESET = 0x10 , PIM_NO_6_BYTE = 0x08 , PIM_SEQSCAN = 0x04 ,
  PIM_UNMAPPED = 0x02 , PIM_NOSCAN = 0x01
}
 
enum  ccb_smp_pass_flags { SMP_FLAG_NONE = 0x00 , SMP_FLAG_REQ_SG = 0x01 , SMP_FLAG_RSP_SG = 0x02 }
 
enum  ac_code {
  AC_UNIT_ATTENTION = 0x4000 , AC_ADVINFO_CHANGED = 0x2000 , AC_CONTRACT = 0x1000 , AC_GETDEV_CHANGED = 0x800 ,
  AC_INQ_CHANGED = 0x400 , AC_TRANSFER_NEG = 0x200 , AC_LOST_DEVICE = 0x100 , AC_FOUND_DEVICE = 0x080 ,
  AC_PATH_DEREGISTERED = 0x040 , AC_PATH_REGISTERED = 0x020 , AC_SENT_BDR = 0x010 , AC_SCSI_AEN = 0x008 ,
  AC_UNSOL_RESEL = 0x002 , AC_BUS_RESET = 0x001
}
 
enum  cts_type { CTS_TYPE_CURRENT_SETTINGS , CTS_TYPE_USER_SETTINGS }
 
enum  ei_type { EIT_BUFFER , EIT_LOSSLESS , EIT_LOSSY , EIT_ENCRYPT }
 
enum  ei_algo { EAD_VUNIQUE , EAD_LZ1V1 , EAD_LZ2V1 , EAD_LZ2V2 }
 

Functions

 _Static_assert (sizeof(struct ccb_pathinq_settings_nvme)==64, "ccb_pathinq_settings_nvme too big")
 
static __inline uint8_t * scsiio_cdb_ptr (struct ccb_scsiio *ccb)
 
static __inline uint8_t * atio_cdb_ptr (struct ccb_accept_tio *ccb)
 
static __BEGIN_DECLS __inline void cam_fill_csio (struct ccb_scsiio *csio, u_int32_t retries, void(*cbfcnp)(struct cam_periph *, union ccb *), u_int32_t flags, u_int8_t tag_action, u_int8_t *data_ptr, u_int32_t dxfer_len, u_int8_t sense_len, u_int8_t cdb_len, u_int32_t timeout)
 
static __inline void cam_fill_ctio (struct ccb_scsiio *csio, u_int32_t retries, void(*cbfcnp)(struct cam_periph *, union ccb *), u_int32_t flags, u_int tag_action, u_int tag_id, u_int init_id, u_int scsi_status, u_int8_t *data_ptr, u_int32_t dxfer_len, u_int32_t timeout)
 
static __inline void cam_fill_ataio (struct ccb_ataio *ataio, u_int32_t retries, void(*cbfcnp)(struct cam_periph *, union ccb *), u_int32_t flags, u_int tag_action __unused, u_int8_t *data_ptr, u_int32_t dxfer_len, u_int32_t timeout)
 
static __inline void cam_fill_smpio (struct ccb_smpio *smpio, uint32_t retries, void(*cbfcnp)(struct cam_periph *, union ccb *), uint32_t flags, uint8_t *smp_request, int smp_request_len, uint8_t *smp_response, int smp_response_len, uint32_t timeout)
 
static __inline void cam_fill_mmcio (struct ccb_mmcio *mmcio, uint32_t retries, void(*cbfcnp)(struct cam_periph *, union ccb *), uint32_t flags, uint32_t mmc_opcode, uint32_t mmc_arg, uint32_t mmc_flags, struct mmc_data *mmc_d, uint32_t timeout)
 
static __inline void cam_set_ccbstatus (union ccb *ccb, cam_status status)
 
static __inline cam_status cam_ccb_status (union ccb *ccb)
 
void cam_calc_geometry (struct ccb_calc_geometry *ccg, int extended)
 
static __inline void cam_fill_nvmeio (struct ccb_nvmeio *nvmeio, u_int32_t retries, void(*cbfcnp)(struct cam_periph *, union ccb *), u_int32_t flags, u_int8_t *data_ptr, u_int32_t dxfer_len, u_int32_t timeout)
 
static __inline void cam_fill_nvmeadmin (struct ccb_nvmeio *nvmeio, u_int32_t retries, void(*cbfcnp)(struct cam_periph *, union ccb *), u_int32_t flags, u_int8_t *data_ptr, u_int32_t dxfer_len, u_int32_t timeout)
 

Macro Definition Documentation

◆ AC_CONTRACT_DATA_MAX

#define AC_CONTRACT_DATA_MAX   (128 - sizeof (u_int64_t))

Definition at line 892 of file cam_ccb.h.

◆ AC_CONTRACT_DEV_CHG

#define AC_CONTRACT_DEV_CHG   1

Definition at line 898 of file cam_ccb.h.

◆ ATA_FLAG_AUX

#define ATA_FLAG_AUX   0x1

Definition at line 800 of file cam_ccb.h.

◆ ATA_FLAG_ICC

#define ATA_FLAG_ICC   0x2

Definition at line 801 of file cam_ccb.h.

◆ CAM_BUS_GENERATION

#define CAM_BUS_GENERATION   0x00

Definition at line 571 of file cam_ccb.h.

◆ CAM_DEV_GENERATION

#define CAM_DEV_GENERATION   0x02

Definition at line 573 of file cam_ccb.h.

◆ CAM_PERIPH_GENERATION

#define CAM_PERIPH_GENERATION   0x03

Definition at line 574 of file cam_ccb.h.

◆ CAM_RSP_TMF_COMPLETE

#define CAM_RSP_TMF_COMPLETE   0x00

Definition at line 1245 of file cam_ccb.h.

◆ CAM_RSP_TMF_FAILED

#define CAM_RSP_TMF_FAILED   0x05

Definition at line 1247 of file cam_ccb.h.

◆ CAM_RSP_TMF_INCORRECT_LUN

#define CAM_RSP_TMF_INCORRECT_LUN   0x09

Definition at line 1249 of file cam_ccb.h.

◆ CAM_RSP_TMF_REJECTED

#define CAM_RSP_TMF_REJECTED   0x04

Definition at line 1246 of file cam_ccb.h.

◆ CAM_RSP_TMF_SUCCEEDED

#define CAM_RSP_TMF_SUCCEEDED   0x08

Definition at line 1248 of file cam_ccb.h.

◆ CAM_SCSI_DEVID_MAXLEN

#define CAM_SCSI_DEVID_MAXLEN   65536 /* length in buffer is an uint16_t */

Definition at line 1324 of file cam_ccb.h.

◆ CAM_SUCCESS

#define CAM_SUCCESS   0 /* For signaling general success */

Definition at line 1298 of file cam_ccb.h.

◆ CAM_TAG_ACTION_NONE

#define CAM_TAG_ACTION_NONE   0x00

Definition at line 772 of file cam_ccb.h.

◆ CAM_TARGET_GENERATION

#define CAM_TARGET_GENERATION   0x01

Definition at line 572 of file cam_ccb.h.

◆ CAM_TIME_DEFAULT

#define CAM_TIME_DEFAULT   0x00000000 /* Use SIM default value */

Definition at line 1295 of file cam_ccb.h.

◆ CAM_TIME_INFINITY

#define CAM_TIME_INFINITY   0xFFFFFFFF /* Infinite timeout */

Definition at line 1296 of file cam_ccb.h.

◆ CAM_VERSION

#define CAM_VERSION   0x1a /* Hex value for current version */

Definition at line 594 of file cam_ccb.h.

◆ CCB_CLEAR_ALL_EXCEPT_HDR

#define CCB_CLEAR_ALL_EXCEPT_HDR (   ccbp)
Value:
bzero((char *)(ccbp) + sizeof((ccbp)->ccb_h), \
sizeof(*(ccbp)) - sizeof((ccbp)->ccb_h))

Definition at line 1383 of file cam_ccb.h.

◆ CCB_PERIPH_PRIV_SIZE

#define CCB_PERIPH_PRIV_SIZE   2 /* size of peripheral private area */

Definition at line 55 of file cam_ccb.h.

◆ CCB_SIM_PRIV_SIZE

#define CCB_SIM_PRIV_SIZE   2 /* size of sim private area */

Definition at line 56 of file cam_ccb.h.

◆ CDAI_FLAG_NONE

#define CDAI_FLAG_NONE   0x0 /* No flags set */

Definition at line 1311 of file cam_ccb.h.

◆ CDAI_FLAG_STORE

#define CDAI_FLAG_STORE   0x1 /* If set, action becomes store */

Definition at line 1312 of file cam_ccb.h.

◆ CDAI_TYPE_EXT_INQ

#define CDAI_TYPE_EXT_INQ   5

Definition at line 1319 of file cam_ccb.h.

◆ CDAI_TYPE_MMC_PARAMS

#define CDAI_TYPE_MMC_PARAMS   8 /* MMC/SD ident */

Definition at line 1322 of file cam_ccb.h.

◆ CDAI_TYPE_NVME_CNTRL

#define CDAI_TYPE_NVME_CNTRL   6 /* NVMe Identify Controller data */

Definition at line 1320 of file cam_ccb.h.

◆ CDAI_TYPE_NVME_NS

#define CDAI_TYPE_NVME_NS   7 /* NVMe Identify Namespace data */

Definition at line 1321 of file cam_ccb.h.

◆ CDAI_TYPE_PHYS_PATH

#define CDAI_TYPE_PHYS_PATH   3

Definition at line 1317 of file cam_ccb.h.

◆ CDAI_TYPE_RCAPLONG

#define CDAI_TYPE_RCAPLONG   4

Definition at line 1318 of file cam_ccb.h.

◆ CDAI_TYPE_SCSI_DEVID

#define CDAI_TYPE_SCSI_DEVID   1

Definition at line 1315 of file cam_ccb.h.

◆ CDAI_TYPE_SERIAL_NUM

#define CDAI_TYPE_SERIAL_NUM   2

Definition at line 1316 of file cam_ccb.h.

◆ CTS_ATA_CAPS_D

#define CTS_ATA_CAPS_D   0xffff0000

Definition at line 1011 of file cam_ccb.h.

◆ CTS_ATA_CAPS_H

#define CTS_ATA_CAPS_H   0x0000ffff

Definition at line 1009 of file cam_ccb.h.

◆ CTS_ATA_CAPS_H_DMA48

#define CTS_ATA_CAPS_H_DMA48   0x00000001 /* 48-bit DMA */

Definition at line 1010 of file cam_ccb.h.

◆ CTS_ATA_FLAGS_TAG_ENB

#define CTS_ATA_FLAGS_TAG_ENB   0x01

Definition at line 962 of file cam_ccb.h.

◆ CTS_ATA_VALID_ATAPI

#define CTS_ATA_VALID_ATAPI   0x20

Definition at line 1003 of file cam_ccb.h.

◆ CTS_ATA_VALID_BYTECOUNT

#define CTS_ATA_VALID_BYTECOUNT   0x02

Definition at line 1002 of file cam_ccb.h.

◆ CTS_ATA_VALID_CAPS

#define CTS_ATA_VALID_CAPS   0x40

Definition at line 1004 of file cam_ccb.h.

◆ CTS_ATA_VALID_MODE

#define CTS_ATA_VALID_MODE   0x01

Definition at line 1001 of file cam_ccb.h.

◆ CTS_ATA_VALID_TQ

#define CTS_ATA_VALID_TQ   0x01

Definition at line 960 of file cam_ccb.h.

◆ CTS_FC_VALID_PORT

#define CTS_FC_VALID_PORT   0x2000

Definition at line 985 of file cam_ccb.h.

◆ CTS_FC_VALID_SPEED

#define CTS_FC_VALID_SPEED   0x1000

Definition at line 986 of file cam_ccb.h.

◆ CTS_FC_VALID_WWNN

#define CTS_FC_VALID_WWNN   0x8000

Definition at line 983 of file cam_ccb.h.

◆ CTS_FC_VALID_WWPN

#define CTS_FC_VALID_WWPN   0x4000

Definition at line 984 of file cam_ccb.h.

◆ CTS_NVME_VALID_CAPS

#define CTS_NVME_VALID_CAPS   0x02

Definition at line 1044 of file cam_ccb.h.

◆ CTS_NVME_VALID_LINK

#define CTS_NVME_VALID_LINK   0x04

Definition at line 1045 of file cam_ccb.h.

◆ CTS_NVME_VALID_SPEC

#define CTS_NVME_VALID_SPEC   0x01

Definition at line 1043 of file cam_ccb.h.

◆ CTS_SAS_VALID_SPEED

#define CTS_SAS_VALID_SPEED   0x1000

Definition at line 995 of file cam_ccb.h.

◆ CTS_SATA_CAPS_D

#define CTS_SATA_CAPS_D   0xffff0000

Definition at line 1035 of file cam_ccb.h.

◆ CTS_SATA_CAPS_D_APST

#define CTS_SATA_CAPS_D_APST   0x00020000

Definition at line 1037 of file cam_ccb.h.

◆ CTS_SATA_CAPS_D_PMREQ

#define CTS_SATA_CAPS_D_PMREQ   0x00010000

Definition at line 1036 of file cam_ccb.h.

◆ CTS_SATA_CAPS_H

#define CTS_SATA_CAPS_H   0x0000ffff

Definition at line 1030 of file cam_ccb.h.

◆ CTS_SATA_CAPS_H_AN

#define CTS_SATA_CAPS_H_AN   0x00000020 /* Async. notification */

Definition at line 1034 of file cam_ccb.h.

◆ CTS_SATA_CAPS_H_APST

#define CTS_SATA_CAPS_H_APST   0x00000002

Definition at line 1032 of file cam_ccb.h.

◆ CTS_SATA_CAPS_H_DMAAA

#define CTS_SATA_CAPS_H_DMAAA   0x00000010 /* Auto-activation */

Definition at line 1033 of file cam_ccb.h.

◆ CTS_SATA_CAPS_H_PMREQ

#define CTS_SATA_CAPS_H_PMREQ   0x00000001

Definition at line 1031 of file cam_ccb.h.

◆ CTS_SATA_VALID_ATAPI

#define CTS_SATA_VALID_ATAPI   0x20

Definition at line 1021 of file cam_ccb.h.

◆ CTS_SATA_VALID_BYTECOUNT

#define CTS_SATA_VALID_BYTECOUNT   0x02

Definition at line 1017 of file cam_ccb.h.

◆ CTS_SATA_VALID_CAPS

#define CTS_SATA_VALID_CAPS   0x40

Definition at line 1022 of file cam_ccb.h.

◆ CTS_SATA_VALID_MODE

#define CTS_SATA_VALID_MODE   0x01

Definition at line 1016 of file cam_ccb.h.

◆ CTS_SATA_VALID_PM

#define CTS_SATA_VALID_PM   0x08

Definition at line 1019 of file cam_ccb.h.

◆ CTS_SATA_VALID_REVISION

#define CTS_SATA_VALID_REVISION   0x04

Definition at line 1018 of file cam_ccb.h.

◆ CTS_SATA_VALID_TAGS

#define CTS_SATA_VALID_TAGS   0x10

Definition at line 1020 of file cam_ccb.h.

◆ CTS_SCSI_FLAGS_TAG_ENB

#define CTS_SCSI_FLAGS_TAG_ENB   0x01

Definition at line 954 of file cam_ccb.h.

◆ CTS_SCSI_VALID_TQ

#define CTS_SCSI_VALID_TQ   0x01

Definition at line 952 of file cam_ccb.h.

◆ CTS_SPI_FLAGS_DISC_ENB

#define CTS_SPI_FLAGS_DISC_ENB   0x01

Definition at line 974 of file cam_ccb.h.

◆ CTS_SPI_VALID_BUS_WIDTH

#define CTS_SPI_VALID_BUS_WIDTH   0x04

Definition at line 970 of file cam_ccb.h.

◆ CTS_SPI_VALID_DISC

#define CTS_SPI_VALID_DISC   0x08

Definition at line 971 of file cam_ccb.h.

◆ CTS_SPI_VALID_PPR_OPTIONS

#define CTS_SPI_VALID_PPR_OPTIONS   0x10

Definition at line 972 of file cam_ccb.h.

◆ CTS_SPI_VALID_SYNC_OFFSET

#define CTS_SPI_VALID_SYNC_OFFSET   0x02

Definition at line 969 of file cam_ccb.h.

◆ CTS_SPI_VALID_SYNC_RATE

#define CTS_SPI_VALID_SYNC_RATE   0x01

Definition at line 968 of file cam_ccb.h.

◆ DEV_IDLEN

#define DEV_IDLEN   16 /* ASCII string len for device names */

Definition at line 54 of file cam_ccb.h.

◆ HBA_IDLEN

#define HBA_IDLEN   16 /* ASCII string len for HBA ID */

Definition at line 53 of file cam_ccb.h.

◆ IOCDBLEN

#define IOCDBLEN   CAM_MAX_CDBLEN /* Space for CDB bytes/pointer */

Definition at line 50 of file cam_ccb.h.

◆ KNOB_ROLE_BOTH

#define KNOB_ROLE_BOTH   0x3

Definition at line 1153 of file cam_ccb.h.

◆ KNOB_ROLE_INITIATOR

#define KNOB_ROLE_INITIATOR   0x1

Definition at line 1151 of file cam_ccb.h.

◆ KNOB_ROLE_NONE

#define KNOB_ROLE_NONE   0x0

Definition at line 1150 of file cam_ccb.h.

◆ KNOB_ROLE_TARGET

#define KNOB_ROLE_TARGET   0x2

Definition at line 1152 of file cam_ccb.h.

◆ KNOB_SETTINGS_SIZE

#define KNOB_SETTINGS_SIZE   128

Definition at line 1173 of file cam_ccb.h.

◆ KNOB_VALID_ADDRESS

#define KNOB_VALID_ADDRESS   0x1

Definition at line 1147 of file cam_ccb.h.

◆ KNOB_VALID_ROLE

#define KNOB_VALID_ROLE   0x2

Definition at line 1148 of file cam_ccb.h.

◆ MMC_BM

#define MMC_BM   (1 << 7)

Definition at line 1064 of file cam_ccb.h.

◆ MMC_BT

#define MMC_BT   (1 << 6)

Definition at line 1063 of file cam_ccb.h.

◆ MMC_BW

#define MMC_BW   (1 << 4)

Definition at line 1061 of file cam_ccb.h.

◆ MMC_CAP_4_BIT_DATA

#define MMC_CAP_4_BIT_DATA   (1 << 0) /* Can do 4-bit data transfers */

Definition at line 1072 of file cam_ccb.h.

◆ MMC_CAP_8_BIT_DATA

#define MMC_CAP_8_BIT_DATA   (1 << 1) /* Can do 8-bit data transfers */

Definition at line 1073 of file cam_ccb.h.

◆ MMC_CAP_BOOT_NOACC

#define MMC_CAP_BOOT_NOACC   (1 << 4) /* Cannot access boot partitions */

Definition at line 1075 of file cam_ccb.h.

◆ MMC_CAP_DRIVER_TYPE_A

#define MMC_CAP_DRIVER_TYPE_A   (1 << 21) /* Can do Driver Type A */

Definition at line 1096 of file cam_ccb.h.

◆ MMC_CAP_DRIVER_TYPE_C

#define MMC_CAP_DRIVER_TYPE_C   (1 << 22) /* Can do Driver Type C */

Definition at line 1097 of file cam_ccb.h.

◆ MMC_CAP_DRIVER_TYPE_D

#define MMC_CAP_DRIVER_TYPE_D   (1 << 23) /* Can do Driver Type D */

Definition at line 1098 of file cam_ccb.h.

◆ MMC_CAP_HSPEED

#define MMC_CAP_HSPEED   (1 << 2) /* Can do High Speed transfers */

Definition at line 1074 of file cam_ccb.h.

◆ MMC_CAP_MMC_DDR52

#define MMC_CAP_MMC_DDR52   (MMC_CAP_MMC_DDR52_120 | MMC_CAP_MMC_DDR52_180)

Definition at line 1084 of file cam_ccb.h.

◆ MMC_CAP_MMC_DDR52_120

#define MMC_CAP_MMC_DDR52_120   (1 << 11) /* Can do eMMC DDR52 at 1.2 V */

Definition at line 1082 of file cam_ccb.h.

◆ MMC_CAP_MMC_DDR52_180

#define MMC_CAP_MMC_DDR52_180   (1 << 12) /* Can do eMMC DDR52 at 1.8 V */

Definition at line 1083 of file cam_ccb.h.

◆ MMC_CAP_MMC_ENH_STROBE

#define MMC_CAP_MMC_ENH_STROBE   (1 << 17) /* Can do eMMC Enhanced Strobe */

Definition at line 1092 of file cam_ccb.h.

◆ MMC_CAP_MMC_HS200

#define MMC_CAP_MMC_HS200   (MMC_CAP_MMC_HS200_120| MMC_CAP_MMC_HS200_180)

Definition at line 1087 of file cam_ccb.h.

◆ MMC_CAP_MMC_HS200_120

#define MMC_CAP_MMC_HS200_120   (1 << 13) /* Can do eMMC HS200 at 1.2 V */

Definition at line 1085 of file cam_ccb.h.

◆ MMC_CAP_MMC_HS200_180

#define MMC_CAP_MMC_HS200_180   (1 << 14) /* Can do eMMC HS200 at 1.8 V */

Definition at line 1086 of file cam_ccb.h.

◆ MMC_CAP_MMC_HS400

#define MMC_CAP_MMC_HS400   (MMC_CAP_MMC_HS400_120 | MMC_CAP_MMC_HS400_180)

Definition at line 1090 of file cam_ccb.h.

◆ MMC_CAP_MMC_HS400_120

#define MMC_CAP_MMC_HS400_120   (1 << 15) /* Can do eMMC HS400 at 1.2 V */

Definition at line 1088 of file cam_ccb.h.

◆ MMC_CAP_MMC_HS400_180

#define MMC_CAP_MMC_HS400_180   (1 << 16) /* Can do eMMC HS400 at 1.8 V */

Definition at line 1089 of file cam_ccb.h.

◆ MMC_CAP_MMC_HSX00_120

#define MMC_CAP_MMC_HSX00_120   (MMC_CAP_MMC_HS200_120 | MMC_CAP_MMC_HS400_120)

Definition at line 1091 of file cam_ccb.h.

◆ MMC_CAP_SIGNALING_120

#define MMC_CAP_SIGNALING_120   (1 << 18) /* Can do signaling at 1.2 V */

Definition at line 1093 of file cam_ccb.h.

◆ MMC_CAP_SIGNALING_180

#define MMC_CAP_SIGNALING_180   (1 << 19) /* Can do signaling at 1.8 V */

Definition at line 1094 of file cam_ccb.h.

◆ MMC_CAP_SIGNALING_330

#define MMC_CAP_SIGNALING_330   (1 << 20) /* Can do signaling at 3.3 V */

Definition at line 1095 of file cam_ccb.h.

◆ MMC_CAP_UHS_DDR50

#define MMC_CAP_UHS_DDR50   (1 << 10) /* Can do UHS DDR50 */

Definition at line 1081 of file cam_ccb.h.

◆ MMC_CAP_UHS_SDR104

#define MMC_CAP_UHS_SDR104   (1 << 9) /* Can do UHS SDR104 */

Definition at line 1080 of file cam_ccb.h.

◆ MMC_CAP_UHS_SDR12

#define MMC_CAP_UHS_SDR12   (1 << 6) /* Can do UHS SDR12 */

Definition at line 1077 of file cam_ccb.h.

◆ MMC_CAP_UHS_SDR25

#define MMC_CAP_UHS_SDR25   (1 << 7) /* Can do UHS SDR25 */

Definition at line 1078 of file cam_ccb.h.

◆ MMC_CAP_UHS_SDR50

#define MMC_CAP_UHS_SDR50   (1 << 8) /* Can do UHS SDR50 */

Definition at line 1079 of file cam_ccb.h.

◆ MMC_CAP_WAIT_WHILE_BUSY

#define MMC_CAP_WAIT_WHILE_BUSY   (1 << 5) /* Host waits for busy responses */

Definition at line 1076 of file cam_ccb.h.

◆ MMC_CLK

#define MMC_CLK   (1 << 1)

Definition at line 1058 of file cam_ccb.h.

◆ MMC_CS

#define MMC_CS   (1 << 3)

Definition at line 1060 of file cam_ccb.h.

◆ MMC_PM

#define MMC_PM   (1 << 5)

Definition at line 1062 of file cam_ccb.h.

◆ MMC_VCCQ

#define MMC_VCCQ   (1 << 8)

Definition at line 1065 of file cam_ccb.h.

◆ MMC_VDD

#define MMC_VDD   (1 << 2)

Definition at line 1059 of file cam_ccb.h.

◆ NVME_DEV_NAME_LEN

#define NVME_DEV_NAME_LEN   52

Definition at line 645 of file cam_ccb.h.

◆ PATHINQ_SETTINGS_SIZE

#define PATHINQ_SETTINGS_SIZE   128

Definition at line 658 of file cam_ccb.h.

◆ PROTO_VERSION_UNKNOWN

#define PROTO_VERSION_UNKNOWN   (UINT_MAX - 1)

Definition at line 314 of file cam_ccb.h.

◆ PROTO_VERSION_UNSPECIFIED

#define PROTO_VERSION_UNSPECIFIED   UINT_MAX

Definition at line 315 of file cam_ccb.h.

◆ RELSIM_ADJUST_OPENINGS

#define RELSIM_ADJUST_OPENINGS   0x01

Definition at line 840 of file cam_ccb.h.

◆ RELSIM_RELEASE_AFTER_CMDCMPLT

#define RELSIM_RELEASE_AFTER_CMDCMPLT   0x04

Definition at line 842 of file cam_ccb.h.

◆ RELSIM_RELEASE_AFTER_QEMPTY

#define RELSIM_RELEASE_AFTER_QEMPTY   0x08

Definition at line 843 of file cam_ccb.h.

◆ RELSIM_RELEASE_AFTER_TIMEOUT

#define RELSIM_RELEASE_AFTER_TIMEOUT   0x02

Definition at line 841 of file cam_ccb.h.

◆ SIM_IDLEN

#define SIM_IDLEN   16 /* ASCII string len for SIM ID */

Definition at line 52 of file cam_ccb.h.

◆ VUHBALEN

#define VUHBALEN   14 /* Vendor Unique HBA length */

Definition at line 51 of file cam_ccb.h.

◆ XPORT_DEVSTAT_TYPE

#define XPORT_DEVSTAT_TYPE (   t)
Value:
(XPORT_IS_ATA(t) ? DEVSTAT_TYPE_IF_IDE : \
XPORT_IS_SCSI(t) ? DEVSTAT_TYPE_IF_SCSI : \
DEVSTAT_TYPE_IF_OTHER)
#define XPORT_IS_ATA(t)
Definition: cam_ccb.h:306

Definition at line 310 of file cam_ccb.h.

◆ XPORT_IS_ATA

#define XPORT_IS_ATA (   t)    ((t) == XPORT_ATA || (t) == XPORT_SATA)

Definition at line 306 of file cam_ccb.h.

◆ XPORT_IS_NVME

#define XPORT_IS_NVME (   t)    ((t) == XPORT_NVME)

Definition at line 305 of file cam_ccb.h.

◆ XPORT_IS_SCSI

#define XPORT_IS_SCSI (   t)
Value:
((t) != XPORT_UNKNOWN && \
(t) != XPORT_UNSPECIFIED && \
#define XPORT_IS_NVME(t)
Definition: cam_ccb.h:305
@ XPORT_UNKNOWN
Definition: cam_ccb.h:289
@ XPORT_UNSPECIFIED
Definition: cam_ccb.h:290

Definition at line 307 of file cam_ccb.h.

◆ XPORT_VERSION_UNKNOWN

#define XPORT_VERSION_UNKNOWN   (UINT_MAX - 1)

Definition at line 316 of file cam_ccb.h.

◆ XPORT_VERSION_UNSPECIFIED

#define XPORT_VERSION_UNSPECIFIED   UINT_MAX

Definition at line 317 of file cam_ccb.h.

◆ XPT_CCB_INVALID

#define XPT_CCB_INVALID   -1 /* for signaling a bad CCB to free */

Definition at line 1300 of file cam_ccb.h.

◆ XPT_FC_GROUP

#define XPT_FC_GROUP (   op)    ((op) & XPT_FC_GROUP_MASK)

Definition at line 264 of file cam_ccb.h.

◆ XPT_FC_GROUP_COMMON

#define XPT_FC_GROUP_COMMON   0x00

Definition at line 265 of file cam_ccb.h.

◆ XPT_FC_GROUP_HBA_ENGINE

#define XPT_FC_GROUP_HBA_ENGINE   0x20

Definition at line 267 of file cam_ccb.h.

◆ XPT_FC_GROUP_MASK

#define XPT_FC_GROUP_MASK   0xF0

Definition at line 263 of file cam_ccb.h.

◆ XPT_FC_GROUP_SCSI_CONTROL

#define XPT_FC_GROUP_SCSI_CONTROL   0x10

Definition at line 266 of file cam_ccb.h.

◆ XPT_FC_GROUP_TMODE

#define XPT_FC_GROUP_TMODE   0x30

Definition at line 268 of file cam_ccb.h.

◆ XPT_FC_GROUP_VENDOR_UNIQUE

#define XPT_FC_GROUP_VENDOR_UNIQUE   0x80

Definition at line 269 of file cam_ccb.h.

◆ XPT_FC_IS_DEV_QUEUED

#define XPT_FC_IS_DEV_QUEUED (   ccb)     (((ccb)->ccb_h.func_code & XPT_FC_DEV_QUEUED) == XPT_FC_DEV_QUEUED)

Definition at line 271 of file cam_ccb.h.

◆ XPT_FC_IS_QUEUED

#define XPT_FC_IS_QUEUED (   ccb)     (((ccb)->ccb_h.func_code & XPT_FC_QUEUED) != 0)

Definition at line 273 of file cam_ccb.h.

Typedef Documentation

◆ ac_callback_t

typedef void ac_callback_t(void *softc, u_int32_t code, struct cam_path *path, void *args)

Definition at line 883 of file cam_ccb.h.

Enumeration Type Documentation

◆ ac_code

enum ac_code
Enumerator
AC_UNIT_ATTENTION 
AC_ADVINFO_CHANGED 
AC_CONTRACT 
AC_GETDEV_CHANGED 
AC_INQ_CHANGED 
AC_TRANSFER_NEG 
AC_LOST_DEVICE 
AC_FOUND_DEVICE 
AC_PATH_DEREGISTERED 
AC_PATH_REGISTERED 
AC_SENT_BDR 
AC_SCSI_AEN 
AC_UNSOL_RESEL 
AC_BUS_RESET 

Definition at line 866 of file cam_ccb.h.

◆ bus_pattern_flags

Enumerator
BUS_MATCH_ANY 
BUS_MATCH_PATH 
BUS_MATCH_NAME 
BUS_MATCH_UNIT 
BUS_MATCH_BUS_ID 

Definition at line 467 of file cam_ccb.h.

◆ cam_proto

enum cam_proto
Enumerator
PROTO_UNKNOWN 
PROTO_UNSPECIFIED 
PROTO_SCSI 
PROTO_ATA 
PROTO_ATAPI 
PROTO_SATAPM 
PROTO_SEMB 
PROTO_NVME 
PROTO_MMCSD 

Definition at line 276 of file cam_ccb.h.

◆ cam_xport

enum cam_xport
Enumerator
XPORT_UNKNOWN 
XPORT_UNSPECIFIED 
XPORT_SPI 
XPORT_FC 
XPORT_SSA 
XPORT_USB 
XPORT_PPB 
XPORT_ATA 
XPORT_SAS 
XPORT_SATA 
XPORT_ISCSI 
XPORT_SRP 
XPORT_NVME 
XPORT_MMCSD 

Definition at line 288 of file cam_ccb.h.

◆ ccb_alloc_flags

Enumerator
CAM_CCB_FROM_UMA 

Definition at line 63 of file cam_ccb.h.

◆ ccb_dev_match_status

Enumerator
CAM_DEV_MATCH_LAST 
CAM_DEV_MATCH_MORE 
CAM_DEV_MATCH_LIST_CHANGED 
CAM_DEV_MATCH_SIZE_ERROR 
CAM_DEV_MATCH_ERROR 

Definition at line 541 of file cam_ccb.h.

◆ ccb_flags

enum ccb_flags
Enumerator
CAM_CDB_POINTER 
CAM_unused1 
CAM_unused2 
CAM_NEGOTIATE 
CAM_DATA_ISPHYS 
CAM_DIS_AUTOSENSE 
CAM_DIR_BOTH 
CAM_DIR_IN 
CAM_DIR_OUT 
CAM_DIR_NONE 
CAM_DIR_MASK 
CAM_DATA_VADDR 
CAM_DATA_PADDR 
CAM_DATA_SG 
CAM_DATA_SG_PADDR 
CAM_DATA_BIO 
CAM_DATA_MASK 
CAM_unused3 
CAM_unused4 
CAM_DEV_QFRZDIS 
CAM_DEV_QFREEZE 
CAM_HIGH_POWER 
CAM_SENSE_PTR 
CAM_SENSE_PHYS 
CAM_TAG_ACTION_VALID 
CAM_PASS_ERR_RECOVER 
CAM_DIS_DISCONNECT 
CAM_unused5 
CAM_unused6 
CAM_CDB_PHYS 
CAM_unused7 
CAM_unused8 
CAM_unused9 
CAM_unused10 
CAM_unused11 
CAM_unused12 
CAM_unused13 
CAM_unused14 
CAM_SEND_SENSE 
CAM_unused15 
CAM_unused16 
CAM_SEND_STATUS 
CAM_UNLOCKED 

Definition at line 68 of file cam_ccb.h.

◆ ccb_getdevlist_status_e

Enumerator
CAM_GDEVLIST_LAST_DEVICE 
CAM_GDEVLIST_LIST_CHANGED 
CAM_GDEVLIST_MORE_DEVS 
CAM_GDEVLIST_ERROR 

Definition at line 408 of file cam_ccb.h.

◆ ccb_smp_pass_flags

Enumerator
SMP_FLAG_NONE 
SMP_FLAG_REQ_SG 
SMP_FLAG_RSP_SG 

Definition at line 704 of file cam_ccb.h.

◆ ccb_xflags

enum ccb_xflags
Enumerator
CAM_USER_DATA_ADDR 
CAM_SG_FORMAT_IOVEC 
CAM_UNMAPPED_BUF 

Definition at line 122 of file cam_ccb.h.

◆ cts_type

enum cts_type
Enumerator
CTS_TYPE_CURRENT_SETTINGS 
CTS_TYPE_USER_SETTINGS 

Definition at line 944 of file cam_ccb.h.

◆ dev_match_type

Enumerator
DEV_MATCH_PERIPH 
DEV_MATCH_DEVICE 
DEV_MATCH_BUS 

Definition at line 489 of file cam_ccb.h.

◆ dev_pattern_flags

Enumerator
DEV_MATCH_ANY 
DEV_MATCH_PATH 
DEV_MATCH_TARGET 
DEV_MATCH_LUN 
DEV_MATCH_INQUIRY 
DEV_MATCH_DEVID 

Definition at line 442 of file cam_ccb.h.

◆ dev_pos_type

Enumerator
CAM_DEV_POS_NONE 
CAM_DEV_POS_BUS 
CAM_DEV_POS_TARGET 
CAM_DEV_POS_DEVICE 
CAM_DEV_POS_PERIPH 
CAM_DEV_POS_PDPTR 
CAM_DEV_POS_TYPEMASK 
CAM_DEV_POS_EDT 
CAM_DEV_POS_PDRV 

Definition at line 549 of file cam_ccb.h.

◆ dev_result_flags

Enumerator
DEV_RESULT_NOFLAG 
DEV_RESULT_UNCONFIGURED 

Definition at line 508 of file cam_ccb.h.

◆ ei_algo

enum ei_algo
Enumerator
EAD_VUNIQUE 
EAD_LZ1V1 
EAD_LZ2V1 
EAD_LZ2V2 

Definition at line 1261 of file cam_ccb.h.

◆ ei_type

enum ei_type
Enumerator
EIT_BUFFER 
EIT_LOSSLESS 
EIT_LOSSY 
EIT_ENCRYPT 

Definition at line 1254 of file cam_ccb.h.

◆ periph_pattern_flags

Enumerator
PERIPH_MATCH_ANY 
PERIPH_MATCH_PATH 
PERIPH_MATCH_TARGET 
PERIPH_MATCH_LUN 
PERIPH_MATCH_NAME 
PERIPH_MATCH_UNIT 

Definition at line 424 of file cam_ccb.h.

◆ pi_inqflag

enum pi_inqflag
Enumerator
PI_MDP_ABLE 
PI_WIDE_32 
PI_WIDE_16 
PI_SDTR_ABLE 
PI_LINKED_CDB 
PI_SATAPM 
PI_TAG_ABLE 
PI_SOFT_RST 

Definition at line 596 of file cam_ccb.h.

◆ pi_miscflag

Enumerator
PIM_ATA_EXT 
PIM_EXTLUNS 
PIM_SCANHILO 
PIM_NOREMOVE 
PIM_NOINITIATOR 
PIM_NOBUSRESET 
PIM_NO_6_BYTE 
PIM_SEQSCAN 
PIM_UNMAPPED 
PIM_NOSCAN 

Definition at line 616 of file cam_ccb.h.

◆ pi_tmflag

enum pi_tmflag
Enumerator
PIT_PROCESSOR 
PIT_PHASE 
PIT_DISCONNECT 
PIT_TERM_IO 
PIT_GRP_6 
PIT_GRP_7 

Definition at line 607 of file cam_ccb.h.

◆ xpt_opcode

enum xpt_opcode
Enumerator
XPT_FC_QUEUED 
XPT_FC_USER_CCB 
XPT_FC_XPT_ONLY 
XPT_FC_DEV_QUEUED 
XPT_NOOP 
XPT_SCSI_IO 
XPT_GDEV_TYPE 
XPT_GDEVLIST 
XPT_PATH_INQ 
XPT_REL_SIMQ 
XPT_SASYNC_CB 
XPT_SDEV_TYPE 
XPT_SCAN_BUS 
XPT_DEV_MATCH 
XPT_DEBUG 
XPT_PATH_STATS 
XPT_GDEV_STATS 
XPT_DEV_ADVINFO 
XPT_ASYNC 
XPT_ABORT 
XPT_RESET_BUS 
XPT_RESET_DEV 
XPT_TERM_IO 
XPT_SCAN_LUN 
XPT_GET_TRAN_SETTINGS 
XPT_SET_TRAN_SETTINGS 
XPT_CALC_GEOMETRY 
XPT_ATA_IO 
XPT_GET_SIM_KNOB_OLD 
XPT_SET_SIM_KNOB 
XPT_GET_SIM_KNOB 
XPT_SMP_IO 
XPT_NVME_IO 
XPT_MMC_IO 
XPT_SCAN_TGT 
XPT_NVME_ADMIN 
XPT_ENG_INQ 
XPT_ENG_EXEC 
XPT_EN_LUN 
XPT_TARGET_IO 
XPT_ACCEPT_TARGET_IO 
XPT_CONT_TARGET_IO 
XPT_IMMED_NOTIFY 
XPT_NOTIFY_ACK 
XPT_IMMEDIATE_NOTIFY 
XPT_NOTIFY_ACKNOWLEDGE 
XPT_REPROBE_LUN 
XPT_MMC_SET_TRAN_SETTINGS 
XPT_MMC_GET_TRAN_SETTINGS 
XPT_VUNIQUE 

Definition at line 129 of file cam_ccb.h.

Function Documentation

◆ _Static_assert()

_Static_assert ( sizeof(struct ccb_pathinq_settings_nvme = =64,
"ccb_pathinq_settings_nvme too big"   
)

◆ atio_cdb_ptr()

static __inline uint8_t * atio_cdb_ptr ( struct ccb_accept_tio ccb)
static

Definition at line 830 of file cam_ccb.h.

References CAM_CDB_POINTER, ccb::ccb_h, and ccb_hdr::flags.

Referenced by ctlfe_adjust_cdb(), ctlfedone(), and ctlfestart().

Here is the caller graph for this function:

◆ cam_calc_geometry()

void cam_calc_geometry ( struct ccb_calc_geometry ccg,
int  extended 
)

◆ cam_ccb_status()

static __inline cam_status cam_ccb_status ( union ccb ccb)
static

◆ cam_fill_ataio()

static __inline void cam_fill_ataio ( struct ccb_ataio ataio,
u_int32_t  retries,
void(*)(struct cam_periph *, union ccb *)  cbfcnp,
u_int32_t  flags,
u_int tag_action  __unused,
u_int8_t *  data_ptr,
u_int32_t  dxfer_len,
u_int32_t  timeout 
)
static

◆ cam_fill_csio()

static __BEGIN_DECLS __inline void cam_fill_csio ( struct ccb_scsiio csio,
u_int32_t  retries,
void(*)(struct cam_periph *, union ccb *)  cbfcnp,
u_int32_t  flags,
u_int8_t  tag_action,
u_int8_t *  data_ptr,
u_int32_t  dxfer_len,
u_int8_t  sense_len,
u_int8_t  cdb_len,
u_int32_t  timeout 
)
static

Definition at line 1389 of file cam_ccb.h.

References ccb_hdr::cbfcnp, ccb_scsiio::ccb_h, ccb_scsiio::cdb_len, ccb_scsiio::data_ptr, ccb_scsiio::dxfer_len, ccb_hdr::flags, ccb_hdr::func_code, ccb_scsiio::priority, ccb_hdr::retry_count, ccb_scsiio::sense_len, ccb_scsiio::tag_action, ccb_hdr::timeout, ccb_hdr::xflags, and XPT_SCSI_IO.

Referenced by cdpause(), cdplay(), cdplaymsf(), cdplaytracks(), cdreadsubchannel(), cdsetspeed(), enc_runcmd(), scsi_allow_overwrite(), scsi_ata_pass(), scsi_ata_pass_16(), scsi_erase(), scsi_exchange_medium(), scsi_format_medium(), scsi_get_physical_element_status(), scsi_initialize_element_status(), scsi_inquiry(), scsi_load_unload(), scsi_locate_10(), scsi_locate_16(), scsi_log_select(), scsi_log_sense(), scsi_mode_select_len(), scsi_mode_sense_subpage(), scsi_move_medium(), scsi_persistent_reserve_in(), scsi_persistent_reserve_out(), scsi_position_to_element(), scsi_prevent(), scsi_read_attribute(), scsi_read_block_limits(), scsi_read_buffer(), scsi_read_capacity(), scsi_read_capacity_16(), scsi_read_dvd_structure(), scsi_read_element_status(), scsi_read_position(), scsi_read_position_10(), scsi_read_toc(), scsi_read_write(), scsi_receive_diagnostic_results(), scsi_remove_element_and_truncate(), scsi_report_density_support(), scsi_report_key(), scsi_report_luns(), scsi_report_supported_opcodes(), scsi_report_target_group(), scsi_report_timestamp(), scsi_request_sense(), scsi_reserve_release_unit(), scsi_restore_elements_and_rebuild(), scsi_rewind(), scsi_sa_read_write(), scsi_security_protocol_in(), scsi_security_protocol_out(), scsi_send_diagnostic(), scsi_send_key(), scsi_send_receive(), scsi_send_volume_tag(), scsi_set_capacity(), scsi_set_position(), scsi_set_target_group(), scsi_set_timestamp(), scsi_space(), scsi_start_stop(), scsi_synchronize_cache(), scsi_test_unit_ready(), scsi_unmap(), scsi_write_attribute(), scsi_write_buffer(), scsi_write_filemarks(), scsi_write_same(), scsi_zbc_in(), scsi_zbc_out(), sgioctl(), and sgwrite().

◆ cam_fill_ctio()

static __inline void cam_fill_ctio ( struct ccb_scsiio csio,
u_int32_t  retries,
void(*)(struct cam_periph *, union ccb *)  cbfcnp,
u_int32_t  flags,
u_int  tag_action,
u_int  tag_id,
u_int  init_id,
u_int  scsi_status,
u_int8_t *  data_ptr,
u_int32_t  dxfer_len,
u_int32_t  timeout 
)
static

◆ cam_fill_mmcio()

static __inline void cam_fill_mmcio ( struct ccb_mmcio mmcio,
uint32_t  retries,
void(*)(struct cam_periph *, union ccb *)  cbfcnp,
uint32_t  flags,
uint32_t  mmc_opcode,
uint32_t  mmc_arg,
uint32_t  mmc_flags,
struct mmc_data *  mmc_d,
uint32_t  timeout 
)
static

◆ cam_fill_nvmeadmin()

static __inline void cam_fill_nvmeadmin ( struct ccb_nvmeio nvmeio,
u_int32_t  retries,
void(*)(struct cam_periph *, union ccb *)  cbfcnp,
u_int32_t  flags,
u_int8_t *  data_ptr,
u_int32_t  dxfer_len,
u_int32_t  timeout 
)
static

Definition at line 1537 of file cam_ccb.h.

References ccb_hdr::cbfcnp, ccb_nvmeio::ccb_h, ccb_nvmeio::data_ptr, ccb_nvmeio::dxfer_len, ccb_hdr::flags, ccb_hdr::func_code, ccb_hdr::retry_count, ccb_hdr::timeout, and XPT_NVME_ADMIN.

Referenced by nvme_probe_start().

Here is the caller graph for this function:

◆ cam_fill_nvmeio()

static __inline void cam_fill_nvmeio ( struct ccb_nvmeio nvmeio,
u_int32_t  retries,
void(*)(struct cam_periph *, union ccb *)  cbfcnp,
u_int32_t  flags,
u_int8_t *  data_ptr,
u_int32_t  dxfer_len,
u_int32_t  timeout 
)
static

◆ cam_fill_smpio()

static __inline void cam_fill_smpio ( struct ccb_smpio smpio,
uint32_t  retries,
void(*)(struct cam_periph *, union ccb *)  cbfcnp,
uint32_t  flags,
uint8_t *  smp_request,
int  smp_request_len,
uint8_t *  smp_response,
int  smp_response_len,
uint32_t  timeout 
)
static

◆ cam_set_ccbstatus()

static __inline void cam_set_ccbstatus ( union ccb ccb,
cam_status  status 
)
static

Definition at line 1507 of file cam_ccb.h.

References ccb::ccb_h, and ccb_hdr::status.

◆ scsiio_cdb_ptr()

static __inline uint8_t * scsiio_cdb_ptr ( struct ccb_scsiio ccb)
static

Definition at line 782 of file cam_ccb.h.

References CAM_CDB_POINTER, ccb::ccb_h, and ccb_hdr::flags.

Referenced by cam_periph_devctl_notify(), cfcs_action(), scsi_command_string(), scsi_proto_debug_out(), and scsi_sense_sbuf().

Here is the caller graph for this function: