| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908 |
- ===================
- ARECA FIRMWARE SPEC
- ===================
- Usage of IOP331 adapter
- =======================
- (All In/Out is in IOP331's view)
- 1. Message 0
- ------------
- - InitThread message and return code
- 2. Doorbell is used for RS-232 emulation
- ----------------------------------------
- inDoorBell
- bit0
- data in ready
- zDRIVER DATA WRITE OK)
- bit1
- data out has been read
- (DRIVER DATA READ OK)
- outDooeBell:
- bit0
- data out ready
- (IOP331 DATA WRITE OK)
- bit1
- data in has been read
- (IOP331 DATA READ OK)
- 3. Index Memory Usage
- ---------------------
- ============ ==========================================
- offset 0xf00 for RS232 out (request buffer)
- offset 0xe00 for RS232 in (scratch buffer)
- offset 0xa00 for inbound message code message_rwbuffer
- (driver send to IOP331)
- offset 0xa00 for outbound message code message_rwbuffer
- (IOP331 send to driver)
- ============ ==========================================
- 4. RS-232 emulation
- -------------------
- Currently 128 byte buffer is used:
- ============ =====================
- 1st uint32_t Data length (1--124)
- Byte 4--127 Max 124 bytes of data
- ============ =====================
- 5. PostQ
- --------
- All SCSI Command must be sent through postQ:
- (inbound queue port)
- Request frame must be 32 bytes aligned:
- #bit27--bit31
- flag for post ccb
- #bit0--bit26
- real address (bit27--bit31) of post arcmsr_cdb
- ===== ===================
- bit31 == ===============
- 0 256 bytes frame
- 1 512 bytes frame
- == ===============
- bit30 == ==============
- 0 normal request
- 1 BIOS request
- == ==============
- bit29 reserved
- bit28 reserved
- bit27 reserved
- ===== ===================
- (outbount queue port)
- Request reply:
- #bit27--bit31
- flag for reply
- #bit0--bit26
- real address (bit27--bit31) of reply arcmsr_cdb
- ===== =======================================================
- bit31 must be 0 (for this type of reply)
- bit30 reserved for BIOS handshake
- bit29 reserved
- bit28 == ===================================================
- 0 no error, ignore AdapStatus/DevStatus/SenseData
- 1 Error, error code in AdapStatus/DevStatus/SenseData
- == ===================================================
- bit27 reserved
- ===== =======================================================
- 6. BIOS request
- ---------------
- All BIOS request is the same with request from PostQ
- Except:
- Request frame is sent from configuration space:
- ============ ==========================
- offset: 0x78 Request Frame (bit30 == 1)
- offset: 0x18 writeonly to generate
- IRQ to IOP331
- ============ ==========================
- Completion of request::
- (bit30 == 0, bit28==err flag)
- 7. Definition of SGL entry (structure)
- --------------------------------------
- 8. Message1 Out - Diag Status Code (????)
- -----------------------------------------
- 9. Message0 message code
- ------------------------
- ====== =================================================================
- 0x00 NOP
- 0x01 Get Config
- ->offset 0xa00 :for outbound message code message_rwbuffer
- (IOP331 send to driver)
- ===================== ==========================================
- Signature 0x87974060(4)
- Request len 0x00000200(4)
- numbers of queue 0x00000100(4)
- SDRAM Size 0x00000100(4)-->256 MB
- IDE Channels 0x00000008(4)
- vendor 40 bytes char
- model 8 bytes char
- FirmVer 16 bytes char
- Device Map 16 bytes char
- FirmwareVersion DWORD
- - Added for checking of
- new firmware capability
- ===================== ==========================================
- 0x02 Set Config
- ->offset 0xa00 :for inbound message code message_rwbuffer
- (driver send to IOP331)
- ========================= ==================
- Signature 0x87974063(4)
- UPPER32 of Request Frame (4)-->Driver Only
- ========================= ==================
- 0x03 Reset (Abort all queued Command)
- 0x04 Stop Background Activity
- 0x05 Flush Cache
- 0x06 Start Background Activity
- (re-start if background is halted)
- 0x07 Check If Host Command Pending
- (Novell May Need This Function)
- 0x08 Set controller time
- ->offset 0xa00 for inbound message code message_rwbuffer
- (driver to IOP331)
- ====== ==================
- byte 0 0xaa <-- signature
- byte 1 0x55 <-- signature
- byte 2 year (04)
- byte 3 month (1..12)
- byte 4 date (1..31)
- byte 5 hour (0..23)
- byte 6 minute (0..59)
- byte 7 second (0..59)
- ====== ==================
- ====== =================================================================
- RS-232 Interface for Areca Raid Controller
- ==========================================
- The low level command interface is exclusive with VT100 terminal
- 1. Sequence of command execution
- --------------------------------
- (A) Header
- 3 bytes sequence (0x5E, 0x01, 0x61)
- (B) Command block
- variable length of data including length,
- command code, data and checksum byte
- (C) Return data
- variable length of data
- 2. Command block
- ----------------
- (A) 1st byte
- command block length (low byte)
- (B) 2nd byte
- command block length (high byte)
- .. Note:: command block length shouldn't > 2040 bytes,
- length excludes these two bytes
- (C) 3rd byte
- command code
- (D) 4th and following bytes
- variable length data bytes
- depends on command code
- (E) last byte
- checksum byte (sum of 1st byte until last data byte)
- 3. Command code and associated data
- -----------------------------------
- The following are command code defined in raid controller Command
- code 0x10--0x1? are used for system level management,
- no password checking is needed and should be implemented in separate
- well controlled utility and not for end user access.
- Command code 0x20--0x?? always check the password,
- password must be entered to enable these command::
- enum
- {
- GUI_SET_SERIAL=0x10,
- GUI_SET_VENDOR,
- GUI_SET_MODEL,
- GUI_IDENTIFY,
- GUI_CHECK_PASSWORD,
- GUI_LOGOUT,
- GUI_HTTP,
- GUI_SET_ETHERNET_ADDR,
- GUI_SET_LOGO,
- GUI_POLL_EVENT,
- GUI_GET_EVENT,
- GUI_GET_HW_MONITOR,
- // GUI_QUICK_CREATE=0x20, (function removed)
- GUI_GET_INFO_R=0x20,
- GUI_GET_INFO_V,
- GUI_GET_INFO_P,
- GUI_GET_INFO_S,
- GUI_CLEAR_EVENT,
- GUI_MUTE_BEEPER=0x30,
- GUI_BEEPER_SETTING,
- GUI_SET_PASSWORD,
- GUI_HOST_INTERFACE_MODE,
- GUI_REBUILD_PRIORITY,
- GUI_MAX_ATA_MODE,
- GUI_RESET_CONTROLLER,
- GUI_COM_PORT_SETTING,
- GUI_NO_OPERATION,
- GUI_DHCP_IP,
- GUI_CREATE_PASS_THROUGH=0x40,
- GUI_MODIFY_PASS_THROUGH,
- GUI_DELETE_PASS_THROUGH,
- GUI_IDENTIFY_DEVICE,
- GUI_CREATE_RAIDSET=0x50,
- GUI_DELETE_RAIDSET,
- GUI_EXPAND_RAIDSET,
- GUI_ACTIVATE_RAIDSET,
- GUI_CREATE_HOT_SPARE,
- GUI_DELETE_HOT_SPARE,
- GUI_CREATE_VOLUME=0x60,
- GUI_MODIFY_VOLUME,
- GUI_DELETE_VOLUME,
- GUI_START_CHECK_VOLUME,
- GUI_STOP_CHECK_VOLUME
- };
- Command description
- ^^^^^^^^^^^^^^^^^^^
- GUI_SET_SERIAL
- Set the controller serial#
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x10
- byte 3 password length (should be 0x0f)
- byte 4-0x13 should be "ArEcATecHnoLogY"
- byte 0x14--0x23 Serial number string (must be 16 bytes)
- ================ =============================================
- GUI_SET_VENDOR
- Set vendor string for the controller
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x11
- byte 3 password length (should be 0x08)
- byte 4-0x13 should be "ArEcAvAr"
- byte 0x14--0x3B vendor string (must be 40 bytes)
- ================ =============================================
- GUI_SET_MODEL
- Set the model name of the controller
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x12
- byte 3 password length (should be 0x08)
- byte 4-0x13 should be "ArEcAvAr"
- byte 0x14--0x1B model string (must be 8 bytes)
- ================ =============================================
- GUI_IDENTIFY
- Identify device
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x13
- return "Areca RAID Subsystem "
- ================ =============================================
- GUI_CHECK_PASSWORD
- Verify password
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x14
- byte 3 password length
- byte 4-0x?? user password to be checked
- ================ =============================================
- GUI_LOGOUT
- Logout GUI (force password checking on next command)
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x15
- ================ =============================================
- GUI_HTTP
- HTTP interface (reserved for Http proxy service)(0x16)
- GUI_SET_ETHERNET_ADDR
- Set the ethernet MAC address
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x17
- byte 3 password length (should be 0x08)
- byte 4-0x13 should be "ArEcAvAr"
- byte 0x14--0x19 Ethernet MAC address (must be 6 bytes)
- ================ =============================================
- GUI_SET_LOGO
- Set logo in HTTP
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x18
- byte 3 Page# (0/1/2/3) (0xff --> clear OEM logo)
- byte 4/5/6/7 0x55/0xaa/0xa5/0x5a
- byte 8 TITLE.JPG data (each page must be 2000 bytes)
- .. Note:: page0 1st 2 byte must be
- actual length of the JPG file
- ================ =============================================
- GUI_POLL_EVENT
- Poll If Event Log Changed
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x19
- ================ =============================================
- GUI_GET_EVENT
- Read Event
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x1a
- byte 3 Event Page (0:1st page/1/2/3:last page)
- ================ =============================================
- GUI_GET_HW_MONITOR
- Get HW monitor data
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x1b
- byte 3 # of FANs(example 2)
- byte 4 # of Voltage sensor(example 3)
- byte 5 # of temperature sensor(example 2)
- byte 6 # of power
- byte 7/8 Fan#0 (RPM)
- byte 9/10 Fan#1
- byte 11/12 Voltage#0 original value in ``*1000``
- byte 13/14 Voltage#0 value
- byte 15/16 Voltage#1 org
- byte 17/18 Voltage#1
- byte 19/20 Voltage#2 org
- byte 21/22 Voltage#2
- byte 23 Temp#0
- byte 24 Temp#1
- byte 25 Power indicator (bit0 power#0,
- bit1 power#1)
- byte 26 UPS indicator
- ================ =============================================
- GUI_QUICK_CREATE
- Quick create raid/volume set
- ================ ==============================================
- byte 0,1 length
- byte 2 command code 0x20
- byte 3/4/5/6 raw capacity
- byte 7 raid level
- byte 8 stripe size
- byte 9 spare
- byte 10/11/12/13 device mask (the devices to create raid/volume)
- ================ ==============================================
- This function is removed, application like
- to implement quick create function
- need to use GUI_CREATE_RAIDSET and GUI_CREATE_VOLUMESET function.
- GUI_GET_INFO_R
- Get Raid Set Information
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x20
- byte 3 raidset#
- ================ =============================================
- ::
- typedef struct sGUI_RAIDSET
- {
- BYTE grsRaidSetName[16];
- DWORD grsCapacity;
- DWORD grsCapacityX;
- DWORD grsFailMask;
- BYTE grsDevArray[32];
- BYTE grsMemberDevices;
- BYTE grsNewMemberDevices;
- BYTE grsRaidState;
- BYTE grsVolumes;
- BYTE grsVolumeList[16];
- BYTE grsRes1;
- BYTE grsRes2;
- BYTE grsRes3;
- BYTE grsFreeSegments;
- DWORD grsRawStripes[8];
- DWORD grsRes4;
- DWORD grsRes5; // Total to 128 bytes
- DWORD grsRes6; // Total to 128 bytes
- } sGUI_RAIDSET, *pGUI_RAIDSET;
- GUI_GET_INFO_V
- Get Volume Set Information
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x21
- byte 3 volumeset#
- ================ =============================================
- ::
- typedef struct sGUI_VOLUMESET
- {
- BYTE gvsVolumeName[16]; // 16
- DWORD gvsCapacity;
- DWORD gvsCapacityX;
- DWORD gvsFailMask;
- DWORD gvsStripeSize;
- DWORD gvsNewFailMask;
- DWORD gvsNewStripeSize;
- DWORD gvsVolumeStatus;
- DWORD gvsProgress; // 32
- sSCSI_ATTR gvsScsi;
- BYTE gvsMemberDisks;
- BYTE gvsRaidLevel; // 8
- BYTE gvsNewMemberDisks;
- BYTE gvsNewRaidLevel;
- BYTE gvsRaidSetNumber;
- BYTE gvsRes0; // 4
- BYTE gvsRes1[4]; // 64 bytes
- } sGUI_VOLUMESET, *pGUI_VOLUMESET;
- GUI_GET_INFO_P
- Get Physical Drive Information
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x22
- byte 3 drive # (from 0 to max-channels - 1)
- ================ =============================================
- ::
- typedef struct sGUI_PHY_DRV
- {
- BYTE gpdModelName[40];
- BYTE gpdSerialNumber[20];
- BYTE gpdFirmRev[8];
- DWORD gpdCapacity;
- DWORD gpdCapacityX; // Reserved for expansion
- BYTE gpdDeviceState;
- BYTE gpdPioMode;
- BYTE gpdCurrentUdmaMode;
- BYTE gpdUdmaMode;
- BYTE gpdDriveSelect;
- BYTE gpdRaidNumber; // 0xff if not belongs to a raid set
- sSCSI_ATTR gpdScsi;
- BYTE gpdReserved[40]; // Total to 128 bytes
- } sGUI_PHY_DRV, *pGUI_PHY_DRV;
- GUI_GET_INFO_S
- Get System Information
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x23
- ================ =============================================
- ::
- typedef struct sCOM_ATTR
- {
- BYTE comBaudRate;
- BYTE comDataBits;
- BYTE comStopBits;
- BYTE comParity;
- BYTE comFlowControl;
- } sCOM_ATTR, *pCOM_ATTR;
- typedef struct sSYSTEM_INFO
- {
- BYTE gsiVendorName[40];
- BYTE gsiSerialNumber[16];
- BYTE gsiFirmVersion[16];
- BYTE gsiBootVersion[16];
- BYTE gsiMbVersion[16];
- BYTE gsiModelName[8];
- BYTE gsiLocalIp[4];
- BYTE gsiCurrentIp[4];
- DWORD gsiTimeTick;
- DWORD gsiCpuSpeed;
- DWORD gsiICache;
- DWORD gsiDCache;
- DWORD gsiScache;
- DWORD gsiMemorySize;
- DWORD gsiMemorySpeed;
- DWORD gsiEvents;
- BYTE gsiMacAddress[6];
- BYTE gsiDhcp;
- BYTE gsiBeeper;
- BYTE gsiChannelUsage;
- BYTE gsiMaxAtaMode;
- BYTE gsiSdramEcc; // 1:if ECC enabled
- BYTE gsiRebuildPriority;
- sCOM_ATTR gsiComA; // 5 bytes
- sCOM_ATTR gsiComB; // 5 bytes
- BYTE gsiIdeChannels;
- BYTE gsiScsiHostChannels;
- BYTE gsiIdeHostChannels;
- BYTE gsiMaxVolumeSet;
- BYTE gsiMaxRaidSet;
- BYTE gsiEtherPort; // 1:if ether net port supported
- BYTE gsiRaid6Engine; // 1:Raid6 engine supported
- BYTE gsiRes[75];
- } sSYSTEM_INFO, *pSYSTEM_INFO;
- GUI_CLEAR_EVENT
- Clear System Event
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x24
- ================ =============================================
- GUI_MUTE_BEEPER
- Mute current beeper
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x30
- ================ =============================================
- GUI_BEEPER_SETTING
- Disable beeper
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x31
- byte 3 0->disable, 1->enable
- ================ =============================================
- GUI_SET_PASSWORD
- Change password
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x32
- byte 3 pass word length ( must <= 15 )
- byte 4 password (must be alpha-numerical)
- ================ =============================================
- GUI_HOST_INTERFACE_MODE
- Set host interface mode
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x33
- byte 3 0->Independent, 1->cluster
- ================ =============================================
- GUI_REBUILD_PRIORITY
- Set rebuild priority
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x34
- byte 3 0/1/2/3 (low->high)
- ================ =============================================
- GUI_MAX_ATA_MODE
- Set maximum ATA mode to be used
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x35
- byte 3 0/1/2/3 (133/100/66/33)
- ================ =============================================
- GUI_RESET_CONTROLLER
- Reset Controller
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x36
- * Response with VT100 screen (discard it)
- ================ =============================================
- GUI_COM_PORT_SETTING
- COM port setting
- ================ =================================================
- byte 0,1 length
- byte 2 command code 0x37
- byte 3 0->COMA (term port),
- 1->COMB (debug port)
- byte 4 0/1/2/3/4/5/6/7
- (1200/2400/4800/9600/19200/38400/57600/115200)
- byte 5 data bit
- (0:7 bit, 1:8 bit must be 8 bit)
- byte 6 stop bit (0:1, 1:2 stop bits)
- byte 7 parity (0:none, 1:off, 2:even)
- byte 8 flow control
- (0:none, 1:xon/xoff, 2:hardware => must use none)
- ================ =================================================
- GUI_NO_OPERATION
- No operation
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x38
- ================ =============================================
- GUI_DHCP_IP
- Set DHCP option and local IP address
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x39
- byte 3 0:dhcp disabled, 1:dhcp enabled
- byte 4/5/6/7 IP address
- ================ =============================================
- GUI_CREATE_PASS_THROUGH
- Create pass through disk
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x40
- byte 3 device #
- byte 4 scsi channel (0/1)
- byte 5 scsi id (0-->15)
- byte 6 scsi lun (0-->7)
- byte 7 tagged queue (1 enabled)
- byte 8 cache mode (1 enabled)
- byte 9 max speed (0/1/2/3/4,
- async/20/40/80/160 for scsi)
- (0/1/2/3/4, 33/66/100/133/150 for ide )
- ================ =============================================
- GUI_MODIFY_PASS_THROUGH
- Modify pass through disk
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x41
- byte 3 device #
- byte 4 scsi channel (0/1)
- byte 5 scsi id (0-->15)
- byte 6 scsi lun (0-->7)
- byte 7 tagged queue (1 enabled)
- byte 8 cache mode (1 enabled)
- byte 9 max speed (0/1/2/3/4,
- async/20/40/80/160 for scsi)
- (0/1/2/3/4, 33/66/100/133/150 for ide )
- ================ =============================================
- GUI_DELETE_PASS_THROUGH
- Delete pass through disk
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x42
- byte 3 device# to be deleted
- ================ =============================================
- GUI_IDENTIFY_DEVICE
- Identify Device
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x43
- byte 3 Flash Method
- (0:flash selected, 1:flash not selected)
- byte 4/5/6/7 IDE device mask to be flashed
- .. Note:: no response data available
- ================ =============================================
- GUI_CREATE_RAIDSET
- Create Raid Set
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x50
- byte 3/4/5/6 device mask
- byte 7-22 raidset name (if byte 7 == 0:use default)
- ================ =============================================
- GUI_DELETE_RAIDSET
- Delete Raid Set
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x51
- byte 3 raidset#
- ================ =============================================
- GUI_EXPAND_RAIDSET
- Expand Raid Set
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x52
- byte 3 raidset#
- byte 4/5/6/7 device mask for expansion
- byte 8/9/10 (8:0 no change, 1 change, 0xff:terminate,
- 9:new raid level,
- 10:new stripe size
- 0/1/2/3/4/5->4/8/16/32/64/128K )
- byte 11/12/13 repeat for each volume in the raidset
- ================ =============================================
- GUI_ACTIVATE_RAIDSET
- Activate incomplete raid set
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x53
- byte 3 raidset#
- ================ =============================================
- GUI_CREATE_HOT_SPARE
- Create hot spare disk
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x54
- byte 3/4/5/6 device mask for hot spare creation
- ================ =============================================
- GUI_DELETE_HOT_SPARE
- Delete hot spare disk
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x55
- byte 3/4/5/6 device mask for hot spare deletion
- ================ =============================================
- GUI_CREATE_VOLUME
- Create volume set
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x60
- byte 3 raidset#
- byte 4-19 volume set name
- (if byte4 == 0, use default)
- byte 20-27 volume capacity (blocks)
- byte 28 raid level
- byte 29 stripe size
- (0/1/2/3/4/5->4/8/16/32/64/128K)
- byte 30 channel
- byte 31 ID
- byte 32 LUN
- byte 33 1 enable tag
- byte 34 1 enable cache
- byte 35 speed
- (0/1/2/3/4->async/20/40/80/160 for scsi)
- (0/1/2/3/4->33/66/100/133/150 for IDE )
- byte 36 1 to select quick init
- ================ =============================================
- GUI_MODIFY_VOLUME
- Modify volume Set
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x61
- byte 3 volumeset#
- byte 4-19 new volume set name
- (if byte4 == 0, not change)
- byte 20-27 new volume capacity (reserved)
- byte 28 new raid level
- byte 29 new stripe size
- (0/1/2/3/4/5->4/8/16/32/64/128K)
- byte 30 new channel
- byte 31 new ID
- byte 32 new LUN
- byte 33 1 enable tag
- byte 34 1 enable cache
- byte 35 speed
- (0/1/2/3/4->async/20/40/80/160 for scsi)
- (0/1/2/3/4->33/66/100/133/150 for IDE )
- ================ =============================================
- GUI_DELETE_VOLUME
- Delete volume set
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x62
- byte 3 volumeset#
- ================ =============================================
- GUI_START_CHECK_VOLUME
- Start volume consistency check
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x63
- byte 3 volumeset#
- ================ =============================================
- GUI_STOP_CHECK_VOLUME
- Stop volume consistency check
- ================ =============================================
- byte 0,1 length
- byte 2 command code 0x64
- ================ =============================================
- 4. Returned data
- ----------------
- (A) Header
- 3 bytes sequence (0x5E, 0x01, 0x61)
- (B) Length
- 2 bytes
- (low byte 1st, excludes length and checksum byte)
- (C)
- status or data:
- 1) If length == 1 ==> 1 byte status code::
- #define GUI_OK 0x41
- #define GUI_RAIDSET_NOT_NORMAL 0x42
- #define GUI_VOLUMESET_NOT_NORMAL 0x43
- #define GUI_NO_RAIDSET 0x44
- #define GUI_NO_VOLUMESET 0x45
- #define GUI_NO_PHYSICAL_DRIVE 0x46
- #define GUI_PARAMETER_ERROR 0x47
- #define GUI_UNSUPPORTED_COMMAND 0x48
- #define GUI_DISK_CONFIG_CHANGED 0x49
- #define GUI_INVALID_PASSWORD 0x4a
- #define GUI_NO_DISK_SPACE 0x4b
- #define GUI_CHECKSUM_ERROR 0x4c
- #define GUI_PASSWORD_REQUIRED 0x4d
- 2) If length > 1:
- data block returned from controller
- and the contents depends on the command code
- (E) Checksum
- checksum of length and status or data byte
|