[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
INT 4F - Common Access Method SCSI interface rev 2.3 - SEND CCB TO XPT/SIM
        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
SeeAlso: INT 4B"Common Access Method"

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 below)
 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    BYTE    CAM flags
                bits 7-6: direction
                        00 reserved
                        01 in
                        10 out
                        11 no data transfer
                bit 5: disable autosense
                    4: scatter/gather
                    3: disable callback on completion
                    2: linked CDB
                    1: tagged queue action enable
                    0: CDB is a pointer
 0Dh    BYTE    CAM flags
                bit 7: disable disconnect
                    6: initiate synchronous transfers  \ mutually
                    5: disable synchronous transfers   / exclusive
                    4: SIM queue priority
                        1 head insertion
                        0 tail insertion (normal)
                bit 3: SIM queue freeze
                    2: engine synchronize
                bits 1-0: reserved
 0Eh    BYTE    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
 0Fh    BYTE    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
---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
                bit 7: modify data pointers
                    6: wide bus (32 bits)
                    5: wide bus (16 bits)
                    4: synchronous transfers
                    3: linked commands
                    2: reserved
                    1: tagged queueing
                    0: soft reset
 12h    BYTE    target mode support
                bit 7: processor mode
                    6: phase-cognizant mode
                    5-0: reserved
 13h    BYTE    miscellaneous flags
                bit 7: scanned high to low instead of low to high
                    6: removables not included in scan
                    5: inquiry data not kept by XPT
                    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
                bits 31-24: vendor-specific
                     23-8: reserved
                        7: new devices found during rescan
                        6: SIM module deregistered
                        5: SIM module registered
                        4: sent bus device reset to target
                        3: SCSI AEN
                        2: reserved
                        1: unsolicited reselection
                        0: unsolicited SCSI bus reset
 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

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

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

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

See Also: 4F8200
This page created by ng2html v1.05, the Norton guide to HTML conversion utility. Written by Dave Pearson