File: rtncodes.h

package info (click to toggle)
raidutils 0.0.6-20
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 15,468 kB
  • ctags: 22,178
  • sloc: cpp: 39,795; ansic: 22,774; sh: 9,964; makefile: 21
file content (864 lines) | stat: -rw-r--r-- 37,751 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
/* Copyright (c) 1996-2004, Adaptec Corporation
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * - Redistributions of source code must retain the above copyright notice, this
 *   list of conditions and the following disclaimer.
 * - Redistributions in binary form must reproduce the above copyright notice,
 *   this list of conditions and the following disclaimer in the documentation
 *   and/or other materials provided with the distribution.
 * - Neither the name of the Adaptec Corporation nor the names of its
 *   contributors may be used to endorse or promote products derived from this
 *   software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */

#ifndef         __RTNCODES_H
#define         __RTNCODES_H

//File - RTNCODES.H
//***************************************************************************
//
//Description:
//
//    This file contains a list of error and warning types encountered
//in the DPT engine.
//
//Author:       Doug Anderson
//Date:         10/16/92
//
//Editors:
//
//Remarks:
//
//
//***************************************************************************


//Include Files -------------------------------------------------------------


//Definitions - Defines & Constants -----------------------------------------

//*************************************************************************
//                      Message Return Values
//*************************************************************************

// Message processed and complete
#define MSG_RTN_COMPLETED       0x0000L

//-------------------------------------------------------------------------
// Message started but not complete
#define MSG_RTN_STARTED         0x0003L

//-------------------------------------------------------------------------
// Message processed but failed.  An error has been entered into the
// error log. (A MSG_GET_ALL_ERRORS should be performed)
#if defined(_DPT_DOS)
#define MSG_RTN_FAILED          0x4000
#else
#define MSG_RTN_FAILED          0x80000000L
#endif

// Note:
//       The OS dependent layer of the engine reports an error to the
//engine by returning a value with the MSB (bit #15) set.  The lower
//15 bits of the return value (bits 14-0) represent a sub-error code.
//A failure returned from the OS dependent layer will get logged as
//follows:
//              error.code -> ERR_IO_DRIVER
//              error.data -> sub-error code
//
//   As is the case with all other engine errors, the value returned
//to the message initiator will simply be MSG_RTN_FAILED (0x8000).

//-------------------------------------------------------------------------
// Message successfull, but insufficient space allocated for return data
#define MSG_RTN_DATA_OVERFLOW   0x0001L

//-------------------------------------------------------------------------
// Message successfull, but insufficient # of valid input bytes
#define MSG_RTN_DATA_UNDERFLOW  0x0002L

//-------------------------------------------------------------------------
// Message ignored (Not processed by target object)
#define MSG_RTN_IGNORED         0x0004L

//-------------------------------------------------------------------------
// The comm. engine should disconnect from the current end point.
// Note:  This message should never get returned to an application.
#define MSG_RTN_DISCONNECT      0x0008L

//-------------------------------------------------------------------------


//*************************************************************************
//                      Error Codes
//*************************************************************************


//===========================================================================
//              Engine Init/Connect/Access Errors
//---------------------------------------------------------------------------

//=============================
// Engine initialization errors
//=============================

  // A failure occurred allocating the engine connection list
#define ERR_CONN_LIST_ALLOC     (0x0010L | MSG_RTN_FAILED)
  // A failure occurred allocating an engine semaphore
#define ERR_SEMAPHORE_ALLOC     (0x0011L | MSG_RTN_FAILED)
  // A generic failure was returned from osdOpenEngine()
#define	ERR_OSD_OPEN_ENGINE		(0x0012L | MSG_RTN_FAILED)

//================================
// Errors connecting to the engine
//================================

  // An invalid I/O method was specified while trying to connect
  // (Could also occur if an invalid I/O method gets passed to osdSendCCB())
#define ERR_INVALID_IO_METHOD   (0x0013L | MSG_RTN_FAILED)
  // SmartRom was not detected, thus it may not be used as the I/O method
#define ERR_NO_SMARTROM         (0x0014L | MSG_RTN_FAILED)

//============================
// Errors accessing the engine
//============================

  // The engine did not initialize properly and may not be accessed
  // (Try reloading the engine)
#define ERR_ENGINE_INIT         (0x0015L | MSG_RTN_FAILED)
  // An invalid connection tag was specified: DPT_CallEngine() parameter #1
#define ERR_INVALID_CONN_TAG    (0x0016L | MSG_RTN_FAILED)
  // A timeout occurred waiting for access to a shared resource
  // (ie. Waiting for access to the connection list)
#define ERR_SEMAPHORE_TIMEOUT   (0x0017L | MSG_RTN_FAILED)
  // A NULL I/O buffer was passed into the engine
  // (toEng_P and fromEng_P need to have at least dptData_S bytes allocated)
#define ERR_NULL_IO_BUFFER      (0x0018L | MSG_RTN_FAILED)

  // Invalid target tag specified
