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 5d1a5c838SRamaswamy Tummala * Common Development and Distribution License (the "License"). 6d1a5c838SRamaswamy 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 /* 22d1a5c838SRamaswamy Tummala * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 237c478bd9Sstevel@tonic-gate * Use is subject to license terms. 247c478bd9Sstevel@tonic-gate */ 257c478bd9Sstevel@tonic-gate 267c478bd9Sstevel@tonic-gate #ifndef _SYS_IB_IBNEX_IBNEX_DEVCTL_H 277c478bd9Sstevel@tonic-gate #define _SYS_IB_IBNEX_IBNEX_DEVCTL_H 287c478bd9Sstevel@tonic-gate 29d1a5c838SRamaswamy Tummala #include <sys/ib/ib_types.h> 30d1a5c838SRamaswamy Tummala #include <sys/ib/ibtl/ibtl_types.h> 317c478bd9Sstevel@tonic-gate 327c478bd9Sstevel@tonic-gate #ifdef __cplusplus 337c478bd9Sstevel@tonic-gate extern "C" { 347c478bd9Sstevel@tonic-gate #endif 357c478bd9Sstevel@tonic-gate 367c478bd9Sstevel@tonic-gate /* 377c478bd9Sstevel@tonic-gate * This file contains info for devctls issued by IB cfgadm plugin. 387c478bd9Sstevel@tonic-gate * The only devctl of interest is DEVCTL_AP_CONTROL which uses 397c478bd9Sstevel@tonic-gate * these defines and data structures. 407c478bd9Sstevel@tonic-gate */ 417c478bd9Sstevel@tonic-gate 427c478bd9Sstevel@tonic-gate #define IBNEX_HCAGUID_STRSZ 17 437c478bd9Sstevel@tonic-gate 447c478bd9Sstevel@tonic-gate /* 457c478bd9Sstevel@tonic-gate * types of attachment point Identifiers (APID)s supported 467c478bd9Sstevel@tonic-gate */ 477c478bd9Sstevel@tonic-gate #define IBNEX_BASE_APID 0x01 /* Base static attachment point */ 487c478bd9Sstevel@tonic-gate #define IBNEX_HCA_APID 0x02 /* HCA static attachment point */ 497c478bd9Sstevel@tonic-gate #define IBNEX_DYN_APID 0x04 /* Dynamic IOC/DLPI attachment point */ 507c478bd9Sstevel@tonic-gate #define IBNEX_UNKNOWN_APID 0x08 /* Unknown attachment point */ 517c478bd9Sstevel@tonic-gate 527c478bd9Sstevel@tonic-gate 537c478bd9Sstevel@tonic-gate /* defines for dynamic APID handling */ 547c478bd9Sstevel@tonic-gate #define DYN_SEP "::" 557c478bd9Sstevel@tonic-gate #define GET_DYN(a) (((a) != NULL) ? strstr((a), DYN_SEP) : (void *)0) 567c478bd9Sstevel@tonic-gate 577c478bd9Sstevel@tonic-gate #define IBNEX_FABRIC "fabric" 587c478bd9Sstevel@tonic-gate #define IBNEX_VPPA_STR "vppa" 597c478bd9Sstevel@tonic-gate #define IBNEX_PORT_STR "port" 607c478bd9Sstevel@tonic-gate #define IBNEX_HCASVC_STR "hca-svc" 617c478bd9Sstevel@tonic-gate 627c478bd9Sstevel@tonic-gate /* Enums while reading ib.conf file */ 637c478bd9Sstevel@tonic-gate typedef enum ib_service_type_e { 647c478bd9Sstevel@tonic-gate IB_NAME, /* name = */ 657c478bd9Sstevel@tonic-gate IB_CLASS, /* class = */ 667c478bd9Sstevel@tonic-gate IB_PORT_SERVICE, /* port-svc-list = */ 677c478bd9Sstevel@tonic-gate IB_VPPA_SERVICE, /* vppa-svc-list = */ 687c478bd9Sstevel@tonic-gate IB_HCASVC_SERVICE, /* hca-svc-list = */ 697c478bd9Sstevel@tonic-gate IB_NONE 707c478bd9Sstevel@tonic-gate } ib_service_type_t; 717c478bd9Sstevel@tonic-gate 727c478bd9Sstevel@tonic-gate /* 737c478bd9Sstevel@tonic-gate * defines for nvlist types: (for PORT devices and IOCs) 747c478bd9Sstevel@tonic-gate * The first 6 are common to both IOC and PORT devices. 757c478bd9Sstevel@tonic-gate * The last 9 are used only for IOC devices. 767c478bd9Sstevel@tonic-gate */ 777c478bd9Sstevel@tonic-gate #define IBNEX_NODE_INFO_NVL "node_info" 787c478bd9Sstevel@tonic-gate #define IBNEX_NODE_APID_NVL "node_apid" 797c478bd9Sstevel@tonic-gate #define IBNEX_NODE_TYPE_NVL "node_type" 807c478bd9Sstevel@tonic-gate #define IBNEX_NODE_RSTATE_NVL "node_rstate" 817c478bd9Sstevel@tonic-gate #define IBNEX_NODE_OSTATE_NVL "node_ostate" 827c478bd9Sstevel@tonic-gate #define IBNEX_NODE_COND_NVL "node_condition" 837c478bd9Sstevel@tonic-gate 847c478bd9Sstevel@tonic-gate /* 85*bbf21555SRichard Lowe * This flag is passed from cfgadm to ib(4D) to convey that it 867c478bd9Sstevel@tonic-gate * need not attempt to probe the fabric. 877c478bd9Sstevel@tonic-gate * 887c478bd9Sstevel@tonic-gate * The value of these flags should be same as flags in enum 897c478bd9Sstevel@tonic-gate * ibdm_ibnex_get_ioclist_mtd_t. 907c478bd9Sstevel@tonic-gate */ 917c478bd9Sstevel@tonic-gate #define IBNEX_DONOT_PROBE_FLAG 1 92*bbf21555SRichard Lowe #define IBNEX_NORMAL_PROBE 0 /* flag used by ib(4D) only */ 937c478bd9Sstevel@tonic-gate 947c478bd9Sstevel@tonic-gate /* 957c478bd9Sstevel@tonic-gate * The following are sub-commands to DEVCTL_AP_CONTROL. 967c478bd9Sstevel@tonic-gate * NOTE: IBNEX_NUM_DEVICE_NODES and IBNEX_NUM_HCA_NODES need to be 977c478bd9Sstevel@tonic-gate * separate. The former is used to figure out the dynamic ap_ids for 987c478bd9Sstevel@tonic-gate * the IB fabric. The latter is used for a HCA count on a given host only. 997c478bd9Sstevel@tonic-gate */ 1007c478bd9Sstevel@tonic-gate #define IBNEX_NUM_DEVICE_NODES 0x00010 /* how many device nodes exist? */ 1017c478bd9Sstevel@tonic-gate #define IBNEX_NUM_HCA_NODES 0x00020 /* how many HCAs exist in the host? */ 1027c478bd9Sstevel@tonic-gate #define IBNEX_SNAPSHOT_SIZE 0x00040 /* What is the "snapshot" size? */ 1037c478bd9Sstevel@tonic-gate #define IBNEX_GET_SNAPSHOT 0x00080 /* Get the actual dynamic "snapshot" */ 1047c478bd9Sstevel@tonic-gate #define IBNEX_DEVICE_PATH_SZ 0x00100 /* Given APID's device path size */ 1057c478bd9Sstevel@tonic-gate #define IBNEX_GET_DEVICE_PATH 0x00200 /* Get device path for a Dynamic APID */ 1067c478bd9Sstevel@tonic-gate #define IBNEX_HCA_LIST_SZ 0x00400 /* -x list_clients size for HCA APID */ 1077c478bd9Sstevel@tonic-gate #define IBNEX_HCA_LIST_INFO 0x00800 /* -x list_clients info for HCA APID */ 1087c478bd9Sstevel@tonic-gate #define IBNEX_UNCFG_CLNTS_SZ 0x01000 /* -x unconfig_clients option size */ 1097c478bd9Sstevel@tonic-gate #define IBNEX_UNCFG_CLNTS_INFO 0x02000 /* -x unconfig_clients option data */ 1107c478bd9Sstevel@tonic-gate #define IBNEX_UPDATE_PKEY_TBLS 0x04000 /* -x update_pkey_tbls */ 1117c478bd9Sstevel@tonic-gate #define IBNEX_CONF_ENTRY_ADD 0x08000 /* -x conf_file add_service */ 1127c478bd9Sstevel@tonic-gate #define IBNEX_CONF_ENTRY_DEL 0x10000 /* -x conf_file delete_service */ 1137c478bd9Sstevel@tonic-gate #define IBNEX_HCA_VERBOSE_SZ 0x20000 /* -alv hca_apid devctl size */ 1147c478bd9Sstevel@tonic-gate #define IBNEX_HCA_VERBOSE_INFO 0x40000 /* -alv hca_apid devctl data */ 1157c478bd9Sstevel@tonic-gate #define IBNEX_UPDATE_IOC_CONF 0x80000 /* -x update_ioc_conf */ 1167c478bd9Sstevel@tonic-gate 1177c478bd9Sstevel@tonic-gate /* 1187c478bd9Sstevel@tonic-gate * Data structure passed back and forth user/kernel w/ DEVCTL_AP_CONTROL 1197c478bd9Sstevel@tonic-gate * devctl. Note that these are separate structures as some fields are pointers. 1207c478bd9Sstevel@tonic-gate */ 1217c478bd9Sstevel@tonic-gate typedef struct ibnex_ioctl_data { 1227c478bd9Sstevel@tonic-gate uint_t cmd; /* one of the above commands */ 1237c478bd9Sstevel@tonic-gate caddr_t buf; /* data buffer */ 1247c478bd9Sstevel@tonic-gate uint_t bufsiz; /* data buffer size */ 1257c478bd9Sstevel@tonic-gate caddr_t ap_id; /* Search based on this AP_ID name */ 1267c478bd9Sstevel@tonic-gate uint_t ap_id_len; /* AP_ID name len */ 1277c478bd9Sstevel@tonic-gate uint_t misc_arg; /* reserved */ 1287c478bd9Sstevel@tonic-gate } ibnex_ioctl_data_t; 1297c478bd9Sstevel@tonic-gate 1307c478bd9Sstevel@tonic-gate 1317c478bd9Sstevel@tonic-gate /* For 32-bit app/64-bit kernel */ 1327c478bd9Sstevel@tonic-gate typedef struct ibnex_ioctl_data_32 { 1337c478bd9Sstevel@tonic-gate uint32_t cmd; /* one of the above commands */ 1347c478bd9Sstevel@tonic-gate caddr32_t buf; /* data buffer */ 1357c478bd9Sstevel@tonic-gate uint32_t bufsiz; /* data buffer size */ 1367c478bd9Sstevel@tonic-gate caddr32_t ap_id; /* Search based on this AP_ID name */ 1377c478bd9Sstevel@tonic-gate uint32_t ap_id_len; /* AP_ID name len */ 1387c478bd9Sstevel@tonic-gate uint32_t misc_arg; /* reserved */ 1397c478bd9Sstevel@tonic-gate } ibnex_ioctl_data_32_t; 1407c478bd9Sstevel@tonic-gate 141d1a5c838SRamaswamy Tummala /* 142d1a5c838SRamaswamy Tummala * General ibnex IOCTLs 143d1a5c838SRamaswamy Tummala * 144d1a5c838SRamaswamy Tummala * IBNEX_CTL_GET_API_VER 145d1a5c838SRamaswamy Tummala * ====================== 146d1a5c838SRamaswamy Tummala * 147d1a5c838SRamaswamy Tummala * Gets the version number of the API that IB nexus currently supports. 148d1a5c838SRamaswamy Tummala * 149d1a5c838SRamaswamy Tummala * arg - pointer to a structure of type ibnex_ctl_api_ver_t 150d1a5c838SRamaswamy Tummala * 151d1a5c838SRamaswamy Tummala * Caller does not set any field of this structure. When this IOCTL is issued, 152d1a5c838SRamaswamy Tummala * ib nexus will set api_ver_num field to the currently supported API 153d1a5c838SRamaswamy Tummala * version number. 154d1a5c838SRamaswamy Tummala * 155d1a5c838SRamaswamy Tummala * The caller could issue this IOCTL prior to issuing any other general 156d1a5c838SRamaswamy Tummala * ibnex IOCTLs to detect incompatible changes to the API. The caller may 157d1a5c838SRamaswamy Tummala * call other IOCTLs only if the api_ver_num matches the API version number 158d1a5c838SRamaswamy Tummala * used by the caller. 159d1a5c838SRamaswamy Tummala * 160d1a5c838SRamaswamy Tummala * 161d1a5c838SRamaswamy Tummala * IBNEX_CTL_GET_HCA_LIST 162d1a5c838SRamaswamy Tummala * ====================== 163d1a5c838SRamaswamy Tummala * 164d080a1d7SRamaswamy Tummala * Gets GUIDs of all HCAs in the system 165d1a5c838SRamaswamy Tummala * 166d1a5c838SRamaswamy Tummala * arg - pointer to a structure of type ibnex_ctl_get_hca_list_t 167d1a5c838SRamaswamy Tummala * 168d1a5c838SRamaswamy Tummala * Caller allocates memory for HCA GUIDs. Sets hca_guids field to point to the 169d1a5c838SRamaswamy Tummala * allocated memory. Sets hca_guids_alloc_sz to the number of GUIDs for which 170d1a5c838SRamaswamy Tummala * memory has been allocated. 171d1a5c838SRamaswamy Tummala * 172d1a5c838SRamaswamy Tummala * Upon successful return from the IOCTL, nhcas will contain the number of 173d1a5c838SRamaswamy Tummala * HCAs in the system. HCA GUIDs will be copied into hca_guids array. 174d1a5c838SRamaswamy Tummala * The number of GUIDs copied are nhcas or hca_guids_alloc_sz which ever is 175d1a5c838SRamaswamy Tummala * smaller. 176d1a5c838SRamaswamy Tummala * 177d1a5c838SRamaswamy Tummala * 178d1a5c838SRamaswamy Tummala * IBNEX_CTL_QUERY_HCA 179d1a5c838SRamaswamy Tummala * =================== 180d1a5c838SRamaswamy Tummala * 181d1a5c838SRamaswamy Tummala * Query HCA attributes 182d1a5c838SRamaswamy Tummala * 183d1a5c838SRamaswamy Tummala * arg - pointer to a structure of type ibnex_ctl_query_hca_t 184d1a5c838SRamaswamy Tummala * 185d1a5c838SRamaswamy Tummala * Caller sets hca_guid field of this structure. 186d1a5c838SRamaswamy Tummala * 187e8174f4eSRamaswamy Tummala * Caller allocates memory for hca device path. Sets hca_device_path to point 188e8174f4eSRamaswamy Tummala * to the allocated memory and hca_device_path_alloc_sz to the number of bytes 189e8174f4eSRamaswamy Tummala * allocated. 190e8174f4eSRamaswamy Tummala * 191d1a5c838SRamaswamy Tummala * Upon successful return from the IOCTL, hca_info will contain HCA attributes 192e8174f4eSRamaswamy Tummala * for the specified GUID. hca_info.hca_device_path_len will contain the actual 193d080a1d7SRamaswamy Tummala * string length of the hca device path plus one (for the terminating null 194d080a1d7SRamaswamy Tummala * character). hca_info.hca_device_path will point to null terminated hca device 195d080a1d7SRamaswamy Tummala * path string if the caller allocated memory for the hca device path is large 196e8174f4eSRamaswamy Tummala * enough to hold the hca device path and the terminating null character. 197e8174f4eSRamaswamy Tummala * Otherwise hca_info.hca_device_path will be set to NULL. 198d1a5c838SRamaswamy Tummala * 199d1a5c838SRamaswamy Tummala * 200d1a5c838SRamaswamy Tummala * IBNEX_CTL_QUERY_HCA_PORT 201d1a5c838SRamaswamy Tummala * ======================== 202d1a5c838SRamaswamy Tummala * 203d1a5c838SRamaswamy Tummala * Query HCA port attributes 204d1a5c838SRamaswamy Tummala * 205d1a5c838SRamaswamy Tummala * arg - pointer to a structure of type ibnex_ctl_query_hca_port_t 206d1a5c838SRamaswamy Tummala * 207d1a5c838SRamaswamy Tummala * Caller sets hca_guid and port_num fields. 208d1a5c838SRamaswamy Tummala * 209d1a5c838SRamaswamy Tummala * Caller allocates memory for sgid entries. Sets sgid_tbl to point to 210d1a5c838SRamaswamy Tummala * the allocated memory and sgid_tbl_alloc_sz to the number of sgid entries 211d1a5c838SRamaswamy Tummala * for which memory has been allocated. 212d1a5c838SRamaswamy Tummala * 213d1a5c838SRamaswamy Tummala * Caller allocates memory for pkey entries. Sets pkey_tbl to point to 214d1a5c838SRamaswamy Tummala * the allocated memory and pkey_tbl_alloc_sz to the number of pkey entries 215d1a5c838SRamaswamy Tummala * for which memory has been allocated. 216d1a5c838SRamaswamy Tummala * 217d1a5c838SRamaswamy Tummala * Upon successful return from the IOCTL, port_info will contain HCA port 218d1a5c838SRamaswamy Tummala * attributes for the specified HCA port. port_info.p_sgid_tbl_sz will contain 219d1a5c838SRamaswamy Tummala * the actual number of sgids associated with this port. port_info.p_pkey_tbl_sz 220d1a5c838SRamaswamy Tummala * will contain the actual number of pkeys associated with this port. 221d1a5c838SRamaswamy Tummala * 222d1a5c838SRamaswamy Tummala * port_info.p_sgid_tbl will point to an array containing sgids. The number of 223d1a5c838SRamaswamy Tummala * sgids in the array is sgid_tbl_alloc_sz or port_info.p_sgid_tbl_sz 224d1a5c838SRamaswamy Tummala * whichever is smaller. 225d1a5c838SRamaswamy Tummala * 226d1a5c838SRamaswamy Tummala * port_info.p_pkey_tbl will point to an array containing pkeys. The number of 227d1a5c838SRamaswamy Tummala * pkeys in the array is pkey_tbl_alloc_sz or port_info.p_pkey_tbl_sz 228d1a5c838SRamaswamy Tummala * whichever is smaller. 229d080a1d7SRamaswamy Tummala * 230d080a1d7SRamaswamy Tummala * Error numbers for the above ioctls upon failure: 231d080a1d7SRamaswamy Tummala * EINVAL Invalid parameter passed 232d080a1d7SRamaswamy Tummala * EFAULT A fault occurred copying data to or from the user space 233d080a1d7SRamaswamy Tummala * to the kernel space. 234d080a1d7SRamaswamy Tummala * ENXIO Specified HCA GUID does not exist 235d080a1d7SRamaswamy Tummala * ENOENT Specified HCA port does not exist 236d080a1d7SRamaswamy Tummala * 237d1a5c838SRamaswamy Tummala */ 238d1a5c838SRamaswamy Tummala 239d1a5c838SRamaswamy Tummala 240d1a5c838SRamaswamy Tummala /* 241d1a5c838SRamaswamy Tummala * ibnex specific ioctls 242d1a5c838SRamaswamy Tummala * 243d1a5c838SRamaswamy Tummala * NOTE: The ioctl codes should not collide with generic devctl ioctls 244d1a5c838SRamaswamy Tummala * such as DEVCTL_AP_CONFIGURE. 245d1a5c838SRamaswamy Tummala */ 246d1a5c838SRamaswamy Tummala #define IBNEX_IOC (1 << 16) 247d1a5c838SRamaswamy Tummala #define IBNEX_CTL_GET_API_VER (IBNEX_IOC + 1) /* Get API version # */ 248d1a5c838SRamaswamy Tummala #define IBNEX_CTL_GET_HCA_LIST (IBNEX_IOC + 2) /* Get HCA GUID list */ 249d1a5c838SRamaswamy Tummala #define IBNEX_CTL_QUERY_HCA (IBNEX_IOC + 3) /* Query HCA attributes */ 250d1a5c838SRamaswamy Tummala #define IBNEX_CTL_QUERY_HCA_PORT (IBNEX_IOC + 4) /* Query HCA port attributes */ 251d1a5c838SRamaswamy Tummala 252d1a5c838SRamaswamy Tummala /* 253d1a5c838SRamaswamy Tummala * The device to open for issuing ibnex IOCTLs 254d1a5c838SRamaswamy Tummala */ 255d1a5c838SRamaswamy Tummala #define IBNEX_DEVCTL_DEV "/devices/ib:devctl" 256d1a5c838SRamaswamy Tummala 257d1a5c838SRamaswamy Tummala /* 258d1a5c838SRamaswamy Tummala * ibnex IOCTL API version number - to be incremented when making an 259d1a5c838SRamaswamy Tummala * incompatible change to the API. 260d1a5c838SRamaswamy Tummala */ 261d1a5c838SRamaswamy Tummala #define IBNEX_CTL_API_VERSION 1 262d1a5c838SRamaswamy Tummala 263d1a5c838SRamaswamy Tummala #define MAX_HCA_DRVNAME_LEN 16 264d1a5c838SRamaswamy Tummala 265d1a5c838SRamaswamy Tummala /* 266d1a5c838SRamaswamy Tummala * Data structure for IBNEX_CTL_GET_API_VER 267d1a5c838SRamaswamy Tummala */ 268d1a5c838SRamaswamy Tummala typedef struct ibnex_ctl_api_ver_s { 269d1a5c838SRamaswamy Tummala uint_t api_ver_num; /* out: supported API version */ 270d1a5c838SRamaswamy Tummala } ibnex_ctl_api_ver_t; 271d1a5c838SRamaswamy Tummala 272d1a5c838SRamaswamy Tummala /* 273d1a5c838SRamaswamy Tummala * Data structure for IBNEX_CTL_GET_HCA_LIST 274d1a5c838SRamaswamy Tummala */ 275d1a5c838SRamaswamy Tummala typedef struct ibnex_ctl_get_hca_list_s { 276d1a5c838SRamaswamy Tummala ib_guid_t *hca_guids; /* in/out: HCA GUID array */ 277d1a5c838SRamaswamy Tummala uint_t hca_guids_alloc_sz; /* in: # of HCA GUIDs for */ 278d1a5c838SRamaswamy Tummala /* which storage is allocated */ 279d1a5c838SRamaswamy Tummala uint_t nhcas; /* out: actual number of HCAs */ 280d1a5c838SRamaswamy Tummala } ibnex_ctl_get_hca_list_t; 281d1a5c838SRamaswamy Tummala 282d1a5c838SRamaswamy Tummala typedef struct ibnex_ctl_get_hca_list_32_s { 283d1a5c838SRamaswamy Tummala caddr32_t hca_guids; /* in/out: HCA GUID array */ 284d1a5c838SRamaswamy Tummala uint_t hca_guids_alloc_sz; /* in: # of HCA GUIDs for */ 285d1a5c838SRamaswamy Tummala /* which storage is allocated */ 286d1a5c838SRamaswamy Tummala uint_t nhcas; /* out: actual number of HCAs */ 287d1a5c838SRamaswamy Tummala } ibnex_ctl_get_hca_list_32_t; 288d1a5c838SRamaswamy Tummala 289d1a5c838SRamaswamy Tummala /* 290d1a5c838SRamaswamy Tummala * HCA information structure 291d1a5c838SRamaswamy Tummala */ 292d1a5c838SRamaswamy Tummala typedef struct ibnex_ctl_hca_info_s { 293d1a5c838SRamaswamy Tummala ib_guid_t hca_node_guid; /* Node GUID */ 294d1a5c838SRamaswamy Tummala ib_guid_t hca_si_guid; /* Optional System Image GUID */ 295d1a5c838SRamaswamy Tummala uint_t hca_nports; /* Number of physical ports */ 296d1a5c838SRamaswamy Tummala 297d1a5c838SRamaswamy Tummala /* HCA driver name and instance number */ 298d1a5c838SRamaswamy Tummala char hca_driver_name[MAX_HCA_DRVNAME_LEN]; 299d1a5c838SRamaswamy Tummala int hca_driver_instance; 300d1a5c838SRamaswamy Tummala 301e8174f4eSRamaswamy Tummala /* 302e8174f4eSRamaswamy Tummala * hca device path and the length. 303d080a1d7SRamaswamy Tummala * hca_device_path_len contains the string length of the actual hca 304d080a1d7SRamaswamy Tummala * device path plus one (for the terminating null character). 305e8174f4eSRamaswamy Tummala */ 306e8174f4eSRamaswamy Tummala char *hca_device_path; 307e8174f4eSRamaswamy Tummala uint_t hca_device_path_len; 308e8174f4eSRamaswamy Tummala 309d1a5c838SRamaswamy Tummala ibt_hca_flags_t hca_flags; /* HCA capabilities etc */ 310d1a5c838SRamaswamy Tummala ibt_hca_flags2_t hca_flags2; /* HCA capabilities etc */ 311d1a5c838SRamaswamy Tummala 312d1a5c838SRamaswamy Tummala uint32_t hca_vendor_id; /* Vendor ID */ 313d1a5c838SRamaswamy Tummala uint16_t hca_device_id; /* Device ID */ 314d1a5c838SRamaswamy Tummala uint32_t hca_version_id; /* Version ID */ 315d1a5c838SRamaswamy Tummala 316d1a5c838SRamaswamy Tummala uint_t hca_max_chans; /* Max channels supported */ 317d1a5c838SRamaswamy Tummala uint_t hca_max_chan_sz; /* Max outstanding WRs on any */ 318d1a5c838SRamaswamy Tummala /* channel */ 319d1a5c838SRamaswamy Tummala 320d1a5c838SRamaswamy Tummala uint_t hca_max_sgl; /* Max SGL entries per WR */ 321d1a5c838SRamaswamy Tummala 322d1a5c838SRamaswamy Tummala uint_t hca_max_cq; /* Max num of CQs supported */ 323d1a5c838SRamaswamy Tummala uint_t hca_max_cq_sz; /* Max capacity of each CQ */ 324d1a5c838SRamaswamy Tummala 325d1a5c838SRamaswamy Tummala ibt_page_sizes_t hca_page_sz; /* Bit mask of page sizes */ 326d1a5c838SRamaswamy Tummala 327d1a5c838SRamaswamy Tummala uint_t hca_max_memr; /* Max num of HCA mem regions */ 328d1a5c838SRamaswamy Tummala ib_memlen_t hca_max_memr_len; /* Largest block, in bytes of */ 329d1a5c838SRamaswamy Tummala /* mem that can be registered */ 330d1a5c838SRamaswamy Tummala uint_t hca_max_mem_win; /* Max Memory windows in HCA */ 331d1a5c838SRamaswamy Tummala 332d1a5c838SRamaswamy Tummala uint_t hca_max_rsc; /* Max Responder Resources of */ 333d1a5c838SRamaswamy Tummala /* this HCA for RDMAR/Atomics */ 334d1a5c838SRamaswamy Tummala /* with this HCA as target. */ 335d1a5c838SRamaswamy Tummala uint8_t hca_max_rdma_in_chan; /* Max RDMAR/Atomics in per */ 336d1a5c838SRamaswamy Tummala /* chan this HCA as target. */ 337d1a5c838SRamaswamy Tummala uint8_t hca_max_rdma_out_chan; /* Max RDMA Reads/Atomics out */ 338d1a5c838SRamaswamy Tummala /* per channel by this HCA */ 339d1a5c838SRamaswamy Tummala uint_t hca_max_ipv6_chan; /* Max IPV6 channels in HCA */ 340d1a5c838SRamaswamy Tummala uint_t hca_max_ether_chan; /* Max Ether channels in HCA */ 341d1a5c838SRamaswamy Tummala 342d1a5c838SRamaswamy Tummala uint_t hca_max_mcg_chans; /* Max number of channels */ 343d1a5c838SRamaswamy Tummala /* that can join multicast */ 344d1a5c838SRamaswamy Tummala /* groups */ 345d1a5c838SRamaswamy Tummala uint_t hca_max_mcg; /* Max multicast groups */ 346d1a5c838SRamaswamy Tummala uint_t hca_max_chan_per_mcg; /* Max number of channels per */ 347d1a5c838SRamaswamy Tummala /* Multicast group in HCA */ 348d1a5c838SRamaswamy Tummala uint16_t hca_max_partitions; /* Max partitions in HCA */ 349d1a5c838SRamaswamy Tummala 350d1a5c838SRamaswamy Tummala ib_time_t hca_local_ack_delay; 351d1a5c838SRamaswamy Tummala 352d1a5c838SRamaswamy Tummala uint_t hca_max_port_sgid_tbl_sz; 353d1a5c838SRamaswamy Tummala uint16_t hca_max_port_pkey_tbl_sz; 354d1a5c838SRamaswamy Tummala uint_t hca_max_pd; /* Max# of Protection Domains */ 355d1a5c838SRamaswamy Tummala 356d1a5c838SRamaswamy Tummala uint_t hca_max_ud_dest; 357d1a5c838SRamaswamy Tummala uint_t hca_max_srqs; /* Max SRQs supported */ 358d1a5c838SRamaswamy Tummala uint_t hca_max_srqs_sz; /* Max outstanding WRs on any */ 359d1a5c838SRamaswamy Tummala /* SRQ */ 360d1a5c838SRamaswamy Tummala uint_t hca_max_srq_sgl; /* Max SGL entries per SRQ WR */ 361d1a5c838SRamaswamy Tummala uint_t hca_max_cq_handlers; 362d1a5c838SRamaswamy Tummala ibt_lkey_t hca_reserved_lkey; /* Reserved L_Key value */ 363d1a5c838SRamaswamy Tummala uint_t hca_max_fmrs; /* Max FMR Supported */ 364d1a5c838SRamaswamy Tummala 365d1a5c838SRamaswamy Tummala uint_t hca_max_lso_size; 366d1a5c838SRamaswamy Tummala uint_t hca_max_lso_hdr_size; 367d1a5c838SRamaswamy Tummala uint_t hca_max_inline_size; 368d1a5c838SRamaswamy Tummala 369d1a5c838SRamaswamy Tummala uint_t hca_max_cq_mod_count; /* CQ notify moderation */ 370d1a5c838SRamaswamy Tummala uint_t hca_max_cq_mod_usec; 371d1a5c838SRamaswamy Tummala 372d1a5c838SRamaswamy Tummala uint32_t hca_fw_major_version; /* firmware version */ 373d1a5c838SRamaswamy Tummala uint16_t hca_fw_minor_version; 374d1a5c838SRamaswamy Tummala uint16_t hca_fw_micro_version; 375d1a5c838SRamaswamy Tummala 376d1a5c838SRamaswamy Tummala /* detailed WQE size info */ 377d1a5c838SRamaswamy Tummala uint_t hca_ud_send_inline_sz; /* inline size in bytes */ 378d1a5c838SRamaswamy Tummala uint_t hca_conn_send_inline_sz; 379d1a5c838SRamaswamy Tummala uint_t hca_conn_rdmaw_inline_overhead; 380d1a5c838SRamaswamy Tummala uint_t hca_recv_sgl_sz; /* detailed SGL sizes */ 381d1a5c838SRamaswamy Tummala uint_t hca_ud_send_sgl_sz; 382d1a5c838SRamaswamy Tummala uint_t hca_conn_send_sgl_sz; 383d1a5c838SRamaswamy Tummala uint_t hca_conn_rdma_sgl_overhead; 384d1a5c838SRamaswamy Tummala int32_t hca_pad; 385d1a5c838SRamaswamy Tummala } ibnex_ctl_hca_info_t; 386d1a5c838SRamaswamy Tummala 387e8174f4eSRamaswamy Tummala typedef struct ibnex_ctl_hca_info_32_s { 388e8174f4eSRamaswamy Tummala ib_guid_t hca_node_guid; /* Node GUID */ 389e8174f4eSRamaswamy Tummala ib_guid_t hca_si_guid; /* Optional System Image GUID */ 390e8174f4eSRamaswamy Tummala uint_t hca_nports; /* Number of physical ports */ 391e8174f4eSRamaswamy Tummala 392e8174f4eSRamaswamy Tummala /* HCA driver name and instance number */ 393e8174f4eSRamaswamy Tummala char hca_driver_name[MAX_HCA_DRVNAME_LEN]; 394e8174f4eSRamaswamy Tummala int hca_driver_instance; 395e8174f4eSRamaswamy Tummala 396e8174f4eSRamaswamy Tummala /* 397e8174f4eSRamaswamy Tummala * hca device path and the length. 398d080a1d7SRamaswamy Tummala * hca_device_path_len contains the string length of the actual hca 399d080a1d7SRamaswamy Tummala * device path plus one (for the terminating null character). 400e8174f4eSRamaswamy Tummala */ 401e8174f4eSRamaswamy Tummala caddr32_t hca_device_path; 402e8174f4eSRamaswamy Tummala uint_t hca_device_path_len; 403e8174f4eSRamaswamy Tummala 404e8174f4eSRamaswamy Tummala ibt_hca_flags_t hca_flags; /* HCA capabilities etc */ 405e8174f4eSRamaswamy Tummala ibt_hca_flags2_t hca_flags2; /* HCA capabilities etc */ 406e8174f4eSRamaswamy Tummala 407e8174f4eSRamaswamy Tummala uint32_t hca_vendor_id; /* Vendor ID */ 408e8174f4eSRamaswamy Tummala uint16_t hca_device_id; /* Device ID */ 409e8174f4eSRamaswamy Tummala uint32_t hca_version_id; /* Version ID */ 410e8174f4eSRamaswamy Tummala 411e8174f4eSRamaswamy Tummala uint_t hca_max_chans; /* Max channels supported */ 412e8174f4eSRamaswamy Tummala uint_t hca_max_chan_sz; /* Max outstanding WRs on any */ 413e8174f4eSRamaswamy Tummala /* channel */ 414e8174f4eSRamaswamy Tummala 415e8174f4eSRamaswamy Tummala uint_t hca_max_sgl; /* Max SGL entries per WR */ 416e8174f4eSRamaswamy Tummala 417e8174f4eSRamaswamy Tummala uint_t hca_max_cq; /* Max num of CQs supported */ 418e8174f4eSRamaswamy Tummala uint_t hca_max_cq_sz; /* Max capacity of each CQ */ 419e8174f4eSRamaswamy Tummala 420e8174f4eSRamaswamy Tummala ibt_page_sizes_t hca_page_sz; /* Bit mask of page sizes */ 421e8174f4eSRamaswamy Tummala 422e8174f4eSRamaswamy Tummala uint_t hca_max_memr; /* Max num of HCA mem regions */ 423e8174f4eSRamaswamy Tummala ib_memlen_t hca_max_memr_len; /* Largest block, in bytes of */ 424e8174f4eSRamaswamy Tummala /* mem that can be registered */ 425e8174f4eSRamaswamy Tummala uint_t hca_max_mem_win; /* Max Memory windows in HCA */ 426e8174f4eSRamaswamy Tummala 427e8174f4eSRamaswamy Tummala uint_t hca_max_rsc; /* Max Responder Resources of */ 428e8174f4eSRamaswamy Tummala /* this HCA for RDMAR/Atomics */ 429e8174f4eSRamaswamy Tummala /* with this HCA as target. */ 430e8174f4eSRamaswamy Tummala uint8_t hca_max_rdma_in_chan; /* Max RDMAR/Atomics in per */ 431e8174f4eSRamaswamy Tummala /* chan this HCA as target. */ 432e8174f4eSRamaswamy Tummala uint8_t hca_max_rdma_out_chan; /* Max RDMA Reads/Atomics out */ 433e8174f4eSRamaswamy Tummala /* per channel by this HCA */ 434e8174f4eSRamaswamy Tummala uint_t hca_max_ipv6_chan; /* Max IPV6 channels in HCA */ 435e8174f4eSRamaswamy Tummala uint_t hca_max_ether_chan; /* Max Ether channels in HCA */ 436e8174f4eSRamaswamy Tummala 437e8174f4eSRamaswamy Tummala uint_t hca_max_mcg_chans; /* Max number of channels */ 438e8174f4eSRamaswamy Tummala /* that can join multicast */ 439e8174f4eSRamaswamy Tummala /* groups */ 440e8174f4eSRamaswamy Tummala uint_t hca_max_mcg; /* Max multicast groups */ 441e8174f4eSRamaswamy Tummala uint_t hca_max_chan_per_mcg; /* Max number of channels per */ 442e8174f4eSRamaswamy Tummala /* Multicast group in HCA */ 443e8174f4eSRamaswamy Tummala uint16_t hca_max_partitions; /* Max partitions in HCA */ 444e8174f4eSRamaswamy Tummala 445e8174f4eSRamaswamy Tummala ib_time_t hca_local_ack_delay; 446e8174f4eSRamaswamy Tummala 447e8174f4eSRamaswamy Tummala uint_t hca_max_port_sgid_tbl_sz; 448e8174f4eSRamaswamy Tummala uint16_t hca_max_port_pkey_tbl_sz; 449e8174f4eSRamaswamy Tummala uint_t hca_max_pd; /* Max# of Protection Domains */ 450e8174f4eSRamaswamy Tummala 451e8174f4eSRamaswamy Tummala uint_t hca_max_ud_dest; 452e8174f4eSRamaswamy Tummala uint_t hca_max_srqs; /* Max SRQs supported */ 453e8174f4eSRamaswamy Tummala uint_t hca_max_srqs_sz; /* Max outstanding WRs on any */ 454e8174f4eSRamaswamy Tummala /* SRQ */ 455e8174f4eSRamaswamy Tummala uint_t hca_max_srq_sgl; /* Max SGL entries per SRQ WR */ 456e8174f4eSRamaswamy Tummala uint_t hca_max_cq_handlers; 457e8174f4eSRamaswamy Tummala ibt_lkey_t hca_reserved_lkey; /* Reserved L_Key value */ 458e8174f4eSRamaswamy Tummala uint_t hca_max_fmrs; /* Max FMR Supported */ 459e8174f4eSRamaswamy Tummala 460e8174f4eSRamaswamy Tummala uint_t hca_max_lso_size; 461e8174f4eSRamaswamy Tummala uint_t hca_max_lso_hdr_size; 462e8174f4eSRamaswamy Tummala uint_t hca_max_inline_size; 463e8174f4eSRamaswamy Tummala 464e8174f4eSRamaswamy Tummala uint_t hca_max_cq_mod_count; /* CQ notify moderation */ 465e8174f4eSRamaswamy Tummala uint_t hca_max_cq_mod_usec; 466e8174f4eSRamaswamy Tummala 467e8174f4eSRamaswamy Tummala uint32_t hca_fw_major_version; /* firmware version */ 468e8174f4eSRamaswamy Tummala uint16_t hca_fw_minor_version; 469e8174f4eSRamaswamy Tummala uint16_t hca_fw_micro_version; 470e8174f4eSRamaswamy Tummala 471e8174f4eSRamaswamy Tummala /* detailed WQE size info */ 472e8174f4eSRamaswamy Tummala uint_t hca_ud_send_inline_sz; /* inline size in bytes */ 473e8174f4eSRamaswamy Tummala uint_t hca_conn_send_inline_sz; 474e8174f4eSRamaswamy Tummala uint_t hca_conn_rdmaw_inline_overhead; 475e8174f4eSRamaswamy Tummala uint_t hca_recv_sgl_sz; /* detailed SGL sizes */ 476e8174f4eSRamaswamy Tummala uint_t hca_ud_send_sgl_sz; 477e8174f4eSRamaswamy Tummala uint_t hca_conn_send_sgl_sz; 478e8174f4eSRamaswamy Tummala uint_t hca_conn_rdma_sgl_overhead; 479e8174f4eSRamaswamy Tummala int32_t hca_pad; 480e8174f4eSRamaswamy Tummala } ibnex_ctl_hca_info_32_t; 481e8174f4eSRamaswamy Tummala 482d1a5c838SRamaswamy Tummala /* 483d1a5c838SRamaswamy Tummala * Data structure for IBNEX_CTL_QUERY_HCA 484d1a5c838SRamaswamy Tummala */ 485d1a5c838SRamaswamy Tummala typedef struct ibnex_ctl_query_hca_s { 486e8174f4eSRamaswamy Tummala ib_guid_t hca_guid; /* in: HCA GUID */ 487e8174f4eSRamaswamy Tummala 488e8174f4eSRamaswamy Tummala /* 489e8174f4eSRamaswamy Tummala * in: user allocated memory pointer for hca device path and number of 490e8174f4eSRamaswamy Tummala * bytes allocated for the hca device path. 491e8174f4eSRamaswamy Tummala */ 492e8174f4eSRamaswamy Tummala char *hca_device_path; 493e8174f4eSRamaswamy Tummala uint_t hca_device_path_alloc_sz; 494e8174f4eSRamaswamy Tummala 495d1a5c838SRamaswamy Tummala ibnex_ctl_hca_info_t hca_info; /* out: HCA information */ 496d1a5c838SRamaswamy Tummala } ibnex_ctl_query_hca_t; 497d1a5c838SRamaswamy Tummala 498e8174f4eSRamaswamy Tummala typedef struct ibnex_ctl_query_hca_32_s { 499e8174f4eSRamaswamy Tummala ib_guid_t hca_guid; /* in: HCA GUID */ 500e8174f4eSRamaswamy Tummala 501e8174f4eSRamaswamy Tummala /* 502e8174f4eSRamaswamy Tummala * in: user allocated memory pointer for hca device path and number of 503e8174f4eSRamaswamy Tummala * bytes allocated for the hca device path. 504e8174f4eSRamaswamy Tummala */ 505e8174f4eSRamaswamy Tummala caddr32_t hca_device_path; 506e8174f4eSRamaswamy Tummala uint_t hca_device_path_alloc_sz; 507e8174f4eSRamaswamy Tummala 508e8174f4eSRamaswamy Tummala ibnex_ctl_hca_info_32_t hca_info; /* out: HCA information */ 509e8174f4eSRamaswamy Tummala } ibnex_ctl_query_hca_32_t; 510e8174f4eSRamaswamy Tummala 511d1a5c838SRamaswamy Tummala /* 512d1a5c838SRamaswamy Tummala * HCA port information structure 513d1a5c838SRamaswamy Tummala */ 514d1a5c838SRamaswamy Tummala typedef struct ibnex_ctl_hca_port_info_s { 515d1a5c838SRamaswamy Tummala ib_lid_t p_lid; /* Base LID of port */ 516d1a5c838SRamaswamy Tummala ib_qkey_cntr_t p_qkey_violations; /* Bad Q_Key cnt */ 517d1a5c838SRamaswamy Tummala ib_pkey_cntr_t p_pkey_violations; /* Optional bad P_Key cnt */ 518d1a5c838SRamaswamy Tummala uint8_t p_sm_sl; /* SM Service level */ 519d1a5c838SRamaswamy Tummala ib_port_phys_state_t p_phys_state; 520d1a5c838SRamaswamy Tummala ib_lid_t p_sm_lid; /* SM LID */ 521d1a5c838SRamaswamy Tummala ibt_port_state_t p_linkstate; /* Port state */ 522d1a5c838SRamaswamy Tummala uint8_t p_port_num; /* Port number */ 523d1a5c838SRamaswamy Tummala 524d1a5c838SRamaswamy Tummala ib_link_width_t p_width_supported; 525d1a5c838SRamaswamy Tummala ib_link_width_t p_width_enabled; 526d1a5c838SRamaswamy Tummala ib_link_width_t p_width_active; 527d1a5c838SRamaswamy Tummala 528d1a5c838SRamaswamy Tummala ib_mtu_t p_mtu; /* Max transfer unit - pkt */ 529d1a5c838SRamaswamy Tummala uint8_t p_lmc; /* LID mask control */ 530d1a5c838SRamaswamy Tummala 531d1a5c838SRamaswamy Tummala ib_link_speed_t p_speed_supported; 532d1a5c838SRamaswamy Tummala ib_link_speed_t p_speed_enabled; 533d1a5c838SRamaswamy Tummala ib_link_speed_t p_speed_active; 534d1a5c838SRamaswamy Tummala 535d1a5c838SRamaswamy Tummala ib_gid_t *p_sgid_tbl; /* SGID Table */ 536d1a5c838SRamaswamy Tummala uint_t p_sgid_tbl_sz; /* # of entries in SGID table */ 537d1a5c838SRamaswamy Tummala 538d1a5c838SRamaswamy Tummala ib_pkey_t *p_pkey_tbl; /* P_Key table */ 539d1a5c838SRamaswamy Tummala uint16_t p_pkey_tbl_sz; /* # of entries in P_Key tbl */ 540d1a5c838SRamaswamy Tummala uint16_t p_def_pkey_ix; /* default pkey index for TI */ 541d1a5c838SRamaswamy Tummala 542d1a5c838SRamaswamy Tummala uint8_t p_max_vl; /* Max num of virtual lanes */ 543d1a5c838SRamaswamy Tummala uint8_t p_init_type_reply; /* Optional InitTypeReply */ 544d1a5c838SRamaswamy Tummala ib_time_t p_subnet_timeout; /* Max Subnet Timeout */ 545d1a5c838SRamaswamy Tummala ibt_port_caps_t p_capabilities; /* Port Capabilities */ 546d1a5c838SRamaswamy Tummala uint32_t p_msg_sz; /* Max message size */ 547d1a5c838SRamaswamy Tummala } ibnex_ctl_hca_port_info_t; 548d1a5c838SRamaswamy Tummala 549d1a5c838SRamaswamy Tummala typedef struct ibnex_ctl_hca_port_info_32_s { 550d1a5c838SRamaswamy Tummala ib_lid_t p_lid; /* Base LID of port */ 551d1a5c838SRamaswamy Tummala ib_qkey_cntr_t p_qkey_violations; /* Bad Q_Key cnt */ 552d1a5c838SRamaswamy Tummala ib_pkey_cntr_t p_pkey_violations; /* Optional bad P_Key cnt */ 553d1a5c838SRamaswamy Tummala uint8_t p_sm_sl; /* SM Service level */ 554d1a5c838SRamaswamy Tummala ib_port_phys_state_t p_phys_state; 555d1a5c838SRamaswamy Tummala ib_lid_t p_sm_lid; /* SM LID */ 556d1a5c838SRamaswamy Tummala ibt_port_state_t p_linkstate; /* Port state */ 557d1a5c838SRamaswamy Tummala uint8_t p_port_num; /* Port number */ 558d1a5c838SRamaswamy Tummala 559d1a5c838SRamaswamy Tummala ib_link_width_t p_width_supported; 560d1a5c838SRamaswamy Tummala ib_link_width_t p_width_enabled; 561d1a5c838SRamaswamy Tummala ib_link_width_t p_width_active; 562d1a5c838SRamaswamy Tummala 563d1a5c838SRamaswamy Tummala ib_mtu_t p_mtu; /* Max transfer unit - pkt */ 564d1a5c838SRamaswamy Tummala uint8_t p_lmc; /* LID mask control */ 565d1a5c838SRamaswamy Tummala 566d1a5c838SRamaswamy Tummala ib_link_speed_t p_speed_supported; 567d1a5c838SRamaswamy Tummala ib_link_speed_t p_speed_enabled; 568d1a5c838SRamaswamy Tummala ib_link_speed_t p_speed_active; 569d1a5c838SRamaswamy Tummala 570d1a5c838SRamaswamy Tummala caddr32_t p_sgid_tbl; /* SGID Table */ 571d1a5c838SRamaswamy Tummala uint_t p_sgid_tbl_sz; /* # of entries in SGID table */ 572d1a5c838SRamaswamy Tummala 573d1a5c838SRamaswamy Tummala caddr32_t p_pkey_tbl; /* P_Key table */ 574d1a5c838SRamaswamy Tummala uint16_t p_pkey_tbl_sz; /* # of entries in P_Key tbl */ 575d1a5c838SRamaswamy Tummala uint16_t p_def_pkey_ix; /* default pkey index for TI */ 576d1a5c838SRamaswamy Tummala 577d1a5c838SRamaswamy Tummala uint8_t p_max_vl; /* Max num of virtual lanes */ 578d1a5c838SRamaswamy Tummala uint8_t p_init_type_reply; /* Optional InitTypeReply */ 579d1a5c838SRamaswamy Tummala ib_time_t p_subnet_timeout; /* Max Subnet Timeout */ 580d1a5c838SRamaswamy Tummala ibt_port_caps_t p_capabilities; /* Port Capabilities */ 581d1a5c838SRamaswamy Tummala uint32_t p_msg_sz; /* Max message size */ 582d1a5c838SRamaswamy Tummala } ibnex_ctl_hca_port_info_32_t; 583d1a5c838SRamaswamy Tummala 584d1a5c838SRamaswamy Tummala /* 585d1a5c838SRamaswamy Tummala * Data structure for IBNEX_CTL_QUERY_HCA_PORT 586d1a5c838SRamaswamy Tummala */ 587d1a5c838SRamaswamy Tummala typedef struct ibnex_ctl_query_hca_port_s { 588d1a5c838SRamaswamy Tummala ib_guid_t hca_guid; /* in: HCA GUID */ 589d1a5c838SRamaswamy Tummala uint_t port_num; /* in: port number */ 590d1a5c838SRamaswamy Tummala 591d1a5c838SRamaswamy Tummala ib_gid_t *sgid_tbl; /* in: SGID Table */ 592d1a5c838SRamaswamy Tummala uint_t sgid_tbl_alloc_sz; /* in: # of entries in SGID table */ 593d1a5c838SRamaswamy Tummala 594d1a5c838SRamaswamy Tummala ib_pkey_t *pkey_tbl; /* in: P_Key table */ 595d1a5c838SRamaswamy Tummala uint_t pkey_tbl_alloc_sz; /* in: # of entries in P_Key table */ 596d1a5c838SRamaswamy Tummala 597d1a5c838SRamaswamy Tummala uint32_t pad; 598d1a5c838SRamaswamy Tummala ibnex_ctl_hca_port_info_t port_info; /* out: port information */ 599d1a5c838SRamaswamy Tummala } ibnex_ctl_query_hca_port_t; 600d1a5c838SRamaswamy Tummala 601d1a5c838SRamaswamy Tummala typedef struct ibnex_ctl_query_hca_port_32_s { 602d1a5c838SRamaswamy Tummala ib_guid_t hca_guid; /* in: HCA GUID */ 603d1a5c838SRamaswamy Tummala uint_t port_num; /* in: port number */ 604d1a5c838SRamaswamy Tummala 605d1a5c838SRamaswamy Tummala caddr32_t sgid_tbl; /* in: SGID Table */ 606d1a5c838SRamaswamy Tummala uint_t sgid_tbl_alloc_sz; /* in: # of entries in SGID table */ 607d1a5c838SRamaswamy Tummala 608d1a5c838SRamaswamy Tummala caddr32_t pkey_tbl; /* in: P_Key table */ 609d1a5c838SRamaswamy Tummala uint_t pkey_tbl_alloc_sz; /* in: # of entries in P_Key table */ 610d1a5c838SRamaswamy Tummala 611d1a5c838SRamaswamy Tummala uint32_t pad; 612d1a5c838SRamaswamy Tummala ibnex_ctl_hca_port_info_32_t port_info; /* out: port information */ 613d1a5c838SRamaswamy Tummala } ibnex_ctl_query_hca_port_32_t; 614d1a5c838SRamaswamy Tummala 615d1a5c838SRamaswamy Tummala #ifdef _KERNEL 616d1a5c838SRamaswamy Tummala _NOTE(SCHEME_PROTECTS_DATA("", ibnex_ctl_hca_info_s)) 617d1a5c838SRamaswamy Tummala _NOTE(SCHEME_PROTECTS_DATA("", ibnex_ctl_hca_port_info_s)) 618d1a5c838SRamaswamy Tummala _NOTE(SCHEME_PROTECTS_DATA("", ibnex_ctl_hca_port_info_32_s)) 619d1a5c838SRamaswamy Tummala _NOTE(SCHEME_PROTECTS_DATA("", ibnex_ctl_query_hca_port_s)) 620d1a5c838SRamaswamy Tummala _NOTE(SCHEME_PROTECTS_DATA("", ibnex_ctl_query_hca_port_32_s)) 621d1a5c838SRamaswamy Tummala #endif 622d1a5c838SRamaswamy Tummala 6237c478bd9Sstevel@tonic-gate 6247c478bd9Sstevel@tonic-gate #ifdef __cplusplus 6257c478bd9Sstevel@tonic-gate } 6267c478bd9Sstevel@tonic-gate #endif 6277c478bd9Sstevel@tonic-gate 6287c478bd9Sstevel@tonic-gate #endif /* _SYS_IB_IBNEX_IBNEX_DEVCTL_H */ 629