2 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD AND BSD-3-Clause
4 * Copyright (c) 2000 Michael Smith
5 * Copyright (c) 2000 BSDi
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution.
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29 * Copyright (c) 2002 Eric Moore
30 * Copyright (c) 2002 LSI Logic Corporation
31 * All rights reserved.
33 * Redistribution and use in source and binary forms, with or without
34 * modification, are permitted provided that the following conditions
36 * 1. Redistributions of source code must retain the above copyright
37 * notice, this list of conditions and the following disclaimer.
38 * 2. Redistributions in binary form must reproduce the above copyright
39 * notice, this list of conditions and the following disclaimer in the
40 * documentation and/or other materials provided with the distribution.
41 * 3. The party using or redistributing the source code and binary forms
42 * agrees to the disclaimer below and the terms and conditions set forth
45 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
46 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
47 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
48 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
49 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
50 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
51 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
52 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
53 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
54 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
62 * Lookup table for code-to-text translations.
64 struct amr_code_lookup {
69 extern char *amr_describe_code(struct amr_code_lookup *table, u_int32_t code);
71 #ifndef AMR_DEFINE_TABLES
72 extern struct amr_code_lookup amr_table_qinit[];
73 extern struct amr_code_lookup amr_table_sinit[];
74 extern struct amr_code_lookup amr_table_drvstate[];
76 #else /* AMR_DEFINE_TABLES */
78 /********************************************************************************
79 * Look up a text description of a numeric code and return a pointer to same.
82 amr_describe_code(struct amr_code_lookup *table, u_int32_t code)
86 for (i = 0; table[i].string != NULL; i++)
87 if (table[i].code == code)
88 return(table[i].string);
89 return(table[i+1].string);
92 struct amr_code_lookup amr_table_qinit[] = {
93 {"init scanning drives", AMR_QINIT_SCAN},
94 {"init scanning initialising", AMR_QINIT_SCANINIT},
95 {"init firmware initing", AMR_QINIT_FIRMWARE},
96 {"init in progress", AMR_QINIT_INPROG},
97 {"init spinning drives", AMR_QINIT_SPINUP},
98 {"insufficient memory", AMR_QINIT_NOMEM},
99 {"init flushing cache", AMR_QINIT_CACHEFLUSH},
100 {"init successfully done", AMR_QINIT_DONE},
102 {"unknown init code", 0}
105 struct amr_code_lookup amr_table_sinit[] = {
106 {"init abnormal terminated", AMR_SINIT_ABEND},
107 {"insufficient memory", AMR_SINIT_NOMEM},
108 {"firmware flushing cache", AMR_SINIT_CACHEFLUSH},
109 {"init in progress", AMR_SINIT_INPROG},
110 {"firmware spinning drives", AMR_SINIT_SPINUP},
111 {"init successfully done", AMR_SINIT_DONE},
113 {"unknown init code", 0}
116 struct amr_code_lookup amr_table_drvstate[] = {
117 {"offline", AMR_DRV_OFFLINE},
118 {"degraded", AMR_DRV_DEGRADED},
119 {"optimal", AMR_DRV_OPTIMAL},
120 {"online", AMR_DRV_ONLINE},
121 {"failed", AMR_DRV_FAILED},
122 {"rebuild", AMR_DRV_REBUILD},
123 {"hot spare", AMR_DRV_HOTSPARE},
128 struct amr_code_lookup amr_table_adaptertype[] = {
129 {"Series 431", AMR_SIG_431},
130 {"Series 438", AMR_SIG_438},
131 {"Series 762", AMR_SIG_762},
132 {"Integrated HP NetRAID (T5)", AMR_SIG_T5},
133 {"Series 466", AMR_SIG_466},
134 {"Series 467", AMR_SIG_467},
135 {"Integrated HP NetRAID (T7)", AMR_SIG_T7},
136 {"Series 490", AMR_SIG_490},
138 {"unknown adapter", 0}