#define ERR_INVALID_TGT_TAG     (0x0019L | MSG_RTN_FAILED)

//============================
// Errors unloading the engine
//============================

  // A failure occurred deleting an engine semaphore
#define ERR_DESTROY_SEMAPHORE   (0x001aL | MSG_RTN_FAILED)


//===========================================================================
//              Miscellaneous engine errors
//---------------------------------------------------------------------------

  // A general memory allocation error occurred
#define ERR_MEM_ALLOC           (0x0160L | MSG_RTN_FAILED)

  // A device could not be added to the engine core because of an
  // invalid SCSI address.
#define ERR_INVALID_DEV_ADDR    (0x01a1L | MSG_RTN_FAILED)

  // A device's DPT name field could not be set because another device
  // already has the specified DPT name.
#define ERR_DUPLICATE_NAME      (0x01a2L | MSG_RTN_FAILED)

  // An error occurred trying to get a CCB for an I/O operation
  // (This is probably due to a memory allocation error)
#define ERR_GET_CCB             (0x01a3L | MSG_RTN_FAILED)

  // Unable to save the RAID build/rebuild/verify rate because there
  // are no RAID devices attached to the target manager.
#define ERR_NO_RAID_DEVICES     (0x01a4L | MSG_RTN_FAILED)

  // A DPT reserve block signature was not found in the last physical block
#define ERR_RESERVE_BLK_SIG     (0x01a5L | MSG_RTN_FAILED)

  // The target device could not be set to format the specified block size
#define ERR_FORMAT_BLK_SIZE     (0x01a6L | MSG_RTN_FAILED)

//===========================================================================
//              Errors Encountered Creating a RAID drive
//---------------------------------------------------------------------------

// ----- Invalid Header Errors -----

  // The specified RAID reference # is not supported by the target
  // RAID manager.
#define ERR_RAID_REFNUM         (0x0061L | MSG_RTN_FAILED)

// ----- Component Sanity Check Errors -----
// Note: Sanity checks must be met in order to create a ghost device

  // A component was specified more than 1 time in the component list
#define ERR_RAID_COMP_DUPLICATE (0x0064L | MSG_RTN_FAILED)

  // One of the specified component devices was flagged as RAID
  // restricted (the device cannot be a component of a RAID device).
#define ERR_RAID_COMP_RESTRICT  (0x0066L | MSG_RTN_FAILED)

  // One of the specified RAID components is already a component of
  // another RAID drive.
#define ERR_RAID_COMP_USED      (0x0067L | MSG_RTN_FAILED)

  // One of the specified RAID components is a ghosted device.
  // A ghosted device can only be a component of another ghosted device.
#define ERR_RAID_COMP_GHOST     (0x0068L | MSG_RTN_FAILED)

  // One of the specified RAID components is a failed device
#define ERR_RAID_COMP_FAILED    (0x006aL | MSG_RTN_FAILED)

// ----- RAID definition/restriction verification -----

  // The specified number of component drives is below the minimum
#define ERR_RAID_TOO_FEW        (0x006bL | MSG_RTN_FAILED)

  // The specified number of component drives is above the maximum
#define ERR_RAID_TOO_MANY       (0x006cL | MSG_RTN_FAILED)

  // The specified RAID type requires an even number of component drives.
#define ERR_RAID_EVEN           (0x006dL | MSG_RTN_FAILED)

  // The specified RAID type requires an odd number of component drives.
#define ERR_RAID_ODD            (0x006eL | MSG_RTN_FAILED)

  // The specified RAID type requires that the number of components
  // be a power of 2 plus the number of parity drives.
#define ERR_RAID_POWER_2_PLUS   (0x006fL | MSG_RTN_FAILED)

  // A single channel appeared in the component list more than the
  // number of times permissable with the specified RAID definition.
#define ERR_RAID_CHAN_COUNT     (0x0070L | MSG_RTN_FAILED)

  // One of the component's stripe size is less than the minimum
#define ERR_RAID_MIN_STRIPE     (0x0071L | MSG_RTN_FAILED)

  // One of the component's stripe size is greater than the maximum
#define ERR_RAID_MAX_STRIPE     (0x0072L | MSG_RTN_FAILED)

  // One of the component's had a stripe count of zero.  There must
  // always be at least 1 stripe per component
#define ERR_RAID_ZERO_STRIPES   (0x0073L | MSG_RTN_FAILED)

  // One of the component's had a RAID capacity (stripeSize*numStripes)
  // that exceeded the capacity of the physical device.
#define ERR_RAID_TOO_LARGE      (0x0074L | MSG_RTN_FAILED)

  // The first component device does not start on the first SCSI channel.
#define ERR_RAID_START_CHAN     (0x0075L | MSG_RTN_FAILED)

  // The component devices do not all fall on sequential SCSI channel
  // numbers.
