1 /*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21
22 /*
23 * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
24 * Copyright 2015 Nexenta Systems, Inc. All rights reserved.
25 */
26
27 #ifndef _FRAMEWORK_LIBSES_H
28 #define _FRAMEWORK_LIBSES_H
29
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33
34 /*
35 * These are properties attached to the root target node of the enclosure, and
36 * represent the SCSI inquiry data.
37 */
38 #define SCSI_PROP_VENDOR "scsi-inquiry-vendor"
39 #define SCSI_PROP_PRODUCT "scsi-inquiry-product"
40 #define SCSI_PROP_REVISION "scsi-inquiry-revision"
41 #define SCSI_PROP_LID "scsi-inquiry-lu-naa-designator"
42 #define SCSI_PROP_USN "scsi-inquiry-unit-serial-number"
43
44 /*
45 * This property provides a human-readable name for the element type. This is
46 * constant, and not derived from the enclosure data.
47 */
48 #define LIBSES_PROP_ELEMENT_TYPE_NAME "libses-element-type-name"
49
50 /*
51 * The following properties can be added to any node. There is no provision in
52 * the specification for these properties, but they can be derived from vendor
53 * specific data for some enclosures.
54 */
55 #define LIBSES_PROP_PART "libses-part-number"
56 #define LIBSES_PROP_SERIAL "libses-serial-number"
57 #define LIBSES_PROP_FRU "libses-is-fru"
58 #define LIBSES_PROP_PHYS_PARENT "libses-physical-parent-element-index"
59
60 /*
61 * The chassis serial number is a pseudo property that doesn't exist in SES
62 * spec. A single physical chassis may present several logically different SES
63 * targets that are connected to the same or different elements. These targets
64 * can extract the chassis serial number in a vendor-specific way so that
65 * consumers know these SES targets refer to the same device. This defaults to
66 * to the logical-id, and is always present.
67 */
68 #define LIBSES_EN_PROP_CSN "libses-chassis-serial"
69
70 /*
71 * This boolean property identifies a chassis as internal, where the connected
72 * elements are part of a single system chassis and not an external enclosure.
73 * This is used on platforms with a disk backplane that exports a SES target.
74 */
75 #define LIBSES_EN_PROP_INTERNAL "libses-internal"
76
77 /*
78 * This property identifies the subchassis id for those systems that
79 * support the concept of a subchassis.
80 */
81 #define LIBSES_EN_PROP_SUBCHASSIS_ID "libses-subchassis-id"
82
83 /*
84 * Maximum allowed firmware upload chunk size. Obtained in a vendor- or
85 * platform-specific manner but generic in nature.
86 */
87 #define LIBSES_EN_PROP_FIRMWARE_CHUNK_SIZE "libses-firmware-chunksize"
88
89 #ifdef __cplusplus
90 }
91 #endif
92
93 #endif /* _FRAMEWORK_LIBSES_H */