xref: /illumos-gate/usr/src/uts/common/sys/ib/ibnex/ibnex.h (revision bbf21555)
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 /*
221cfa752fSRamaswamy 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 {
881cfa752fSRamaswamy Tummala 	IBNEX_PORT_COMMSVC_NODE		= 0,
891cfa752fSRamaswamy Tummala 	IBNEX_VPPA_COMMSVC_NODE		= 1,
901cfa752fSRamaswamy Tummala 	IBNEX_HCASVC_COMMSVC_NODE	= 2,
911cfa752fSRamaswamy Tummala 	IBNEX_IOC_NODE			= 4,
921cfa752fSRamaswamy Tummala 	IBNEX_PSEUDO_NODE		= 8
937c478bd9Sstevel@tonic-gate } ibnex_node_type_t;
947c478bd9Sstevel@tonic-gate 
951cfa752fSRamaswamy Tummala #define	IBNEX_HCA_CHILD_NODE (IBNEX_PORT_COMMSVC_NODE |	\
961cfa752fSRamaswamy Tummala 	    IBNEX_VPPA_COMMSVC_NODE | IBNEX_HCASVC_COMMSVC_NODE)
971cfa752fSRamaswamy 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;
2281cfa752fSRamaswamy Tummala 
2291cfa752fSRamaswamy Tummala 	ddi_taskq_t		*ibnex_taskq_id;
2307c478bd9Sstevel@tonic-gate } ibnex_t;
2317c478bd9Sstevel@tonic-gate 
23251f34d4bSRajkumar Sivaprakasam /*
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 
2397c478bd9Sstevel@tonic-gate /*
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
266*bbf21555SRichard Lowe #define	IBNEX_DEVFS_ENUMERATE		0x1	/* enumerate via devfs(4FS) */
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