[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
Int 4F Fn 8100  - Common Access Method Scsi Interface Rev 2.3 - Send Ccb   [d]

   AX = 8100h
   ES:BX -> CAM Control Block (CCB) (see below)

Return: AH = status
       00h successful
       01h invalid CCB address (0000h:0000h)

Note:  the SCSI Interface Module (SIM) may complete the requested function
     and invoke the completion callback function before this call returns

See Also: AX=8200h,INT 2F/AX=7F01h,INT 4B"Common Access Method"

Values for CAM function code:
 00h   NOP
 01h   execute SCSI I/O
 02h   get device type
 03h   path inquiry
 04h   release SIM queue
 05h   set async callback
 06h   set device type
 07h-0Fh reserved
 10h   abort SCSI command
 11h   reset SCSI bus
 12h   reset SCSI device
 13h   terminate I/O process
 14h-1Fh reserved
 20h   engine inquiry
 21h   execute engine request
 22h-2Fh reserved
 30h   enable logical unit number
 31h   execute target I/O
 32h-7Fh reserved
 80h-FFh vendor-specific functions

Format of CAM Control Block:
Offset Size    Description
 00h   DWORD   physical address of this CCB
 04h   WORD    CAM control block length
 06h   BYTE    function code (see above)
 07h   BYTE    CAM status (see below)
 08h   BYTE    SCSI status
 09h   BYTE    path ID (FFh = XPT)
 0Ah   BYTE    target ID
 0Bh   BYTE    logical unit number
 0Ch   WORD    CAM flags (see below)
 0Eh   BYTE    CAM address flags (see below)
 0Fh   BYTE    target-mode flags (see below)
---function 02h---
 10h   DWORD   pointer to 36-byte buffer for inquiry data or 0000h:0000h
 14h   BYTE    peripheral device type of target logical unit number
---function 03h---
 10h   BYTE    version number (00h-07h prior to rev 1.7, 08h = rev 1.7,
       09h-FFh = rev no, i.e. 23h = rev 2.3)
 11h   BYTE    SCSI capabilities (see below)
 12h   BYTE    target mode support
       bit 7: processor mode
       bit 6: phase-cognizant mode
       bit 5-0: reserved
 13h   BYTE    miscellaneous flags
       bit 7: scanned high to low instead of low to high
       bit 6: removables not included in scan
       bit 5: inquiry data not kept by XPT
       bits 4-0: reserved
 14h   WORD    engine count
 16h 14 BYTEs  vendor-specific data
 24h   DWORD   size of private data area
 28h   DWORD   asynchronous event capabilities (see below)
 2Ch   BYTE    highest path ID assigned
 2Dh   BYTE    SCSI device ID of initiator
 2Eh  2 BYTEs  reserved
 30h 16 BYTEs  SIM vendor ID
 40h 16 BYTEs  HBA (host bus adaptor) vendor ID
 50h  4 BYTEs  operating-system dependant usage
---functions 00h,04h,11h,12h---
 no additional fields
---function 05h---
 10h   DWORD   asynchronous event enables (see function 03h above)
 14h   DWORD   pointer to asynchronous callback routine
 18h   DWORD   pointer to peripheral driver buffer
 1Ch   BYTE    size of peripheral buffer
---function 06h---
 10h   BYTE    peripheral device type of target
---functions 10h,13h---
 10h   DWORD   pointer to CCB to be aborted
---function 20h---
 10h   WORD    engine number
 12h   BYTE    engine type
       00h buffer memory
       01h lossless compression
       02h lossy compression
       03h encryption
 13h   BYTE    engine algorithm ID
       00h vendor-unique
       01h LZ1 variation 1 (STAC)
       02h LZ2 variation 1 (HP DCZL)
       03h LZ2 variation 2 (Infochip)
 14h   DWORD   engine memory size
---function 21h---
 10h   DWORD   pointer to peripheral driver
 14h  4 BYTEs  reserved
 18h   DWORD   OS-dependent request-mapping info
 1Ch   DWORD   address of completion callback routine
 20h   DWORD   pointer to scatter/gather list or data buffer
 24h   DWORD   length of data transfer
 28h   DWORD   pointer to engine buffer data
 2Ch  2 BYTEs  reserved
 2Eh   WORD    number of scatter/gather entries
 30h   DWORD   maximum destination data length
 34h   DWORD   length of destination data
 38h   DWORD   source residual length
 3Ch 12 BYTEs  reserved
 48h   DWORD   OS-dependent timeout value
 4Ch  4 BYTEs  reserved
 50h   WORD    engine number
 52h   WORD    vendor-unique flags
 54h  4 BYTEs  reserved
 58h  N BYTEs  private data area for SIM
---function 30h---
 10h   WORD    group 6 vendor-unique CDB length
 12h   WORD    group 7 vendor-unique CDB length
 14h   DWORD   pointer to target CCB list
 18h   WORD    number of target CCBs
---other functions---
 10h   DWORD   pointer to peripheral driver
 14h   DWORD   pointer to next CCB
 18h   DWORD   OS-dependent request mapping information
 1Ch   DWORD   address of completion callback routine
 20h   DWORD   pointer to scatter/gather list or data buffer
 24h   DWORD   length of data transfer
 28h   DWORD   pointer to sense info buffer
 2Ch   BYTE    length of sense info buffer
 2Dh   BYTE    CDB length
 2Eh   WORD    number of scatter/gather entries
 30h  4 BYTEs  reserved
 34h   BYTE    SCSI status
 35h  3 BYTEs  reserved
 38h   DWORD   residual length
 40h 12 BYTEs  Command Descriptor Block (CDB)
 44h   DWORD   OS-dependent timeout value
 48h   DWORD   pointer to message buffer
 4Ch   WORD    length of message buffer
 4Eh   WORD    vendor-unique flags
 50h   BYTE    tag queue action
 51h  3 BYTEs  reserved
 54h  N BYTEs  private data area for SIM

Bitfields for CAM flags:
 bit 0 CDB is a pointer
 bit 1 tagged queue action enable
 bit 2 linked CDB
 bit 3 disable callback on completion
 bit 4 scatter/gather
 bit 5 disable autosense
 bits 7-6 direction (00 reserved, 01 in, 10 out, 11 no data transfer)
 bits 9-8 reserved
 bit 10 engine synchronize
 bit 11 SIM queue freeze
 bit 12 SIM queue priority
   1 head insertion
   0 tail insertion (normal)
 bit 13 disable synchronous transfers  / exclusive
 bit 14 initiate synchronous transfers \ mutually
 bit 15 disable disconnect

Bitfields for CAM address flags:
 bit 7 SG list/data (0 = host, 1 = engine)
 bit 6 CDB pointer    (bits 6-1: 0=virtual addr, 1=phys addr)
 bit 5 SG list/data
 bit 4 sense buffer
 bit 3 message buffer
 bit 2 next CCB
 bit 1 callback on completion
 bit 0 reserved

Values for CAM status:
 00h   request in progress
 01h   request successful
 02h   host aborted request
 03h   unable to abort request
 04h   request completed with error
 05h   CAM is busy
 06h   invalid request
 07h   invalid path ID
 08h   no such SCSI device
 09h   unable to terminate I/O process
 0Ah   timeout on target selection
 0Bh   timeout on command
 0Dh   receive message rejection
 0Eh   sent/received SCSI bus reset
 0Fh   detected uncorrectable parity error
 10h   Autosense request failed
 11h   no HBA detected
 12h   data over/underrun
 13h   bus freed unexpectedly
 14h   target bus phase sequence failure
 15h   CCB too small
 16h   requested capability not available
 17h   sent bus device reset
 18h   terminate I/O process
 38h   invalid LUN
 39h   invalid target ID
 3Ah   unimplemented function
 3Bh   nexus not established
 3Ch   invalid initiator ID
 3Dh   received SCSI Command Descriptor Block
 3Eh   LUN already enabled
 3Fh   SCSI bus busy

Note:  bit 6 set to indicate frozen SIM queue
   bit 7 set to indicate valid autosense

Bitfields for target-mode flags:
 bit 7 data buffer valid
 bit 6 status valid
 bit 5 message buffer valid
 bit 4 reserved
 bit 3 phase-cognizant mode
 bit 2 target CCB available
 bit 1 disable autodisconnect
 bit 0 disable autosave/restore

Bitfields for SCSI capabilities:
 bit 7 modify data pointers
 bit 6 wide bus (32 bits)
 bit 5 wide bus (16 bits)
 bit 4 synchronous transfers
 bit 3 linked commands
 bit 2 reserved
 bit 1 tagged queueing
 bit 0 soft reset

Bitfields for asynchronous event capabilities:
 bits 31-24    vendor-specific
 bits 23-8 reserved
 bit 7 new devices found during rescan
 bit 6 SIM module deregistered
 bit 5 SIM module registered
 bit 4 sent bus device reset to target
 bit 3 SCSI AEN
 bit 2 reserved
 bit 1 unsolicited reselection
 bit 0 unsolicited SCSI bus reset

Completion callback function called with:
   interrupts disabled
   ES:BX -> completed CCB

Asynchronous callback function called with:
   AH = opcode
   AL = path ID generating callback
   DH = target ID causing event
   DL = LUN causing event
   CX = data byte count (if applicable)
   ES:BX -> data buffer (if applicable)

Return: all registers preserved

This page created by ng2html v1.05, the Norton guide to HTML conversion utility. Written by Dave Pearson