#define ERR_RAID_SEQ_CHAN       (0x0076L | MSG_RTN_FAILED)

  // The component devices have different stripe sizes.
#define ERR_RAID_DIFF_STRIPES   (0x0077L | MSG_RTN_FAILED)

  // The component devices have different number of stripes
#define ERR_RAID_DIFF_NUM_STR   (0x0078L | MSG_RTN_FAILED)

  // One of the component devices has a stripe size that is not an
  // even multiple of the underlying stripe size.
#define ERR_RAID_OVER_STRIPE    (0x0079L | MSG_RTN_FAILED)

// ----- RAID permission verification -----

  // One of the component devices has removable media.
#define ERR_RAID_COMP_REMOVE    (0x007aL | MSG_RTN_FAILED)

  // One of the component devices is an emulated drive.
#define ERR_RAID_COMP_EMULATED  (0x007bL | MSG_RTN_FAILED)

  // One of the component devices is a different device type than
  // the device type specified in the RAID definition.
#define ERR_RAID_COMP_DEVTYPE   (0x007cL | MSG_RTN_FAILED)

  // One of the component devices has a block size that is not equal
  // to 512.
#define ERR_RAID_COMP_NON_512   (0x007dL | MSG_RTN_FAILED)

  // One of the components devices has a block size that is not
  // the same as the other components
#define ERR_RAID_DIFF_BLOCKS    (0x007eL | MSG_RTN_FAILED)

  // One of the component devices has a different capacity than
  // the other components.
#define ERR_RAID_DIFF_CAPACITY  (0x007fL | MSG_RTN_FAILED)

  // One of the component devices has a differnt vendor ID than
  // the other components
#define ERR_RAID_DIFF_VENDOR    (0x0080L | MSG_RTN_FAILED)

  // One of the component devices has a differnt vendor ID than
  // the other components
#define ERR_RAID_DIFF_PRODUCT   (0x0081L | MSG_RTN_FAILED)

  // One of the component devices has a differnt vendor ID than
  // the other components
#define ERR_RAID_DIFF_REVISION  (0x0082L | MSG_RTN_FAILED)


//------------------------------------------

  // The specified manager can not configure RAID devices
#define ERR_RAID_NOT_SUPPORTED  (0x0083L | MSG_RTN_FAILED)
  // The specified HBA does not exist in the system
  // (Generated by creating a SW array)
#define ERR_RAID_INVALID_HBA    (0x0084L | MSG_RTN_FAILED)

  // A component requires a RAID table but sufficient room has not
  // been allocated at the end of the drive.
#define ERR_RAID_TABLE_REQUIRED (0x0085L | MSG_RTN_FAILED)

  // An invalid component tag was specified
#define ERR_RAID_COMP_TAG       (0x0086L | MSG_RTN_FAILED)

  // The maximum # of arrays supported by the target manager
  // already exist (no more may be created)
#define	ERR_RAID_MAX_ARRAYS		(0x0087L | MSG_RTN_FAILED)

  // The target array has at least 1 component drive (probably
  // a replaced drive) that is too small for the array.  A rebuild
  // cannot be performed with a component that is too small.

  // OR for adding drives to an existing array, the drive is smaller than
  // the smallest currently in the array
#define	ERR_RAID_COMP_SIZE	(0x0088L | MSG_RTN_FAILED)

// the array that was asked to be changed was not a FW level array
#define ERR_RAID_FW_LEVEL   (0x0089  | MSG_RTN_FAILED)

//===========================================================================
//              Errors Encountered Adding an HBA
//---------------------------------------------------------------------------

  // The specified HBA address is not a valid EISA or ISA address.
  // (addr must be >x100)
#define ERR_INVALID_HBA_ADDR    (0x0100L | MSG_RTN_FAILED)

  // The connection is configured to handle ISA addresses only.
#define ERR_ISA_ADDR_ONLY       (0x0101L | MSG_RTN_FAILED)

  // There is already a primary controller, another primary
  // controller can not be added.
#define ERR_PRIMARY_HBA_EXISTS  (0x0102L | MSG_RTN_FAILED)

  // There are no more slots available to add another HBA
  // (There are already 15 HBAs in the connection)
#define ERR_NO_MORE_SLOTS       (0x0103L | MSG_RTN_FAILED)

  // Another HBA responds to the specified ISA address
#define ERR_DUP_ISA_ADDR        (0x0104L | MSG_RTN_FAILED)

  // Another HBA exists in the specified EISA slot
#define ERR_DUP_EISA_SLOT       (0x0105L | MSG_RTN_FAILED)

  // An attempt was made to add a secondary HBA with an ISA address
  // of 0x1f0.
#define ERR_PRIMARY_ISA_ADDR    (0x0106L | MSG_RTN_FAILED)

  // An attempt was made to add a primary HBA with an ISA address
  // not equal to 0x1f0.
#define ERR_SECONDARY_ISA_ADDR  (0x0107L | MSG_RTN_FAILED)


