1 /*
   2  * *****************************************************************************
   3  *
   4  * Description
   5  *      hbaapi.h - header file for Sun extension for target mode adaptor
   6  *               support.
   7  *
   8  * License:
   9  *      The contents of this file are subject to the SNIA Public License
  10  *      Version 1.0 (the "License"); you may not use this file except in
  11  *      compliance with the License. You may obtain a copy of the License at
  12  *
  13  *      http://www.snia.org/English/Resources/Code/OpenSource.html
  14  *
  15  *      Software distributed under the License is distributed on an "AS IS"
  16  *      basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
  17  *      the License for the specific language governing rights and limitations
  18  *      under the License.
  19  *
  20  * *******************************************************************************
  21  */
  22 /*
  23  *      Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  24  *      Use is subject to license terms.
  25  */
  26 
  27 #ifdef __cplusplus
  28 extern "C" {
  29 #endif
  30 
  31 
  32 #ifndef _HBA_API_SUN_H
  33 #define _HBA_API_SUN_H
  34 
  35 #include    <hbaapi.h>
  36 
  37 #define HBA_CREATE_WWN_RANDOM           1
  38 #define HBA_CREATE_WWN_FACTORY          2
  39 
  40 typedef struct HBA_NPIVPortList {
  41         uint32_t        numPorts;
  42         char            hbaPaths[1][1024];
  43 } HBA_NPIVPORTLIST, *PHBA_NPIVPORTLIST;
  44 
  45 typedef struct HBA_PortNPIVAttributes {
  46         HBA_INT32       npivflag;
  47         HBA_WWN         NodeWWN;
  48         HBA_WWN         PortWWN;
  49         HBA_UINT32      MaxNumberOfNPIVPorts;
  50         HBA_UINT32      NumberOfNPIVPorts;
  51 } HBA_PORTNPIVATTRIBUTES, *PHBA_PORTNPIVATTRIBUTES;
  52 
  53 typedef struct HBA_NPIVAttributes {
  54         HBA_WWN         NodeWWN;
  55         HBA_WWN         PortWWN;
  56 } HBA_NPIVATTRIBUTES, *PHBA_NPIVATTRIBUTES;
  57 
  58 typedef struct HBA_NPIVCreateEntry {
  59         HBA_WWN         VNodeWWN;
  60         HBA_WWN         VPortWWN;
  61         uint32_t        vindex;
  62 } HBA_NPIVCREATEENTRY, *PHBA_NPIVCREATEENTRY;
  63 
  64 /* Device Level Events */
  65 #define HBA_EVENT_DEVICE_UNKNOWN        0x600
  66 #define HBA_EVENT_DEVICE_OFFLINE        0x601
  67 #define HBA_EVENT_DEVICE_ONLINE         0x602
  68 
  69 HBA_API HBA_UINT32 Sun_HBA_GetNumberOfTgtAdapters();
  70 
  71 HBA_API HBA_STATUS Sun_HBA_GetTgtAdapterName(
  72     HBA_UINT32          adapterindex,
  73     char                *adaptername
  74     );
  75 
  76 HBA_API HBA_HANDLE Sun_HBA_OpenTgtAdapter(
  77     char*               adaptername
  78     );
  79 
  80 HBA_API HBA_STATUS Sun_HBA_OpenTgtAdapterByWWN(
  81     HBA_HANDLE          *handle,
  82     HBA_WWN             wwn
  83     );
  84 
  85 HBA_API HBA_STATUS Sun_HBA_NPIVGetAdapterAttributes(
  86     HBA_HANDLE          handle,
  87     HBA_ADAPTERATTRIBUTES
  88                         *hbaattributes
  89     );
  90 HBA_API HBA_STATUS Sun_HBA_GetNPIVPortInfo(
  91     HBA_HANDLE          handle,
  92     HBA_UINT32          portindex,
  93     HBA_UINT32          vportindex,
  94     HBA_NPIVATTRIBUTES  *attributes
  95     );
  96 HBA_API HBA_STATUS Sun_HBA_DeleteNPIVPort(
  97     HBA_HANDLE          handle,
  98     HBA_UINT32          portindex,
  99     HBA_WWN             vportWWN
 100     );
 101 HBA_API HBA_STATUS Sun_HBA_CreateNPIVPort(
 102     HBA_HANDLE          handle,
 103     HBA_UINT32          portindex,
 104     HBA_WWN             vnodeWWN,
 105     HBA_WWN             vportWWN,
 106     HBA_UINT32          *npivportindex
 107     );
 108 HBA_API HBA_STATUS Sun_HBA_GetPortNPIVAttributes(
 109     HBA_HANDLE          handle,
 110     HBA_UINT32          portindex,
 111     HBA_PORTNPIVATTRIBUTES      *portnpivattributes
 112     );
 113 
 114 HBA_STATUS Sun_HBA_AdapterCreateWWN(
 115     HBA_HANDLE          handle,
 116     HBA_UINT32          portindex,
 117     HBA_WWN             *nwwn,
 118     HBA_WWN             *pwwn,
 119     HBA_WWN             *OUI,
 120     HBA_INT32           method
 121 );
 122 
 123 HBA_STATUS Sun_HBA_AdapterReturnWWN(
 124     HBA_HANDLE          handle,
 125     HBA_UINT32          portindex,
 126     HBA_WWN             *nwwn,
 127     HBA_WWN             *pwwn
 128 );
 129 
 130 HBA_API HBA_STATUS Sun_HBA_RegisterForAdapterDeviceEvents(
 131     void                (*callback)(
 132         void            *data,
 133         HBA_WWN         PortWWN,
 134         HBA_UINT32      eventType,
 135         HBA_UINT32      fabricPortID
 136         ),
 137     void                *userData,
 138     HBA_HANDLE          handle,
 139     HBA_WWN             PortWWN,
 140     HBA_CALLBACKHANDLE  *callbackHandle
 141     );
 142 
 143 HBA_API HBA_STATUS Sun_HBA_ForceLip(
 144     HBA_HANDLE handle,
 145     int *rval);
 146 
 147 #endif /* HBA_API_SUN_H */
 148 
 149 #ifdef __cplusplus
 150 }
 151 #endif /* _HBA_API_SUN_H */