Print this page
OS-1996 mpt_sas: allow physical topology enumeration in libtopo
Reviewed by: Keith Wesolowski <keith.wesolowski@joyent.com>


   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) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
  24  */



  25 
  26 #ifndef _DISK_H
  27 #define _DISK_H
  28 
  29 #include <fm/topo_mod.h>
  30 #include <libdevinfo.h>
  31 
  32 #ifdef __cplusplus
  33 extern "C" {
  34 #endif
  35 
  36 /* Topo plugin version */
  37 #define DISK_VERSION                    TOPO_VERSION
  38 
  39 /* Max. number of devices for thumper */
  40 #define DEVID_MAX               48
  41 
  42 /* Properties added to the "storage" pgroup: */
  43 #define TOPO_PGROUP_STORAGE             "storage"
  44 #define TOPO_STORAGE_LOGICAL_DISK_NAME  "logical-disk"
  45 #define TOPO_STORAGE_MODEL              "model"
  46 #define TOPO_STORAGE_MANUFACTURER       "manufacturer"
  47 #define TOPO_STORAGE_SERIAL_NUM         "serial-number"
  48 #define TOPO_STORAGE_FIRMWARE_REV       "firmware-revision"
  49 #define TOPO_STORAGE_CAPACITY           "capacity-in-bytes"
  50 
  51 /*
  52  * Properties for binding group: The binding group required in platform
  53  * specific xml that describes 'bay' nodes containing internal disks.
  54  */
  55 #define TOPO_PGROUP_BINDING             "binding"
  56 #define TOPO_BINDING_OCCUPANT           "occupant-path"









  57 
  58 /*
  59  * device node information.
  60  */
  61 typedef struct dev_di_node {
  62         topo_list_t     ddn_list;       /* list of devices */
  63 
  64         /* the following two fields are always defined */
  65         char            *ddn_devid;     /* devid of device */
  66         char            *ddn_dpath;     /* path to devinfo (may be vhci) */
  67         char            **ddn_ppath;    /* physical path to device (phci) */
  68         /*
  69          * the ppath count also indicates number of target port and
  70          * possible number of attached port and bridge port.
  71          */
  72         int             ddn_ppath_count;
  73 
  74         char            *ddn_lpath;     /* logical path (public /dev name) */
  75 
  76         char            *ddn_mfg;       /* misc information about device */




   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) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
  24  */
  25 /*
  26  * Copyright (c) 2013, Joyent, Inc.  All rights reserved.
  27  */
  28 
  29 #ifndef _DISK_H
  30 #define _DISK_H
  31 
  32 #include <fm/topo_mod.h>
  33 #include <libdevinfo.h>
  34 
  35 #ifdef __cplusplus
  36 extern "C" {
  37 #endif
  38 
  39 /* Topo plugin version */
  40 #define DISK_VERSION                    TOPO_VERSION
  41 
  42 /* Max. number of devices for thumper */
  43 #define DEVID_MAX               48
  44 
  45 /* Properties added to the "storage" pgroup: */
  46 #define TOPO_PGROUP_STORAGE             "storage"
  47 #define TOPO_STORAGE_LOGICAL_DISK_NAME  "logical-disk"
  48 #define TOPO_STORAGE_MODEL              "model"
  49 #define TOPO_STORAGE_MANUFACTURER       "manufacturer"
  50 #define TOPO_STORAGE_SERIAL_NUM         "serial-number"
  51 #define TOPO_STORAGE_FIRMWARE_REV       "firmware-revision"
  52 #define TOPO_STORAGE_CAPACITY           "capacity-in-bytes"
  53 
  54 /*
  55  * Properties for binding group: The binding group required in platform
  56  * specific xml that describes 'bay' nodes containing internal disks.
  57  */
  58 #define TOPO_PGROUP_BINDING             "binding"
  59 #define TOPO_BINDING_OCCUPANT           "occupant-path"
  60 #define TOPO_BINDING_DRIVER             "driver"
  61 
  62 /*
  63  * The binding group required in platform specific xml that describes 'bay'
  64  * nodes containing disks attached to an HBA using the 'mpt_sas' driver.
  65  */
  66 #define TOPO_BINDING_DEVCTL             "devctl"
  67 #define TOPO_BINDING_ENCLOSURE          "enclosure"
  68 #define TOPO_BINDING_SLOT               "slot"
  69 
  70 /*
  71  * device node information.
  72  */
  73 typedef struct dev_di_node {
  74         topo_list_t     ddn_list;       /* list of devices */
  75 
  76         /* the following two fields are always defined */
  77         char            *ddn_devid;     /* devid of device */
  78         char            *ddn_dpath;     /* path to devinfo (may be vhci) */
  79         char            **ddn_ppath;    /* physical path to device (phci) */
  80         /*
  81          * the ppath count also indicates number of target port and
  82          * possible number of attached port and bridge port.
  83          */
  84         int             ddn_ppath_count;
  85 
  86         char            *ddn_lpath;     /* logical path (public /dev name) */
  87 
  88         char            *ddn_mfg;       /* misc information about device */