//===========================================================================
//              Errors Encountered Adding an Absent Device
//---------------------------------------------------------------------------

  // The engine attempted to find an unused SCSI ID but none
  // were available.
#define ERR_ABS_NO_MORE_IDS     (0x0120L | MSG_RTN_FAILED)

  // An attempt was made to create an absent device with a
  // non-zero SCSI LUN.  Absent devices with non-zero SCSI LUNs
  // are only supported by SCSI bridge controller objects
  // (TY_SCSI_BCD).
#define ERR_ABS_NON_ZERO_LUN    (0x0121L | MSG_RTN_FAILED)

  // The specified SCSI address does not fall within the SCSI
  // address range supported by the target object.
#define ERR_ABS_ADDR_LIMITS     (0x0122L | MSG_RTN_FAILED)

  // The specified SCSI address is already occupied by another
  // device attached to the target object.
#define ERR_ABS_ADDR_OCCUPIED   (0x0123L | MSG_RTN_FAILED)

   // There are no more SCSI LUNs available on the target bridge
   // controller.  No more devices can be added to this bridge
   // controller.
#define ERR_ABS_NO_MORE_LUNS    (0x0125L | MSG_RTN_FAILED)

  // Unable to create the specified artificial object.  This
  // is due to an invalid object type or a memory allocation error.
#define ERR_NEW_ARTIFICIAL      (0x0126L | MSG_RTN_FAILED)


//===========================================================================
//              Data I/O Errors
//---------------------------------------------------------------------------

  // The connection's method of I/O does not support the attempted
  // message
#define ERR_IO_NOT_SUPPORTED    (0x0161L | MSG_RTN_FAILED)

  // The SCSI read or write was not issued to hardware because the
  // command exceeded the target device's capacity
#define ERR_RW_EXCEEDS_CAPACITY (0x0162L | MSG_RTN_FAILED)

  // A SCSI pass through command had both the data input and
  // data output bits set.
#define ERR_DATA_IN_OUT         (0x0163L | MSG_RTN_FAILED)

  // A SCSI pass through command was sent to the target object
  // but failed.
#define ERR_SCSI_CMD_FAILED     (0x0164L | MSG_RTN_FAILED)

  // An I/O operation was attempted to an artificial object
#define ERR_ARTIFICIAL_IO       (0x0165L | MSG_RTN_FAILED)

  // An I/O operation was performed, but did not complete without error
#define ERR_SCSI_IO             (0x0166L | MSG_RTN_FAILED)

  // An I/O operation was attempted on an HBA in blink LED mode
#define ERR_BLINK_LED_IO        (0x0167L | MSG_RTN_FAILED)

  // The OSD layer could not allocate sufficient memory to perform the
  // I/O operation
#define	ERR_OSD_MEM_ALLOC	(0x0168L | MSG_RTN_FAILED)

  // A message could not be successfully completed because the target
  // object was formatting
#define	ERR_FORMATTING		(0x0169L | MSG_RTN_FAILED)

  // An EATA command packet could not be sent because the HBA
  // has the busy signal asserted
#define	ERR_HBA_BUSY		(0x016aL | MSG_RTN_FAILED)

  // An EATA command packet could not be sent because the HBA
  // returned DPTH indicating that it is initializing
#define	ERR_HBA_INITIALIZING	(0x016bL | MSG_RTN_FAILED)


  // A failure occurred trying to determine if a device
  // is busy (ie. mounted by the OS)
#define	ERR_BUSY_CHECK_FAILED	(0x016cL | MSG_RTN_FAILED)

//===========================================================================
//      Errors encountered enabling a RAID configuration
//---------------------------------------------------------------------------

  // An error occurred deleting an existing RAID device
#define ERR_DEL_OLD_RAID        (0x0180L | MSG_RTN_FAILED)
  // An error occurred creating a new RAID device
#define ERR_ENABLE_NEW_RAID     (0x0181L | MSG_RTN_FAILED)
  // An error occurred updating the OS config (ie. AIX ODM database)
#define ERR_UPDATE_OS_CONFIG    (0x0182L | MSG_RTN_FAILED)
  // An action could not be completed due to a device reservation conflict
#define ERR_RESERVATION_CONFLICT   (0x0183L | MSG_RTN_FAILED)

//===========================================================================
//      Errors attempting to enter an object into the engine core
//---------------------------------------------------------------------------

  // An object could not be added to the engine core because its
  // SCSI address was outside of the bounds of the target manager.
#define ERR_SCSI_ADDR_BOUNDS    (0x01c0L | MSG_RTN_FAILED)

  // An object could not be added to the engine core due to
  // a SCSI address conflict with an existing object.
#define ERR_SCSI_ADDR_CONFLICT  (0x01c1L | MSG_RTN_FAILED)

//===========================================================================
//              Errors deleting an object
//---------------------------------------------------------------------------

  // Unable to delete the target object from the engine.  The object
  // has some higher level dependency.
