1=================== 2ARECA FIRMWARE SPEC 3=================== 4 5Usage of IOP331 adapter 6======================= 7 8(All In/Out is in IOP331's view) 9 101. Message 0 11------------ 12 13- InitThread message and return code 14 152. Doorbell is used for RS-232 emulation 16---------------------------------------- 17 18inDoorBell 19 bit0 20 data in ready 21 zDRIVER DATA WRITE OK) 22 bit1 23 data out has been read 24 (DRIVER DATA READ OK) 25 26outDooeBell: 27 bit0 28 data out ready 29 (IOP331 DATA WRITE OK) 30 bit1 31 data in has been read 32 (IOP331 DATA READ OK) 33 343. Index Memory Usage 35--------------------- 36 37============ ========================================== 38offset 0xf00 for RS232 out (request buffer) 39offset 0xe00 for RS232 in (scratch buffer) 40offset 0xa00 for inbound message code message_rwbuffer 41 (driver send to IOP331) 42offset 0xa00 for outbound message code message_rwbuffer 43 (IOP331 send to driver) 44============ ========================================== 45 464. RS-232 emulation 47------------------- 48 49Currently 128 byte buffer is used: 50 51============ ===================== 521st uint32_t Data length (1--124) 53Byte 4--127 Max 124 bytes of data 54============ ===================== 55 565. PostQ 57-------- 58 59All SCSI Command must be sent through postQ: 60 61 (inbound queue port) 62 Request frame must be 32 bytes aligned: 63 64 #bit27--bit31 65 flag for post ccb 66 #bit0--bit26 67 real address (bit27--bit31) of post arcmsr_cdb 68 69 ===== =================== 70 bit31 == =============== 71 0 256 bytes frame 72 1 512 bytes frame 73 == =============== 74 bit30 == ============== 75 0 normal request 76 1 BIOS request 77 == ============== 78 bit29 reserved 79 bit28 reserved 80 bit27 reserved 81 ===== =================== 82 83 (outbount queue port) 84 Request reply: 85 86 #bit27--bit31 87 flag for reply 88 #bit0--bit26 89 real address (bit27--bit31) of reply arcmsr_cdb 90 91 ===== ======================================================= 92 bit31 must be 0 (for this type of reply) 93 bit30 reserved for BIOS handshake 94 bit29 reserved 95 bit28 == =================================================== 96 0 no error, ignore AdapStatus/DevStatus/SenseData 97 1 Error, error code in AdapStatus/DevStatus/SenseData 98 == =================================================== 99 bit27 reserved 100 ===== ======================================================= 101 1026. BIOS request 103--------------- 104 105All BIOS request is the same with request from PostQ 106 107Except: 108 109Request frame is sent from configuration space: 110 111 ============ ========================== 112 offset: 0x78 Request Frame (bit30 == 1) 113 offset: 0x18 writeonly to generate 114 IRQ to IOP331 115 ============ ========================== 116 117Completion of request:: 118 119 (bit30 == 0, bit28==err flag) 120 1217. Definition of SGL entry (structure) 122-------------------------------------- 123 1248. Message1 Out - Diag Status Code (????) 125----------------------------------------- 126 1279. Message0 message code 128------------------------ 129 130====== ================================================================= 1310x00 NOP 1320x01 Get Config 133 ->offset 0xa00 :for outbound message code message_rwbuffer 134 (IOP331 send to driver) 135 136 ===================== ========================================== 137 Signature 0x87974060(4) 138 Request len 0x00000200(4) 139 numbers of queue 0x00000100(4) 140 SDRAM Size 0x00000100(4)-->256 MB 141 IDE Channels 0x00000008(4) 142 vendor 40 bytes char 143 model 8 bytes char 144 FirmVer 16 bytes char 145 Device Map 16 bytes char 146 FirmwareVersion DWORD 147 148 - Added for checking of 149 new firmware capability 150 ===================== ========================================== 1510x02 Set Config 152 ->offset 0xa00 :for inbound message code message_rwbuffer 153 (driver send to IOP331) 154 155 ========================= ================== 156 Signature 0x87974063(4) 157 UPPER32 of Request Frame (4)-->Driver Only 158 ========================= ================== 1590x03 Reset (Abort all queued Command) 1600x04 Stop Background Activity 1610x05 Flush Cache 1620x06 Start Background Activity 163 (re-start if background is halted) 1640x07 Check If Host Command Pending 165 (Novell May Need This Function) 1660x08 Set controller time 167 ->offset 0xa00 for inbound message code message_rwbuffer 168 (driver to IOP331) 169 170 ====== ================== 171 byte 0 0xaa <-- signature 172 byte 1 0x55 <-- signature 173 byte 2 year (04) 174 byte 3 month (1..12) 175 byte 4 date (1..31) 176 byte 5 hour (0..23) 177 byte 6 minute (0..59) 178 byte 7 second (0..59) 179 ====== ================== 180====== ================================================================= 181 182 183RS-232 Interface for Areca Raid Controller 184========================================== 185 186 The low level command interface is exclusive with VT100 terminal 187 1881. Sequence of command execution 189-------------------------------- 190 191 (A) Header 192 3 bytes sequence (0x5E, 0x01, 0x61) 193 194 (B) Command block 195 variable length of data including length, 196 command code, data and checksum byte 197 198 (C) Return data 199 variable length of data 200 2012. Command block 202---------------- 203 204 (A) 1st byte 205 command block length (low byte) 206 207 (B) 2nd byte 208 command block length (high byte) 209 210 .. Note:: command block length shouldn't > 2040 bytes, 211 length excludes these two bytes 212 213 (C) 3rd byte 214 command code 215 216 (D) 4th and following bytes 217 variable length data bytes 218 219 depends on command code 220 221 (E) last byte 222 checksum byte (sum of 1st byte until last data byte) 223 2243. Command code and associated data 225----------------------------------- 226 227The following are command code defined in raid controller Command 228code 0x10--0x1? are used for system level management, 229no password checking is needed and should be implemented in separate 230well controlled utility and not for end user access. 231Command code 0x20--0x?? always check the password, 232password must be entered to enable these command:: 233 234 enum 235 { 236 GUI_SET_SERIAL=0x10, 237 GUI_SET_VENDOR, 238 GUI_SET_MODEL, 239 GUI_IDENTIFY, 240 GUI_CHECK_PASSWORD, 241 GUI_LOGOUT, 242 GUI_HTTP, 243 GUI_SET_ETHERNET_ADDR, 244 GUI_SET_LOGO, 245 GUI_POLL_EVENT, 246 GUI_GET_EVENT, 247 GUI_GET_HW_MONITOR, 248 // GUI_QUICK_CREATE=0x20, (function removed) 249 GUI_GET_INFO_R=0x20, 250 GUI_GET_INFO_V, 251 GUI_GET_INFO_P, 252 GUI_GET_INFO_S, 253 GUI_CLEAR_EVENT, 254 GUI_MUTE_BEEPER=0x30, 255 GUI_BEEPER_SETTING, 256 GUI_SET_PASSWORD, 257 GUI_HOST_INTERFACE_MODE, 258 GUI_REBUILD_PRIORITY, 259 GUI_MAX_ATA_MODE, 260 GUI_RESET_CONTROLLER, 261 GUI_COM_PORT_SETTING, 262 GUI_NO_OPERATION, 263 GUI_DHCP_IP, 264 GUI_CREATE_PASS_THROUGH=0x40, 265 GUI_MODIFY_PASS_THROUGH, 266 GUI_DELETE_PASS_THROUGH, 267 GUI_IDENTIFY_DEVICE, 268 GUI_CREATE_RAIDSET=0x50, 269 GUI_DELETE_RAIDSET, 270 GUI_EXPAND_RAIDSET, 271 GUI_ACTIVATE_RAIDSET, 272 GUI_CREATE_HOT_SPARE, 273 GUI_DELETE_HOT_SPARE, 274 GUI_CREATE_VOLUME=0x60, 275 GUI_MODIFY_VOLUME, 276 GUI_DELETE_VOLUME, 277 GUI_START_CHECK_VOLUME, 278 GUI_STOP_CHECK_VOLUME 279 }; 280 281Command description 282^^^^^^^^^^^^^^^^^^^ 283 284GUI_SET_SERIAL 285 Set the controller serial# 286 287 ================ ============================================= 288 byte 0,1 length 289 byte 2 command code 0x10 290 byte 3 password length (should be 0x0f) 291 byte 4-0x13 should be "ArEcATecHnoLogY" 292 byte 0x14--0x23 Serial number string (must be 16 bytes) 293 ================ ============================================= 294 295GUI_SET_VENDOR 296 Set vendor string for the controller 297 298 ================ ============================================= 299 byte 0,1 length 300 byte 2 command code 0x11 301 byte 3 password length (should be 0x08) 302 byte 4-0x13 should be "ArEcAvAr" 303 byte 0x14--0x3B vendor string (must be 40 bytes) 304 ================ ============================================= 305 306GUI_SET_MODEL 307 Set the model name of the controller 308 309 ================ ============================================= 310 byte 0,1 length 311 byte 2 command code 0x12 312 byte 3 password length (should be 0x08) 313 byte 4-0x13 should be "ArEcAvAr" 314 byte 0x14--0x1B model string (must be 8 bytes) 315 ================ ============================================= 316 317GUI_IDENTIFY 318 Identify device 319 320 ================ ============================================= 321 byte 0,1 length 322 byte 2 command code 0x13 323 return "Areca RAID Subsystem " 324 ================ ============================================= 325 326GUI_CHECK_PASSWORD 327 Verify password 328 329 ================ ============================================= 330 byte 0,1 length 331 byte 2 command code 0x14 332 byte 3 password length 333 byte 4-0x?? user password to be checked 334 ================ ============================================= 335 336GUI_LOGOUT 337 Logout GUI (force password checking on next command) 338 339 ================ ============================================= 340 byte 0,1 length 341 byte 2 command code 0x15 342 ================ ============================================= 343 344GUI_HTTP 345 HTTP interface (reserved for Http proxy service)(0x16) 346 347GUI_SET_ETHERNET_ADDR 348 Set the ethernet MAC address 349 350 ================ ============================================= 351 byte 0,1 length 352 byte 2 command code 0x17 353 byte 3 password length (should be 0x08) 354 byte 4-0x13 should be "ArEcAvAr" 355 byte 0x14--0x19 Ethernet MAC address (must be 6 bytes) 356 ================ ============================================= 357 358GUI_SET_LOGO 359 Set logo in HTTP 360 361 ================ ============================================= 362 byte 0,1 length 363 byte 2 command code 0x18 364 byte 3 Page# (0/1/2/3) (0xff --> clear OEM logo) 365 byte 4/5/6/7 0x55/0xaa/0xa5/0x5a 366 byte 8 TITLE.JPG data (each page must be 2000 bytes) 367 368 .. Note:: page0 1st 2 byte must be 369 actual length of the JPG file 370 ================ ============================================= 371 372GUI_POLL_EVENT 373 Poll If Event Log Changed 374 375 ================ ============================================= 376 byte 0,1 length 377 byte 2 command code 0x19 378 ================ ============================================= 379 380GUI_GET_EVENT 381 Read Event 382 383 ================ ============================================= 384 byte 0,1 length 385 byte 2 command code 0x1a 386 byte 3 Event Page (0:1st page/1/2/3:last page) 387 ================ ============================================= 388 389GUI_GET_HW_MONITOR 390 Get HW monitor data 391 392 ================ ============================================= 393 byte 0,1 length 394 byte 2 command code 0x1b 395 byte 3 # of FANs(example 2) 396 byte 4 # of Voltage sensor(example 3) 397 byte 5 # of temperature sensor(example 2) 398 byte 6 # of power 399 byte 7/8 Fan#0 (RPM) 400 byte 9/10 Fan#1 401 byte 11/12 Voltage#0 original value in ``*1000`` 402 byte 13/14 Voltage#0 value 403 byte 15/16 Voltage#1 org 404 byte 17/18 Voltage#1 405 byte 19/20 Voltage#2 org 406 byte 21/22 Voltage#2 407 byte 23 Temp#0 408 byte 24 Temp#1 409 byte 25 Power indicator (bit0 power#0, 410 bit1 power#1) 411 byte 26 UPS indicator 412 ================ ============================================= 413 414GUI_QUICK_CREATE 415 Quick create raid/volume set 416 417 ================ ============================================== 418 byte 0,1 length 419 byte 2 command code 0x20 420 byte 3/4/5/6 raw capacity 421 byte 7 raid level 422 byte 8 stripe size 423 byte 9 spare 424 byte 10/11/12/13 device mask (the devices to create raid/volume) 425 ================ ============================================== 426 427 This function is removed, application like 428 to implement quick create function 429 430 need to use GUI_CREATE_RAIDSET and GUI_CREATE_VOLUMESET function. 431 432GUI_GET_INFO_R 433 Get Raid Set Information 434 435 ================ ============================================= 436 byte 0,1 length 437 byte 2 command code 0x20 438 byte 3 raidset# 439 ================ ============================================= 440 441 :: 442 443 typedef struct sGUI_RAIDSET 444 { 445 BYTE grsRaidSetName[16]; 446 DWORD grsCapacity; 447 DWORD grsCapacityX; 448 DWORD grsFailMask; 449 BYTE grsDevArray[32]; 450 BYTE grsMemberDevices; 451 BYTE grsNewMemberDevices; 452 BYTE grsRaidState; 453 BYTE grsVolumes; 454 BYTE grsVolumeList[16]; 455 BYTE grsRes1; 456 BYTE grsRes2; 457 BYTE grsRes3; 458 BYTE grsFreeSegments; 459 DWORD grsRawStripes[8]; 460 DWORD grsRes4; 461 DWORD grsRes5; // Total to 128 bytes 462 DWORD grsRes6; // Total to 128 bytes 463 } sGUI_RAIDSET, *pGUI_RAIDSET; 464 465GUI_GET_INFO_V 466 Get Volume Set Information 467 468 ================ ============================================= 469 byte 0,1 length 470 byte 2 command code 0x21 471 byte 3 volumeset# 472 ================ ============================================= 473 474 :: 475 476 typedef struct sGUI_VOLUMESET 477 { 478 BYTE gvsVolumeName[16]; // 16 479 DWORD gvsCapacity; 480 DWORD gvsCapacityX; 481 DWORD gvsFailMask; 482 DWORD gvsStripeSize; 483 DWORD gvsNewFailMask; 484 DWORD gvsNewStripeSize; 485 DWORD gvsVolumeStatus; 486 DWORD gvsProgress; // 32 487 sSCSI_ATTR gvsScsi; 488 BYTE gvsMemberDisks; 489 BYTE gvsRaidLevel; // 8 490 BYTE gvsNewMemberDisks; 491 BYTE gvsNewRaidLevel; 492 BYTE gvsRaidSetNumber; 493 BYTE gvsRes0; // 4 494 BYTE gvsRes1[4]; // 64 bytes 495 } sGUI_VOLUMESET, *pGUI_VOLUMESET; 496 497GUI_GET_INFO_P 498 Get Physical Drive Information 499 500 ================ ============================================= 501 byte 0,1 length 502 byte 2 command code 0x22 503 byte 3 drive # (from 0 to max-channels - 1) 504 ================ ============================================= 505 506 :: 507 508 typedef struct sGUI_PHY_DRV 509 { 510 BYTE gpdModelName[40]; 511 BYTE gpdSerialNumber[20]; 512 BYTE gpdFirmRev[8]; 513 DWORD gpdCapacity; 514 DWORD gpdCapacityX; // Reserved for expansion 515 BYTE gpdDeviceState; 516 BYTE gpdPioMode; 517 BYTE gpdCurrentUdmaMode; 518 BYTE gpdUdmaMode; 519 BYTE gpdDriveSelect; 520 BYTE gpdRaidNumber; // 0xff if not belongs to a raid set 521 sSCSI_ATTR gpdScsi; 522 BYTE gpdReserved[40]; // Total to 128 bytes 523 } sGUI_PHY_DRV, *pGUI_PHY_DRV; 524 525GUI_GET_INFO_S 526 Get System Information 527 528 ================ ============================================= 529 byte 0,1 length 530 byte 2 command code 0x23 531 ================ ============================================= 532 533 :: 534 535 typedef struct sCOM_ATTR 536 { 537 BYTE comBaudRate; 538 BYTE comDataBits; 539 BYTE comStopBits; 540 BYTE comParity; 541 BYTE comFlowControl; 542 } sCOM_ATTR, *pCOM_ATTR; 543 typedef struct sSYSTEM_INFO 544 { 545 BYTE gsiVendorName[40]; 546 BYTE gsiSerialNumber[16]; 547 BYTE gsiFirmVersion[16]; 548 BYTE gsiBootVersion[16]; 549 BYTE gsiMbVersion[16]; 550 BYTE gsiModelName[8]; 551 BYTE gsiLocalIp[4]; 552 BYTE gsiCurrentIp[4]; 553 DWORD gsiTimeTick; 554 DWORD gsiCpuSpeed; 555 DWORD gsiICache; 556 DWORD gsiDCache; 557 DWORD gsiScache; 558 DWORD gsiMemorySize; 559 DWORD gsiMemorySpeed; 560 DWORD gsiEvents; 561 BYTE gsiMacAddress[6]; 562 BYTE gsiDhcp; 563 BYTE gsiBeeper; 564 BYTE gsiChannelUsage; 565 BYTE gsiMaxAtaMode; 566 BYTE gsiSdramEcc; // 1:if ECC enabled 567 BYTE gsiRebuildPriority; 568 sCOM_ATTR gsiComA; // 5 bytes 569 sCOM_ATTR gsiComB; // 5 bytes 570 BYTE gsiIdeChannels; 571 BYTE gsiScsiHostChannels; 572 BYTE gsiIdeHostChannels; 573 BYTE gsiMaxVolumeSet; 574 BYTE gsiMaxRaidSet; 575 BYTE gsiEtherPort; // 1:if ether net port supported 576 BYTE gsiRaid6Engine; // 1:Raid6 engine supported 577 BYTE gsiRes[75]; 578 } sSYSTEM_INFO, *pSYSTEM_INFO; 579 580GUI_CLEAR_EVENT 581 Clear System Event 582 583 ================ ============================================= 584 byte 0,1 length 585 byte 2 command code 0x24 586 ================ ============================================= 587 588GUI_MUTE_BEEPER 589 Mute current beeper 590 591 ================ ============================================= 592 byte 0,1 length 593 byte 2 command code 0x30 594 ================ ============================================= 595GUI_BEEPER_SETTING 596 Disable beeper 597 598 ================ ============================================= 599 byte 0,1 length 600 byte 2 command code 0x31 601 byte 3 0->disable, 1->enable 602 ================ ============================================= 603 604GUI_SET_PASSWORD 605 Change password 606 607 ================ ============================================= 608 byte 0,1 length 609 byte 2 command code 0x32 610 byte 3 pass word length ( must <= 15 ) 611 byte 4 password (must be alpha-numerical) 612 ================ ============================================= 613 614GUI_HOST_INTERFACE_MODE 615 Set host interface mode 616 617 ================ ============================================= 618 byte 0,1 length 619 byte 2 command code 0x33 620 byte 3 0->Independent, 1->cluster 621 ================ ============================================= 622 623GUI_REBUILD_PRIORITY 624 Set rebuild priority 625 626 ================ ============================================= 627 byte 0,1 length 628 byte 2 command code 0x34 629 byte 3 0/1/2/3 (low->high) 630 ================ ============================================= 631 632GUI_MAX_ATA_MODE 633 Set maximum ATA mode to be used 634 635 ================ ============================================= 636 byte 0,1 length 637 byte 2 command code 0x35 638 byte 3 0/1/2/3 (133/100/66/33) 639 ================ ============================================= 640 641GUI_RESET_CONTROLLER 642 Reset Controller 643 644 ================ ============================================= 645 byte 0,1 length 646 byte 2 command code 0x36 647 * Response with VT100 screen (discard it) 648 ================ ============================================= 649 650GUI_COM_PORT_SETTING 651 COM port setting 652 653 ================ ================================================= 654 byte 0,1 length 655 byte 2 command code 0x37 656 byte 3 0->COMA (term port), 657 1->COMB (debug port) 658 byte 4 0/1/2/3/4/5/6/7 659 (1200/2400/4800/9600/19200/38400/57600/115200) 660 byte 5 data bit 661 (0:7 bit, 1:8 bit must be 8 bit) 662 byte 6 stop bit (0:1, 1:2 stop bits) 663 byte 7 parity (0:none, 1:off, 2:even) 664 byte 8 flow control 665 (0:none, 1:xon/xoff, 2:hardware => must use none) 666 ================ ================================================= 667 668GUI_NO_OPERATION 669 No operation 670 671 ================ ============================================= 672 byte 0,1 length 673 byte 2 command code 0x38 674 ================ ============================================= 675 676GUI_DHCP_IP 677 Set DHCP option and local IP address 678 679 ================ ============================================= 680 byte 0,1 length 681 byte 2 command code 0x39 682 byte 3 0:dhcp disabled, 1:dhcp enabled 683 byte 4/5/6/7 IP address 684 ================ ============================================= 685 686GUI_CREATE_PASS_THROUGH 687 Create pass through disk 688 689 ================ ============================================= 690 byte 0,1 length 691 byte 2 command code 0x40 692 byte 3 device # 693 byte 4 scsi channel (0/1) 694 byte 5 scsi id (0-->15) 695 byte 6 scsi lun (0-->7) 696 byte 7 tagged queue (1 enabled) 697 byte 8 cache mode (1 enabled) 698 byte 9 max speed (0/1/2/3/4, 699 async/20/40/80/160 for scsi) 700 (0/1/2/3/4, 33/66/100/133/150 for ide ) 701 ================ ============================================= 702 703GUI_MODIFY_PASS_THROUGH 704 Modify pass through disk 705 706 ================ ============================================= 707 byte 0,1 length 708 byte 2 command code 0x41 709 byte 3 device # 710 byte 4 scsi channel (0/1) 711 byte 5 scsi id (0-->15) 712 byte 6 scsi lun (0-->7) 713 byte 7 tagged queue (1 enabled) 714 byte 8 cache mode (1 enabled) 715 byte 9 max speed (0/1/2/3/4, 716 async/20/40/80/160 for scsi) 717 (0/1/2/3/4, 33/66/100/133/150 for ide ) 718 ================ ============================================= 719 720GUI_DELETE_PASS_THROUGH 721 Delete pass through disk 722 723 ================ ============================================= 724 byte 0,1 length 725 byte 2 command code 0x42 726 byte 3 device# to be deleted 727 ================ ============================================= 728GUI_IDENTIFY_DEVICE 729 Identify Device 730 731 ================ ============================================= 732 byte 0,1 length 733 byte 2 command code 0x43 734 byte 3 Flash Method 735 (0:flash selected, 1:flash not selected) 736 byte 4/5/6/7 IDE device mask to be flashed 737 .. Note:: no response data available 738 ================ ============================================= 739 740GUI_CREATE_RAIDSET 741 Create Raid Set 742 743 ================ ============================================= 744 byte 0,1 length 745 byte 2 command code 0x50 746 byte 3/4/5/6 device mask 747 byte 7-22 raidset name (if byte 7 == 0:use default) 748 ================ ============================================= 749 750GUI_DELETE_RAIDSET 751 Delete Raid Set 752 753 ================ ============================================= 754 byte 0,1 length 755 byte 2 command code 0x51 756 byte 3 raidset# 757 ================ ============================================= 758 759GUI_EXPAND_RAIDSET 760 Expand Raid Set 761 762 ================ ============================================= 763 byte 0,1 length 764 byte 2 command code 0x52 765 byte 3 raidset# 766 byte 4/5/6/7 device mask for expansion 767 byte 8/9/10 (8:0 no change, 1 change, 0xff:terminate, 768 9:new raid level, 769 10:new stripe size 770 0/1/2/3/4/5->4/8/16/32/64/128K ) 771 byte 11/12/13 repeat for each volume in the raidset 772 ================ ============================================= 773 774GUI_ACTIVATE_RAIDSET 775 Activate incomplete raid set 776 777 ================ ============================================= 778 byte 0,1 length 779 byte 2 command code 0x53 780 byte 3 raidset# 781 ================ ============================================= 782 783GUI_CREATE_HOT_SPARE 784 Create hot spare disk 785 786 ================ ============================================= 787 byte 0,1 length 788 byte 2 command code 0x54 789 byte 3/4/5/6 device mask for hot spare creation 790 ================ ============================================= 791 792GUI_DELETE_HOT_SPARE 793 Delete hot spare disk 794 795 ================ ============================================= 796 byte 0,1 length 797 byte 2 command code 0x55 798 byte 3/4/5/6 device mask for hot spare deletion 799 ================ ============================================= 800 801GUI_CREATE_VOLUME 802 Create volume set 803 804 ================ ============================================= 805 byte 0,1 length 806 byte 2 command code 0x60 807 byte 3 raidset# 808 byte 4-19 volume set name 809 (if byte4 == 0, use default) 810 byte 20-27 volume capacity (blocks) 811 byte 28 raid level 812 byte 29 stripe size 813 (0/1/2/3/4/5->4/8/16/32/64/128K) 814 byte 30 channel 815 byte 31 ID 816 byte 32 LUN 817 byte 33 1 enable tag 818 byte 34 1 enable cache 819 byte 35 speed 820 (0/1/2/3/4->async/20/40/80/160 for scsi) 821 (0/1/2/3/4->33/66/100/133/150 for IDE ) 822 byte 36 1 to select quick init 823 ================ ============================================= 824 825GUI_MODIFY_VOLUME 826 Modify volume Set 827 828 ================ ============================================= 829 byte 0,1 length 830 byte 2 command code 0x61 831 byte 3 volumeset# 832 byte 4-19 new volume set name 833 (if byte4 == 0, not change) 834 byte 20-27 new volume capacity (reserved) 835 byte 28 new raid level 836 byte 29 new stripe size 837 (0/1/2/3/4/5->4/8/16/32/64/128K) 838 byte 30 new channel 839 byte 31 new ID 840 byte 32 new LUN 841 byte 33 1 enable tag 842 byte 34 1 enable cache 843 byte 35 speed 844 (0/1/2/3/4->async/20/40/80/160 for scsi) 845 (0/1/2/3/4->33/66/100/133/150 for IDE ) 846 ================ ============================================= 847 848GUI_DELETE_VOLUME 849 Delete volume set 850 851 ================ ============================================= 852 byte 0,1 length 853 byte 2 command code 0x62 854 byte 3 volumeset# 855 ================ ============================================= 856 857GUI_START_CHECK_VOLUME 858 Start volume consistency check 859 860 ================ ============================================= 861 byte 0,1 length 862 byte 2 command code 0x63 863 byte 3 volumeset# 864 ================ ============================================= 865 866GUI_STOP_CHECK_VOLUME 867 Stop volume consistency check 868 869 ================ ============================================= 870 byte 0,1 length 871 byte 2 command code 0x64 872 ================ ============================================= 873 8744. Returned data 875---------------- 876 877(A) Header 878 3 bytes sequence (0x5E, 0x01, 0x61) 879(B) Length 880 2 bytes 881 (low byte 1st, excludes length and checksum byte) 882(C) 883 status or data: 884 885 1) If length == 1 ==> 1 byte status code:: 886 887 #define GUI_OK 0x41 888 #define GUI_RAIDSET_NOT_NORMAL 0x42 889 #define GUI_VOLUMESET_NOT_NORMAL 0x43 890 #define GUI_NO_RAIDSET 0x44 891 #define GUI_NO_VOLUMESET 0x45 892 #define GUI_NO_PHYSICAL_DRIVE 0x46 893 #define GUI_PARAMETER_ERROR 0x47 894 #define GUI_UNSUPPORTED_COMMAND 0x48 895 #define GUI_DISK_CONFIG_CHANGED 0x49 896 #define GUI_INVALID_PASSWORD 0x4a 897 #define GUI_NO_DISK_SPACE 0x4b 898 #define GUI_CHECKSUM_ERROR 0x4c 899 #define GUI_PASSWORD_REQUIRED 0x4d 900 901 2) If length > 1: 902 903 data block returned from controller 904 and the contents depends on the command code 905 906(E) Checksum 907 checksum of length and status or data byte 908 909