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 */