#define ERR_CANNOT_DELETE       (0x01e0L | MSG_RTN_FAILED)


//===========================================================================
//              Errors downloading firmware
//---------------------------------------------------------------------------

  // There are no non-removable DASD devices to store the FW code.
#define ERR_FWD_NO_SPACE        (0x01f0L | MSG_RTN_FAILED)

  // There are only DASD devices without sufficient space reserved
  // for the firmware code.  The code can still be written to the
  // disks, but the user should beware.
#define ERR_FWD_NOT_RESERVED    (0x01f1L | MSG_RTN_FAILED)

  // A firmware download has not been successfully initialized
#define ERR_FWD_NOT_INITIALIZED (0x01f2L | MSG_RTN_FAILED)

  // There was a block # mismatch during a FW download burst
#define ERR_FWD_BLK_MISMATCH    (0x01f3L | MSG_RTN_FAILED)

  // Too many blocks were specified for the final FW download burst
#define ERR_FWD_BLK_OVERFLOW    (0x01f4L | MSG_RTN_FAILED)

//===========================================================================
//              Errors reserving disk space
//---------------------------------------------------------------------------

  // Cannot reserve disk space on a removable media device
#define ERR_RSV_REMOVABLE       (0x0200L | MSG_RTN_FAILED)
  // Cannot reserve disk space on a non-DASD device
#define ERR_RSV_NOT_DASD        (0x0201L | MSG_RTN_FAILED)
  // The # of blocks reserved must be greater than zero
#define ERR_RSV_NON_ZERO        (0x0202L | MSG_RTN_FAILED)
  // HBA is not capable is using downloadable FW
#define ERR_RSV_HBA_UNABLE      (0x0203L | MSG_RTN_FAILED)
  // Memory allocation failure or I/O operation failure
#define ERR_RSV_OTHER           (0x0204L | MSG_RTN_FAILED)

//===========================================================================
//              Errors scanning for SCSI devices
//---------------------------------------------------------------------------

  // An error occurred scanning for physical devices
#define ERR_SCAN_PHYSICALS      (0x0220L | MSG_RTN_FAILED)
  // An error occurred initializing a physical device
#define ERR_INIT_PHYSICALS      (0x0221L | MSG_RTN_FAILED)
  // An error occurred scanning for logical devices
#define ERR_SCAN_LOGICALS       (0x0222L | MSG_RTN_FAILED)
  // An error occurred initializing a logical device
#define ERR_INIT_LOGICALS       (0x0223L | MSG_RTN_FAILED)

//===========================================================================
//                      Communication Errors
//---------------------------------------------------------------------------

  // Error transmitting a data buffer to a remote engine
#define ERR_COMM_XMIT_BUFFER    (0x0300L | MSG_RTN_FAILED)
  // Error recieving a data buffer from a remote engine
#define ERR_COMM_RCVE_BUFFER    (0x0301L | MSG_RTN_FAILED)
  // An unexpected disconnect occurred
#define ERR_COMM_DISCONNECTED   (0x0302L | MSG_RTN_FAILED)
  // Too much data was transfered
#define ERR_COMM_DATA_OVERFLOW  (0x0303L | MSG_RTN_FAILED)

// TLI Specific Errors................................

  // Error occurred with t_open()
#define ERRC_T_OPEN             (0x0320L | MSG_RTN_FAILED)
  // Error occurred with t_bind()
#define ERRC_T_BIND             (0x0321L | MSG_RTN_FAILED)
  // Error occurred with t_alloc()
#define ERRC_T_ALLOC            (0x0322L | MSG_RTN_FAILED)
  // Error occurred with t_connect()
#define ERRC_T_CONNECT          (0x0323L | MSG_RTN_FAILED)
  // Error occurred with t_listen()
#define ERRC_T_LISTEN           (0x0324L | MSG_RTN_FAILED)
  // Error occurred with t_accept()
#define ERRC_T_ACCEPT           (0x0325L | MSG_RTN_FAILED)

// DOS SPX Specific Errors............................

  // Error initializing netware calls
#define ERRC_COMM_NW_INIT	(0x0330L | MSG_RTN_FAILED)

// Winsock Specific Errors............................

  // Error initializing Winsock (wrong version)
#define ERRC_COMM_WS_INIT	(0x0335L | MSG_RTN_FAILED)

// Basic comm. engine errors..........................

// Note: ICR = Input Connection Request

  // A timeout has occurred waiting for a mutually exclusive
  // semaphore to become available
#define ERRC_SEMAPHORE_TIMEOUT  (0x0340L | MSG_RTN_FAILED)
  // An invalid connection tag was specified
#define ERRC_CONNECTION_TAG     (0x0341L | MSG_RTN_FAILED)
  // A password string was passed in that was not NULL terminated
  // and insufficient space existed to NULL terminate it.
