17c478bd9Sstevel@tonic-gate /* 27c478bd9Sstevel@tonic-gate * CDDL HEADER START 37c478bd9Sstevel@tonic-gate * 47c478bd9Sstevel@tonic-gate * The contents of this file are subject to the terms of the 500a3eaf3SRamaswamy Tummala * Common Development and Distribution License (the "License"). 600a3eaf3SRamaswamy Tummala * You may not use this file except in compliance with the License. 77c478bd9Sstevel@tonic-gate * 87c478bd9Sstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 97c478bd9Sstevel@tonic-gate * or http://www.opensolaris.org/os/licensing. 107c478bd9Sstevel@tonic-gate * See the License for the specific language governing permissions 117c478bd9Sstevel@tonic-gate * and limitations under the License. 127c478bd9Sstevel@tonic-gate * 137c478bd9Sstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each 147c478bd9Sstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 157c478bd9Sstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the 167c478bd9Sstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying 177c478bd9Sstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner] 187c478bd9Sstevel@tonic-gate * 197c478bd9Sstevel@tonic-gate * CDDL HEADER END 207c478bd9Sstevel@tonic-gate */ 217c478bd9Sstevel@tonic-gate /* 22*1cfa752fSRamaswamy Tummala * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. 237c478bd9Sstevel@tonic-gate */ 247c478bd9Sstevel@tonic-gate 257c478bd9Sstevel@tonic-gate #ifndef _SYS_IB_IBNEX_IBNEX_H 267c478bd9Sstevel@tonic-gate #define _SYS_IB_IBNEX_IBNEX_H 277c478bd9Sstevel@tonic-gate 287c478bd9Sstevel@tonic-gate /* 297c478bd9Sstevel@tonic-gate * ibnex.h 307c478bd9Sstevel@tonic-gate * This file contains defines and structures used within the IB Nexus 317c478bd9Sstevel@tonic-gate */ 327c478bd9Sstevel@tonic-gate 337c478bd9Sstevel@tonic-gate #ifdef __cplusplus 347c478bd9Sstevel@tonic-gate extern "C" { 357c478bd9Sstevel@tonic-gate #endif 367c478bd9Sstevel@tonic-gate 377c478bd9Sstevel@tonic-gate #include <sys/sunndi.h> 387c478bd9Sstevel@tonic-gate 397c478bd9Sstevel@tonic-gate /* Defines for return codes within the IB nexus driver */ 407c478bd9Sstevel@tonic-gate typedef enum { 417c478bd9Sstevel@tonic-gate IBNEX_SUCCESS = 0, 427c478bd9Sstevel@tonic-gate IBNEX_FAILURE = -1, 437c478bd9Sstevel@tonic-gate IBNEX_OFFLINE_FAILED = -2, 447c478bd9Sstevel@tonic-gate IBNEX_BUSY = -3, 457c478bd9Sstevel@tonic-gate IBNEX_INVALID_NODE = -4 467c478bd9Sstevel@tonic-gate } ibnex_rval_t; 477c478bd9Sstevel@tonic-gate 4800a3eaf3SRamaswamy Tummala #define IBNEX_IOC_GUID_LEN 33 4900a3eaf3SRamaswamy Tummala #define IBNEX_PHCI_GUID_LEN 66 507c478bd9Sstevel@tonic-gate 517c478bd9Sstevel@tonic-gate /* IOC device node specific data */ 527c478bd9Sstevel@tonic-gate typedef struct ibnex_ioc_node_s { 537c478bd9Sstevel@tonic-gate ib_guid_t iou_guid; /* GUID of the IOU */ 547c478bd9Sstevel@tonic-gate ib_guid_t ioc_guid; /* GUID of the IOC */ 557c478bd9Sstevel@tonic-gate char ioc_id_string[IB_DM_IOC_ID_STRING_LEN]; 567c478bd9Sstevel@tonic-gate uint32_t ioc_ngids; 577c478bd9Sstevel@tonic-gate /* This field will be non NULL only for diconnected IOCs */ 587c478bd9Sstevel@tonic-gate ib_dm_ioc_ctrl_profile_t *ioc_profile; 5900a3eaf3SRamaswamy Tummala char ioc_guid_str[IBNEX_IOC_GUID_LEN]; 6000a3eaf3SRamaswamy Tummala char ioc_phci_guid[IBNEX_PHCI_GUID_LEN]; 617c478bd9Sstevel@tonic-gate } ibnex_ioc_node_t; 627c478bd9Sstevel@tonic-gate 637c478bd9Sstevel@tonic-gate /* DLPI device node specific data */ 647c478bd9Sstevel@tonic-gate typedef struct ibnex_port_node_s { 657c478bd9Sstevel@tonic-gate uint8_t port_num; 667c478bd9Sstevel@tonic-gate int port_commsvc_idx; 677c478bd9Sstevel@tonic-gate ib_guid_t port_guid; 687c478bd9Sstevel@tonic-gate ib_guid_t port_hcaguid; 697c478bd9Sstevel@tonic-gate ib_pkey_t port_pkey; 7000a3eaf3SRamaswamy Tummala dev_info_t *port_pdip; 717c478bd9Sstevel@tonic-gate } ibnex_port_node_t; 727c478bd9Sstevel@tonic-gate 737c478bd9Sstevel@tonic-gate /* Pseudo device node specific data */ 747c478bd9Sstevel@tonic-gate typedef struct ibnex_pseudo_node_s { 757c478bd9Sstevel@tonic-gate char *pseudo_node_addr; /* node addr of drvr */ 767c478bd9Sstevel@tonic-gate char *pseudo_unit_addr; /* unit addr of drvr */ 777c478bd9Sstevel@tonic-gate int pseudo_unit_addr_len; /* unit addr len */ 787c478bd9Sstevel@tonic-gate char *pseudo_devi_name; /* name of driver */ 799d3d2ed0Shiremath int pseudo_merge_node; /* merge node */ 807c478bd9Sstevel@tonic-gate } ibnex_pseudo_node_t; 817c478bd9Sstevel@tonic-gate 827c478bd9Sstevel@tonic-gate /* 837c478bd9Sstevel@tonic-gate * Defines for Child device node types. Note that these values are also 847c478bd9Sstevel@tonic-gate * in use by usr/src/lib/cfgadm_plugins/ib/common/cfga_ib.h. 857c478bd9Sstevel@tonic-gate * Any changes to these need to be reflected in that file as well. 867c478bd9Sstevel@tonic-gate */ 877c478bd9Sstevel@tonic-gate typedef enum { 88*1cfa752fSRamaswamy Tummala IBNEX_PORT_COMMSVC_NODE = 0, 89*1cfa752fSRamaswamy Tummala IBNEX_VPPA_COMMSVC_NODE = 1, 90*1cfa752fSRamaswamy Tummala IBNEX_HCASVC_COMMSVC_NODE = 2, 91*1cfa752fSRamaswamy Tummala IBNEX_IOC_NODE = 4, 92*1cfa752fSRamaswamy Tummala IBNEX_PSEUDO_NODE = 8 937c478bd9Sstevel@tonic-gate } ibnex_node_type_t; 947c478bd9Sstevel@tonic-gate 95*1cfa752fSRamaswamy Tummala #define IBNEX_HCA_CHILD_NODE (IBNEX_PORT_COMMSVC_NODE | \ 96*1cfa752fSRamaswamy Tummala IBNEX_VPPA_COMMSVC_NODE | IBNEX_HCASVC_COMMSVC_NODE) 97*1cfa752fSRamaswamy Tummala 987c478bd9Sstevel@tonic-gate 997c478bd9Sstevel@tonic-gate /* 1007c478bd9Sstevel@tonic-gate * Defines for Child device node state: 1017c478bd9Sstevel@tonic-gate * 1027c478bd9Sstevel@tonic-gate * By default the node is set to CONFIGURED state. 1037c478bd9Sstevel@tonic-gate * CONFIGURED:---(bus_config/cfgadm configure)---->CONFIGURED 1047c478bd9Sstevel@tonic-gate * CONFIGURED:----(cfgadm unconfigure:success)--->UNCONFIGURED 1057c478bd9Sstevel@tonic-gate * CONFIGURED:----(cfgadm unconfigure:fail)--->still CONFIGURED 1067c478bd9Sstevel@tonic-gate * UNCONFIGURED:----(cfgadm configure:success)--->CONFIGURED 1077c478bd9Sstevel@tonic-gate * 1087c478bd9Sstevel@tonic-gate * We maintain two additional states: 1097c478bd9Sstevel@tonic-gate * CONFIGURING:---(bus_config/cfgadm configure in progress 1107c478bd9Sstevel@tonic-gate * UNCONFIGURING:--(cfgadm unconfigure in progress) 1117c478bd9Sstevel@tonic-gate * This is maintained to avoid race conditions between multiple cfgadm 1127c478bd9Sstevel@tonic-gate * operations. 1137c478bd9Sstevel@tonic-gate */ 1147c478bd9Sstevel@tonic-gate typedef enum ibnex_node_state_e { 1157c478bd9Sstevel@tonic-gate IBNEX_CFGADM_CONFIGURED, /* node is "configured" */ 1167c478bd9Sstevel@tonic-gate IBNEX_CFGADM_UNCONFIGURED, /* node is "unconfigured" */ 1177c478bd9Sstevel@tonic-gate IBNEX_CFGADM_CONFIGURING, /* node getting configured */ 1187c478bd9Sstevel@tonic-gate IBNEX_CFGADM_UNCONFIGURING /* node getting unconfigured */ 1197c478bd9Sstevel@tonic-gate } ibnex_node_state_t; 1207c478bd9Sstevel@tonic-gate 1217c478bd9Sstevel@tonic-gate /* 1227c478bd9Sstevel@tonic-gate * Defines for reprobe_state: 1237c478bd9Sstevel@tonic-gate * IBNEX_NODE_REPROBE_NOTIFY_ON_UPDATE 1247c478bd9Sstevel@tonic-gate * Reprobe and notify if there is a property update 1257c478bd9Sstevel@tonic-gate * IBNEX_NODE_REPROBE_NOTIFY_ALWAYS 1267c478bd9Sstevel@tonic-gate * Reprobe and notify always. 1277c478bd9Sstevel@tonic-gate * IBNEX_NODE_REPROBE_IOC_WAIT 1287c478bd9Sstevel@tonic-gate * Reprobe for IOC apid waiting 1297c478bd9Sstevel@tonic-gate * 1307c478bd9Sstevel@tonic-gate * Device reprobes triggered by ibt_reprobe_dev will result in an DDI 1317c478bd9Sstevel@tonic-gate * event, even though no prepoerties have changed. 1327c478bd9Sstevel@tonic-gate */ 13300a3eaf3SRamaswamy Tummala 13400a3eaf3SRamaswamy Tummala /* 13500a3eaf3SRamaswamy Tummala * Defines for node_ap_state: 13600a3eaf3SRamaswamy Tummala * IBNEX_NODE_AP_CONFIGURED 13700a3eaf3SRamaswamy Tummala * this node was not unconfigured by cfgadm. 13800a3eaf3SRamaswamy Tummala * IBNEX_NODE_AP_UNCONFIGURED 13900a3eaf3SRamaswamy Tummala * this node has been unconfigured by cfgadm. 14000a3eaf3SRamaswamy Tummala * IBNEX_NODE_AP_CONFIGURING 14100a3eaf3SRamaswamy Tummala * this node is being configured by cfgadm 14200a3eaf3SRamaswamy Tummala */ 14300a3eaf3SRamaswamy Tummala #define IBNEX_NODE_AP_CONFIGURED 0x0 14400a3eaf3SRamaswamy Tummala #define IBNEX_NODE_AP_UNCONFIGURED 0x1 14500a3eaf3SRamaswamy Tummala #define IBNEX_NODE_AP_CONFIGURING 0x2 14600a3eaf3SRamaswamy Tummala 1477c478bd9Sstevel@tonic-gate #define IBNEX_NODE_REPROBE_NOTIFY_ON_UPDATE 0x01 1487c478bd9Sstevel@tonic-gate #define IBNEX_NODE_REPROBE_NOTIFY_ALWAYS 0x02 1497c478bd9Sstevel@tonic-gate #define IBNEX_NODE_REPROBE_IOC_WAIT 0x04 1507c478bd9Sstevel@tonic-gate 1517c478bd9Sstevel@tonic-gate /* Node specific information, stored as dev_info_t private data */ 1527c478bd9Sstevel@tonic-gate typedef struct ibnex_node_data_s { 1537c478bd9Sstevel@tonic-gate dev_info_t *node_dip; 1547c478bd9Sstevel@tonic-gate union { 1557c478bd9Sstevel@tonic-gate ibnex_ioc_node_t ioc_node; 1567c478bd9Sstevel@tonic-gate ibnex_port_node_t port_node; 1577c478bd9Sstevel@tonic-gate ibnex_pseudo_node_t pseudo_node; 1587c478bd9Sstevel@tonic-gate } node_data; 1597c478bd9Sstevel@tonic-gate struct ibnex_node_data_s *node_next; 1607c478bd9Sstevel@tonic-gate struct ibnex_node_data_s *node_prev; 1617c478bd9Sstevel@tonic-gate ibnex_node_type_t node_type; 1627c478bd9Sstevel@tonic-gate ibnex_node_state_t node_state; 1637c478bd9Sstevel@tonic-gate int node_reprobe_state; /* Node reprobe flag */ 16400a3eaf3SRamaswamy Tummala unsigned int node_ap_state; 1657c478bd9Sstevel@tonic-gate } ibnex_node_data_t; 1667c478bd9Sstevel@tonic-gate 1677c478bd9Sstevel@tonic-gate /* 1687c478bd9Sstevel@tonic-gate * The fields of IOC and Port node are initialized when the 1697c478bd9Sstevel@tonic-gate * device node is created. These are read only for the rest 1707c478bd9Sstevel@tonic-gate * of the IBnexus driver. 1717c478bd9Sstevel@tonic-gate */ 1727c478bd9Sstevel@tonic-gate _NOTE(SCHEME_PROTECTS_DATA("stable data", ibnex_ioc_node_s)) 1737c478bd9Sstevel@tonic-gate _NOTE(SCHEME_PROTECTS_DATA("stable data", ibnex_port_node_s)) 1747c478bd9Sstevel@tonic-gate _NOTE(SCHEME_PROTECTS_DATA("stable data", ibnex_pseudo_node_s)) 1757c478bd9Sstevel@tonic-gate _NOTE(SCHEME_PROTECTS_DATA("stable data", ibnex_node_data_s)) 1767c478bd9Sstevel@tonic-gate 1777c478bd9Sstevel@tonic-gate #define IBNEX_VALID_NODE_TYPE(n) \ 1787c478bd9Sstevel@tonic-gate (((n)->node_type == IBNEX_PORT_COMMSVC_NODE) || \ 1797c478bd9Sstevel@tonic-gate ((n)->node_type == IBNEX_VPPA_COMMSVC_NODE) || \ 1807c478bd9Sstevel@tonic-gate ((n)->node_type == IBNEX_HCASVC_COMMSVC_NODE) || \ 1817c478bd9Sstevel@tonic-gate ((n)->node_type == IBNEX_IOC_NODE) || \ 1827c478bd9Sstevel@tonic-gate ((n)->node_type == IBNEX_PSEUDO_NODE)) 1837c478bd9Sstevel@tonic-gate 1847c478bd9Sstevel@tonic-gate #define IBNEX_COMMSVC_NODE_TYPE(n) \ 1857c478bd9Sstevel@tonic-gate (((n)->node_type == IBNEX_PORT_COMMSVC_NODE) || \ 1867c478bd9Sstevel@tonic-gate ((n)->node_type == IBNEX_VPPA_COMMSVC_NODE) || \ 1877c478bd9Sstevel@tonic-gate ((n)->node_type == IBNEX_HCASVC_COMMSVC_NODE)) 1887c478bd9Sstevel@tonic-gate 1897c478bd9Sstevel@tonic-gate /* 1907c478bd9Sstevel@tonic-gate * Definition for the IB nexus global per-instance structure. 1917c478bd9Sstevel@tonic-gate * IB nexus supports only one instance. 1927c478bd9Sstevel@tonic-gate */ 1937c478bd9Sstevel@tonic-gate typedef struct ibnex_s { 1947c478bd9Sstevel@tonic-gate dev_info_t *ibnex_dip; 1957c478bd9Sstevel@tonic-gate kmutex_t ibnex_mutex; 1967c478bd9Sstevel@tonic-gate int ibnex_num_comm_svcs; 1977c478bd9Sstevel@tonic-gate char **ibnex_comm_svc_names; 1987c478bd9Sstevel@tonic-gate int ibnex_nvppa_comm_svcs; 1997c478bd9Sstevel@tonic-gate char **ibnex_vppa_comm_svc_names; 2007c478bd9Sstevel@tonic-gate int ibnex_nhcasvc_comm_svcs; 2017c478bd9Sstevel@tonic-gate char **ibnex_hcasvc_comm_svc_names; 2027c478bd9Sstevel@tonic-gate ibnex_node_data_t *ibnex_port_node_head; 2037c478bd9Sstevel@tonic-gate ibnex_node_data_t *ibnex_ioc_node_head; 2047c478bd9Sstevel@tonic-gate ibnex_node_data_t *ibnex_pseudo_node_head; 2057c478bd9Sstevel@tonic-gate 2067c478bd9Sstevel@tonic-gate /* 2077c478bd9Sstevel@tonic-gate * NDI Event handle for -all- ibnexus events 2087c478bd9Sstevel@tonic-gate * Event Cookie for IB_PROP_UPDATE_EVENT event 2097c478bd9Sstevel@tonic-gate */ 2107c478bd9Sstevel@tonic-gate ndi_event_hdl_t ibnex_ndi_event_hdl; 2117c478bd9Sstevel@tonic-gate ddi_eventcookie_t ibnex_prop_update_evt_cookie; 2127c478bd9Sstevel@tonic-gate 2137c478bd9Sstevel@tonic-gate /* Flags & condition variables for reprobe handling */ 2147c478bd9Sstevel@tonic-gate int ibnex_reprobe_state; 2157c478bd9Sstevel@tonic-gate kcondvar_t ibnex_reprobe_cv; 2167c478bd9Sstevel@tonic-gate 2177c478bd9Sstevel@tonic-gate /* Count of disconnected IOCs still configured */ 2187c478bd9Sstevel@tonic-gate int ibnex_num_disconnect_iocs; 2197c478bd9Sstevel@tonic-gate 2207c478bd9Sstevel@tonic-gate /* Pseudo nodes inited from ibnex_get_snapshot? */ 2217c478bd9Sstevel@tonic-gate int ibnex_pseudo_inited; 22251f34d4bSRajkumar Sivaprakasam /* 22351f34d4bSRajkumar Sivaprakasam * IOC list used by all HCAs. 22451f34d4bSRajkumar Sivaprakasam */ 22551f34d4bSRajkumar Sivaprakasam kcondvar_t ibnex_ioc_list_cv; 22651f34d4bSRajkumar Sivaprakasam uint32_t ibnex_ioc_list_state; 22700a3eaf3SRamaswamy Tummala ibdm_ioc_info_t *ibnex_ioc_list; 228*1cfa752fSRamaswamy Tummala 229*1cfa752fSRamaswamy Tummala ddi_taskq_t *ibnex_taskq_id; 2307c478bd9Sstevel@tonic-gate } ibnex_t; 2317c478bd9Sstevel@tonic-gate 2327c478bd9Sstevel@tonic-gate /* 23351f34d4bSRajkumar Sivaprakasam * States for ibnex_ioc_list_state 23451f34d4bSRajkumar Sivaprakasam */ 23551f34d4bSRajkumar Sivaprakasam #define IBNEX_IOC_LIST_READY 0x0 23651f34d4bSRajkumar Sivaprakasam #define IBNEX_IOC_LIST_RENEW 0x1 23751f34d4bSRajkumar Sivaprakasam #define IBNEX_IOC_LIST_ACCESS 0x2 23851f34d4bSRajkumar Sivaprakasam 23951f34d4bSRajkumar Sivaprakasam /* 2407c478bd9Sstevel@tonic-gate * States for ibnex_reprobe_state 2417c478bd9Sstevel@tonic-gate * 0 to REPROBE_ALL_PROGRESS 2427c478bd9Sstevel@tonic-gate * Reprobe all when no reprobes pending 2437c478bd9Sstevel@tonic-gate * REPROBE_ALL_PROGRESS to REPROBE_ALL_WAIT 2447c478bd9Sstevel@tonic-gate * Reprobe all request when another in progress 2457c478bd9Sstevel@tonic-gate * 0 to REPROBE_IOC_WAIT 2467c478bd9Sstevel@tonic-gate * Waiting for One or more reprobe_ioc to complete 2477c478bd9Sstevel@tonic-gate * 2487c478bd9Sstevel@tonic-gate * Reprobe logic will ensure : 2497c478bd9Sstevel@tonic-gate * 1. A single reprobe all at any time. 2507c478bd9Sstevel@tonic-gate * 2. No individual IOC reprobe overlaps with reprobe all. 2517c478bd9Sstevel@tonic-gate * 3. Reprobe for multiple IOCs can be in parallel 2527c478bd9Sstevel@tonic-gate * 4. Single reprobe for each IOC. 2537c478bd9Sstevel@tonic-gate */ 2547c478bd9Sstevel@tonic-gate #define IBNEX_REPROBE_ALL_PROGRESS 0x01 2557c478bd9Sstevel@tonic-gate #define IBNEX_REPROBE_ALL_WAIT 0x02 2567c478bd9Sstevel@tonic-gate #define IBNEX_REPROBE_IOC_WAIT 0x04 2577c478bd9Sstevel@tonic-gate 2587c478bd9Sstevel@tonic-gate /* Defines for creating and binding device nodes. */ 2597c478bd9Sstevel@tonic-gate #define IBNEX_MAX_COMPAT_NAMES 6 2607c478bd9Sstevel@tonic-gate #define IBNEX_MAX_IBPORT_COMPAT_NAMES 3 2617c478bd9Sstevel@tonic-gate #define IBNEX_MAX_COMPAT_LEN 48 2627c478bd9Sstevel@tonic-gate #define IBNEX_MAX_COMPAT_PROP_SZ \ 2637c478bd9Sstevel@tonic-gate IBNEX_MAX_COMPAT_NAMES * IBNEX_MAX_COMPAT_LEN 2647c478bd9Sstevel@tonic-gate #define IBNEX_MAX_IBPORT_COMPAT_PROP_SZ \ 2657c478bd9Sstevel@tonic-gate IBNEX_MAX_IBPORT_COMPAT_NAMES * IBNEX_MAX_COMPAT_LEN 2667c478bd9Sstevel@tonic-gate #define IBNEX_DEVFS_ENUMERATE 0x1 /* enumerate via devfs(7fs) */ 2677c478bd9Sstevel@tonic-gate #define IBNEX_CFGADM_ENUMERATE 0x2 /* enumerate via cfgadm */ 2687c478bd9Sstevel@tonic-gate 2697c478bd9Sstevel@tonic-gate #define IBNEX_MAX_NODEADDR_SZ 35 2707c478bd9Sstevel@tonic-gate 2717c478bd9Sstevel@tonic-gate /* Define for forming the unit address from GUID and class string */ 2727c478bd9Sstevel@tonic-gate #define IBNEX_FORM_GUID(buf, size, guid) \ 2737c478bd9Sstevel@tonic-gate (void) snprintf((buf), (size), "%llX", (longlong_t)guid); 2747c478bd9Sstevel@tonic-gate 2757c478bd9Sstevel@tonic-gate #define IBNEX_INVALID_PKEY(pkey) \ 2767c478bd9Sstevel@tonic-gate (((pkey) == IB_PKEY_INVALID_FULL) || \ 2777c478bd9Sstevel@tonic-gate ((pkey) == IB_PKEY_INVALID_LIMITED)) 2787c478bd9Sstevel@tonic-gate 2797c478bd9Sstevel@tonic-gate /* 2807c478bd9Sstevel@tonic-gate * Defines for the tags of IB DDI events 2817c478bd9Sstevel@tonic-gate */ 2827c478bd9Sstevel@tonic-gate typedef enum { 2837c478bd9Sstevel@tonic-gate IB_EVENT_TAG_PROP_UPDATE = 0 2847c478bd9Sstevel@tonic-gate } ib_ddi_event_tag_t; 2857c478bd9Sstevel@tonic-gate 2869d3d2ed0Shiremath /* Definations for IB HW in device tree status */ 2879d3d2ed0Shiremath #define IBNEX_DEVTREE_NOT_CHECKED -1 2889d3d2ed0Shiremath #define IBNEX_HW_NOT_IN_DEVTREE 0 2899d3d2ed0Shiremath #define IBNEX_HW_IN_DEVTREE 1 2909d3d2ed0Shiremath 2917c478bd9Sstevel@tonic-gate #ifdef __cplusplus 2927c478bd9Sstevel@tonic-gate } 2937c478bd9Sstevel@tonic-gate #endif 2947c478bd9Sstevel@tonic-gate 2957c478bd9Sstevel@tonic-gate #endif /* _SYS_IB_IBNEX_IBNEX_H */ 296