[<<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