#define ERRC_NOT_NULL_TERMED    (0x0342L | MSG_RTN_FAILED)
  // A general memory allocation error has occurred in the comm.
  // engine.
#define ERRC_MEM_ALLOC          (0x0343L | MSG_RTN_FAILED)
  // A NULL I/O buffer was passed into the comm. engine
#define ERRC_NULL_IO_BUFFER     (0x0344L | MSG_RTN_FAILED)
  // An invalid password was specified with a login attempt
#define ERRC_INVALID_PASSWORD   (0x0345L | MSG_RTN_FAILED)
  // A connection to a DPT engine failed because the user has not
  // succesfully logged into the DPT engine.
#define ERRC_NOT_LOGGED_IN      (0x0346L | MSG_RTN_FAILED)
  // A failure has occurred loading the DPT engine
#define ERRC_ENGINE_LOAD        (0x0347L | MSG_RTN_FAILED)
  // The requested feature (message) is not supported by the target
#define ERRC_NOT_SUPPORTED      (0x0348L | MSG_RTN_FAILED)
  // No change was made to the ICR search thread since it was
  // already in the desired state (active)
#define ERRC_ICRS_ACTIVE        (0x0349L | MSG_RTN_FAILED)
  // No change was made to the ICR search thread since it was
  // already in the desired state (inactive)
#define ERRC_ICRS_INACTIVE      (0x034aL | MSG_RTN_FAILED)
  // The ICR search start or stop request has already been posted
#define ERRC_ICRS_REQ_POSTED    (0x034bL | MSG_RTN_FAILED)
  // A failure occurred attempting to start the ICR search thread
#define ERRC_ICRS_THREAD_START  (0x034cL | MSG_RTN_FAILED)
  // A start ICR search thread request has not been posted
#define ERRC_ICRS_START_REQUEST (0x034dL | MSG_RTN_FAILED)
  // A failure occurred initializing the comm. module prior to
  // executing the ICR search thread
#define ERRC_ICRS_INIT          (0x034eL | MSG_RTN_FAILED)
  // A failure occurred accepting a pending ICR
#define ERRC_ACCEPTING_ICR      (0x034fL | MSG_RTN_FAILED)
  // A failure occurred transmitting the new engine message sync bytes
#define ERRC_TX_MSG_SYNC        (0x0350L | MSG_RTN_FAILED)
  // A failure occurred receiving the new message acknowledge sync bytes
#define ERRC_RX_MSG_ACK         (0x0351L | MSG_RTN_FAILED)
  // A failure occurred receiving the message command header
#define ERRC_RX_MSG_HEADER      (0x0352L | MSG_RTN_FAILED)
  // A failure occurred transmitting the message command header
#define ERRC_TX_MSG_HEADER      (0x0353L | MSG_RTN_FAILED)
  // A failure occurred tranmitting the to engine data
#define ERRC_TX_TO_ENG_DATA		(0x0354L | MSG_RTN_FAILED)
  // A failure occurred receivind the to engine data
#define ERRC_RX_TO_ENG_DATA		(0x0355L | MSG_RTN_FAILED)
  // A failure occurred recieving the message status header
#define ERRC_RX_STATUS_HEADER   (0x0357L | MSG_RTN_FAILED)
  // A failure occurred transmitting the message status header buffer
#define ERRC_TX_STATUS_HEADER   (0x0358L | MSG_RTN_FAILED)
  // A failure occurred recieving the from engine data
#define ERRC_RX_FROM_ENG_DATA	(0x0359L | MSG_RTN_FAILED)
  // A failure occcurred transmitting the from engine data
#define ERRC_TX_FROM_ENG_DATA	(0x035aL | MSG_RTN_FAILED)
  // A comm. engine had a from engine buffer that was too small for
  // the specified allocation size.  Attempts to increase the buffer
  // size failed.
#define ERRC_FROM_ENG_SIZE      (0x035bL | MSG_RTN_FAILED)
  // A comm. engine had a to engine buffer that was too small for
  // the specified allocation size.  Attempts to increase the buffer
  // size failed.
#define ERRC_TO_ENG_SIZE        (0x035cL | MSG_RTN_FAILED)
  // A failure occurred initializing the serial port
#define ERRC_SERIAL_INIT        (0x035dL | MSG_RTN_FAILED)
  // Unable to establish a connection at any of the supported
  // baud rates
#define ERRC_BAUD_RATE          (0x035eL | MSG_RTN_FAILED)
  // The specified comm. module is already in use and cannot be accessed
#define ERRC_COMM_BUSY          (0x035fL | MSG_RTN_FAILED)
  // Unable to create a master comm. module of the specified protocol type
#define ERRC_INVALID_PROTOCOL   (0x0360L | MSG_RTN_FAILED)
  // Unable to create the specified comm. module due to a serial port
  // conflict (another module has claimed the serial port)
#define ERRC_PORT_CONFLICT      (0x0361L | MSG_RTN_FAILED)
  // A failure occurred initializing the modem
#define ERRC_MODEM_INIT         (0x0362L | MSG_RTN_FAILED)

  // A modem connection attempt was aborted by the user
#define ERRC_DIAL_ABORT         (0x0365L | MSG_RTN_FAILED)
  // A modem connection attempt timed out
#define ERRC_DIAL_TIMEOUT       (0x0366L | MSG_RTN_FAILED)
  // A busy indiactor was received from the modem
#define ERRC_DIAL_BUSY          (0x0367L | MSG_RTN_FAILED)
  // A beeper number was successfully dialed
  // (The error code is because no connection was established)
#define ERRC_DIAL_BEEPER_OK     (0x0368L | MSG_RTN_FAILED)
  // A beeper number was dialed and an unexpected carrier was established
#define ERRC_DIAL_UNEXPECTED_CD (0x0369L | MSG_RTN_FAILED)
  // A modem dial resulted in a NO DIAL TONE error condition
#define ERRC_DIAL_NO_TONE       (0x036aL | MSG_RTN_FAILED)
  // A modem dial resulted in a NO ANSWER error condition
#define ERRC_DIAL_NO_ANSWER     (0x036bL | MSG_RTN_FAILED)
  // The modem returned an error or unknown status back from the
  // dial command
#define ERRC_DIAL_ERROR         (0x036cL | MSG_RTN_FAILED)

  // An error occurred during comm. engine parameter negotiation.
#define	ERRC_NEGOTIATION		(0x0371L | MSG_RTN_FAILED)

  // The engine message timed out
#define	ERRC_MSG_TIMEOUT		(0x0372L | MSG_RTN_FAILED)
  // A comm. function was aborted by the user
#define	ERRC_USER_ABORT			(0x0373L | MSG_RTN_FAILED)

  // Error calling ReadPropertyValue() during a search for servers
#define ERRSPX_RD_PROPERTY		(0x0380L | MSG_RTN_FAILED)
#define ERRSPX_SAP				(0x0381L | MSG_RTN_FAILED)

// Windows Sockets specific errors....................

  // Unable to allocate a socket descriptor
#define	 ERRC_SOCKET_ALLOC		(0x0390 | MSG_RTN_FAILED)
  // Unable to bind an address to a socket
#define	 ERRC_SOCKET_BIND		(0x0391 | MSG_RTN_FAILED)
  // Failure accepting a connection request
#define	 ERRC_SOCKET_ACCEPT		(0x0392 | MSG_RTN_FAILED)
  // Failure connecting to a "remote" IP address
#define	 ERRC_SOCKET_CONNECT	(0x0393 | MSG_RTN_FAILED)

  // The specified user could not be validated on the remote system
#define	 ERRC_USER_VALIDATION	(0x0394 | MSG_RTN_FAILED)

//===========================================================================
//			Flash Memory Related Errors
//---------------------------------------------------------------------------

  // An error has occurred attempting to erase the HBA's flash memory.
  // Future attempts to write the flash may not succeed.
#define	ERR_FLASH_ERASE		(0x03a0 | MSG_RTN_FAILED)

  // The HBA could not be switched into flash command mode.
  // Flash command mode allows the HBA's flash memory to be programmed.
  // This error most likely occurred for one of the following reasons:
  //    1. The HBA had dirty cache memory
  //    2. A firmware level diagnostic was in progress on the HBA
  //    3. An array build, rebuild, or verify was in progress on the HBA
#define	ERR_FLASH_SWITCH_MODES	(0x03a1 | MSG_RTN_FAILED)

  // The flash memory can only be written in segments that are multiples
  // of 512 bytes.  This error resulted from a MSG_FLASH_WRITE command
  // that specified the number of bytes to be written that was not an
  // even multiple of 512.
#define	ERR_FLASH_WRITE_512	(0x03a2 | MSG_RTN_FAILED)

  // The engine will try to verify that a MSG_FLASH_WRITE command
  // was successful by reading the flash memory and comparing the
  // data read to the data written.  This error results if either
  // the engine's attempt to read the flash failed or if a data
  // miscompare was detected.
#define	ERR_FLASH_ENG_VERIFY	(0x03a3 | MSG_RTN_FAILED)

  // A flash command was issued that requires a successful
  // MSG_FLASH_WRITE_INIT before it can be successfully issued.
#define	ERR_FLASH_INIT_REQ	(0x03a4 | MSG_RTN_FAILED)

//===========================================================================
//			Firmware Diagnostic Related Errors
//---------------------------------------------------------------------------

  // An invalid background task exlusion start time or end time
  // was specified with a MSG_SET_EXCLUSION (must be between 0-23
  // and the startTime must be less than the end time (cannot span midnight))
#define	ERR_EXCLUSION_TIME	(0x03c0 | MSG_RTN_FAILED)

  // A firmware based diagnostic has already been scheduled on the
  // target device, the target device's RAID parent, or another
  // component of the target device's RAID parent.
#define	ERR_DIAG_SCHEDULED	(0x03c1 | MSG_RTN_FAILED)

  // Diagnostic progress information could not be returned
  // because the diagnostic is not (no longer) active
#define	ERR_DIAG_NOT_ACTIVE	(0x03c2 | MSG_RTN_FAILED)

//===========================================================================
//                      Event Logger Related Errors
//---------------------------------------------------------------------------

  // The DPT event logger is not loaded, but is required for the
  // specified message
#define	ERR_ELOG_NOT_LOADED	(0x0400L | MSG_RTN_FAILED)

  // The DPT event logger is already loaded, but should not be loaded
  // for the specified message
#define	ERR_ELOG_LOADED		(0x0401L | MSG_RTN_FAILED)

  // The engine OSD layer had trouble opening DPT event logger events
#define	ERR_ELOG_EVENTS		(0x0402L | MSG_RTN_FAILED)

  // An attempt was made to pause an already paused DPT event logger
#define	ERR_ELOG_PAUSED		(0x0403L | MSG_RTN_FAILED)

  // An attempt was made to continue (unpause/start) a running
  // DPT event logger
#define	ERR_ELOG_NOT_PAUSED	(0x0404L | MSG_RTN_FAILED)

	// The time period the user requested stats for is invalid
#define 	ERR_SLOG_INVALID_TIME (0x0405L | MSG_RTN_FAILED)

	// The user asked for a stats group that was either invalid
	// or not supported to the by the stats object
#define 	ERR_SLOG_STAT_GROUP  (0x0407L | MSG_RTN_FAILED)

// an attempt way made to link two alert manager resources together that were already linked
#define		ERR_ALMS_ALREADY_LINKED	(0x0408 | MSG_RTN_FAILED)

// an attempt was made to unlink resources that were not linked
#define		ERR_ALMS_NOT_LINKED		(0x0409 | MSG_RTN_FAILED)

// an attempt was made to like resources that can not be linked together
#define		ERR_ALMS_INVALID_RESOURCE_TYPE (0x040a | MSG_RTN_FAILED)

// A non-zero save parameters bit (SP) was specified when the
// read & clear bit (bit #6 in SCSI control byte) was set.
#define		ERR_ELOG_NON_ZERO_SP		 (0x040b | MSG_RTN_FAILED)

// A non-zero parameter pointer offset was specified when the
// read & clear bit (bit #6 in SCSI control byte) was set.
#define		ERR_ELOG_NON_ZERO_OFFSET	 (0x040c | MSG_RTN_FAILED)

//===========================================================================
//                      I2O Specific Errors
//---------------------------------------------------------------------------

// The I2O reply packet returned an error
#define		ERR_I2O_REPLY_FAILURE (0x0440 | MSG_RTN_FAILED)


//===========================================================================
//                      Event Logger Related Errors
//---------------------------------------------------------------------------

  // Tried to write drive size table to firmware but no drive size table exists
  // (NULL drive size table)
#define	ERR_NO_DRIVE_SIZE_TABLE		(0x0480L | MSG_RTN_FAILED)

  // Tried to set drive size tablebut umber of drive size entries
  // exceeded maximum supported value
#define	ERR_DRIVE_SIZE_TABLE_MAX	(0x0481L | MSG_RTN_FAILED)


//===========================================================================
//                      Unix Client Errors
//---------------------------------------------------------------------------

  // A really lame error code indicating we don't know what happened
#define	ERR_UNSPECIFIED				(0x0500L | MSG_RTN_FAILED)

  // The ID of the message queue is invalid, indicating that either the open
  // call has not been made, or the engine process is not running.
#define	ERR_NO_MSG_QUEUE_FOUND		(0x0501L | MSG_RTN_FAILED)

  // Unable to signal the engine process even though we have the process ID.
#define	ERR_CANNOT_SIGNAL_PROCESS	(0x0502L | MSG_RTN_FAILED)

  // Could not reallocate client buffers for the requirements of this message.
#define	ERR_CANNOT_ALLOC_BUFFERS	(0x0503L | MSG_RTN_FAILED)

  // The call to msgsnd returned -1. Check errno.
#define	ERR_MSGSND_FAILED			(0x0504L | MSG_RTN_FAILED)

  // The call to msgrcv timed out.
#define	ERR_MSGRCV_TIMEOUT			(0x0505L | MSG_RTN_FAILED)

  // The call to msgrcv was interrupted. (errno == EINTR)
#define	ERR_MSGRCV_INTR				(0x0506L | MSG_RTN_FAILED)

  // The call to msgrcv returned -1, due to some errno other than EINTR.
#define	ERR_MSGRCV_FAILED			(0x0507L | MSG_RTN_FAILED)

  // Unable to set signal handler.
#define	ERR_CANNOT_SET_SIGHANDLER	(0x0508L | MSG_RTN_FAILED)

#endif  // #ifndef __RTNCODES_H