components/open-fabrics/libsif/include/sif/sif_user.h
author ssadalka soniya.sadalkar@oracle.com
Tue, 19 Apr 2016 22:11:38 -0700
branchs11u3-sru
changeset 5812 ac16f94826c3
child 6372 8dc598b3e3c3
permissions -rw-r--r--
PSARC/2015/479 PSIF Solaris IB HCA Driver 22111504 RFE for libsif integration into userland gate
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5812
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
     1
/*
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
     2
 * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
     3
 */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
     4
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
     5
/*
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
     6
 * Redistribution and use in source and binary forms, with or without
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
     7
 *  modification, are permitted provided that the following conditions are met:
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
     8
 *
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
     9
 * 1. Redistributions of source code must retain the above copyright notice,
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    10
 *    this list of conditions and the following disclaimer.
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    11
 *
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    12
 * 2. Redistributions in binary form must reproduce the above copyright notice,
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    13
 *    this list of conditions and the following disclaimer in the documentation
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    14
 *    and/or other materials provided with the distribution.
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    15
 *
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    16
 * 3. Neither the name of the copyright holder nor the names of its contributors
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    17
 *    may be used to endorse or promote products derived from this software
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    18
 *    without specific prior written permission.
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    19
 *
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    20
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    21
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    22
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    23
 * ARE DISCLAIMED.
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    24
 * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    25
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    26
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    27
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    28
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    29
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    30
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    31
 */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    32
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    33
/*
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    34
 * Userspace library for Oracle SIF Infiniband PCI Express
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    35
 * host channel adapter (HCA)
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    36
 *
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    37
 * sif_user.h: This file defines sif specific verbs extension request/response.
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    38
 *   This file is included both from user space and kernel space so
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    39
 *   it must not contain any kernel/user specific header file includes.
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    40
 */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    41
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    42
#ifndef _SIF_USER_H
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    43
#define	_SIF_USER_H
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    44
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    45
#ifdef __cplusplus
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    46
extern "C" {
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    47
#endif
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    48
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    49
/*
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    50
 * Binary interface control:
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    51
 *   Major version difference indicate backward incompatible changes
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    52
 *   Minor version difference indicate that only a common subset of
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    53
 *   features are available.
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    54
 *
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    55
 */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    56
#define	SIF_UVERBS_ABI_MAJOR_VERSION	3
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    57
#define	SIF_UVERBS_ABI_MINOR_VERSION	4
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    58
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    59
/* Bw comp */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    60
#define	SIF_UVERBS_VERSION(x, y) ((x) << 8 | (y))
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    61
#define	SIF_UVERBS_ABI_VERSION \
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    62
	SIF_UVERBS_VERSION(SIF_UVERBS_ABI_MAJOR_VERSION, \
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    63
	SIF_UVERBS_ABI_MINOR_VERSION)
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    64
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    65
/*
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    66
 * Bit 5 is not used by the PSIF_WC_OPCODE_FOO_BAR enums. Hence, using
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    67
 * it to indicate if QP has been destroyed before the CQE has been
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    68
 * polled
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    69
 */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    70
#define	SIF_WC_QP_DESTROYED (1<<5)
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    71
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    72
/*
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    73
 * This struct will be amended to an un-polled cqe, in case the QP has
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    74
 * been destroyed before the CQEs are polled. The information is
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    75
 * needed in order to handle flushing of SRQs and generation of Last
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    76
 * WQE Reached event.
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    77
 *
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    78
 * The information amended to the CQE is _only_ valid if the CQE has
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    79
 * been marked with SIF_WC_QP_DESTROYED.
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    80
 */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    81
struct sif_post_mortem_qp_info_in_cqe {
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    82
	int was_srq;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    83
	int srq_idx;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    84
	int qpn; /* Could be useful for de-bugging/logging */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    85
};
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    86
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    87
#ifndef __u32
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    88
#define	__u32	uint32_t
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    89
#endif
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    90
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    91
/*
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    92
 * These definitions must be kept in sync with
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    93
 * the ones in libsif's sif.h
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    94
 */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    95
typedef enum sif_vendor_flags {
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    96
	/*
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    97
	 * Use special mmu setup in associated mappings
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    98
	 * NB! Modifies input to ibv_reg_mr!
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
    99
	 */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   100
	MMU_special	= 0x1,
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   101
	/* Trigger send queue mode instead of using VCBs */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   102
	SQ_mode		= 0x2,
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   103
	/* Enable EPS-A proxying - requires the eps_a field to be set */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   104
	proxy_mode	= 0x4,
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   105
	/* Enable kernel mode - default is direct user mode */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   106
	SVF_kernel_mode	= 0x8,
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   107
	/* Value to use for the qosl bit in the qp state */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   108
	tsu_qosl	= 0x10
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   109
} sif_vendor_flags_t;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   110
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   111
typedef enum sif_mem_type {
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   112
	SIFMT_BYPASS,	/* Use MMU bypass in associated mmu contexts */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   113
	SIFMT_UMEM,	/* Normal default umem based user level mapping */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   114
	/* Mapping of user memory based on the process' own page table */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   115
	SIFMT_UMEM_SPT,
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   116
	/*
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   117
	 * A large (sparsely populated) SIF only vaddr mapping
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   118
	 * (used for a.o.SQ CMPL)
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   119
	 */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   120
	SIFMT_CS,
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   121
	/* Special mapping of a vaddr range to a single page (see #1931) */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   122
	SIFMT_ZERO,
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   123
	/* MMU bypass mapped read only for device (requires IOMMU enabled) */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   124
	SIFMT_BYPASS_RO,
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   125
	/* GVA2GPA mapped read only for device (requires IOMMU enabled) */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   126
	SIFMT_UMEM_RO,
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   127
	/* Use GVA2GPA but input is based on a phys_buf array instead of umem */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   128
	SIFMT_PHYS,
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   129
	/*
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   130
	 * Use GVA2GPA but input is based on a page address array instead
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   131
	 * of umem
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   132
	 */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   133
	SIFMT_FMR,
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   134
	/* Similar to FMR but input pages are 2M instead of 4K */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   135
	SIFMT_2M,
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   136
	/* Bypass mode - special kernel mappings with no memory allocated */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   137
	SIFMT_NOMEM,
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   138
	/* sif_kmem based 4K page allocation - mostly for test purposes */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   139
	SIFMT_4K,
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   140
	SIFMT_RDMA,
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   141
	SIFMT_PTONLY,
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   142
	SIFMT_CTRL_PT,
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   143
	SIFMT_MAX
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   144
} sif_mem_type_t;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   145
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   146
typedef enum sif_proxy_type {
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   147
	SIFPX_OFF, /* Default value - no proxying */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   148
	SIFPX_EPSA_1,
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   149
	SIFPX_EPSA_2,
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   150
	SIFPX_EPSA_3,
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   151
	SIFPX_EPSA_4
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   152
} sif_proxy_type_t;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   153
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   154
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   155
typedef enum sif_flush_type {
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   156
	NO_FLUSH,
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   157
	FLUSH_SQ,
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   158
	FLUSH_RQ
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   159
} sif_flush_type_t;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   160
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   161
/* These should be multiple of 64 bytes and densely packed: */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   162
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   163
typedef struct sif_get_context_ext {
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   164
	uint32_t abi_version;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   165
	uint32_t reserved;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   166
} sif_get_context_ext_t;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   167
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   168
typedef struct sif_get_context_resp_ext {
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   169
	/* Distance in bytes between descriptor elements */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   170
	uint32_t sq_sw_ext_sz;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   171
	uint32_t rq_ext_sz;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   172
	uint32_t cq_ext_sz;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   173
	/* Number of entries per block of descriptors */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   174
	uint32_t sq_entry_per_block;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   175
	uint32_t rq_entry_per_block;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   176
	uint32_t cq_entry_per_block;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   177
	/* Dist between sq hw descriptor elms, from >= v.3.3 */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   178
	uint32_t sq_hw_ext_sz;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   179
	uint32_t reserved;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   180
} sif_get_context_resp_ext_t;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   181
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   182
typedef struct sif_alloc_pd_resp_ext {
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   183
	/* The virtual collect buffer to use by this protection domain */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   184
	int cb_idx;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   185
	uint32_t reserved;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   186
} sif_alloc_pd_resp_ext_t;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   187
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   188
typedef struct sif_create_cq_ext {
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   189
	enum sif_vendor_flags flags;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   190
	enum sif_proxy_type proxy;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   191
} sif_create_cq_ext_t;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   192
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   193
typedef struct sif_create_cq_resp_ext {
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   194
	uint32_t cq_idx;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   195
	uint32_t reserved;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   196
	uint32_t cq_entries;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   197
} sif_create_cq_resp_ext_t;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   198
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   199
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   200
typedef struct sif_create_qp_ext {
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   201
	enum sif_vendor_flags flags;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   202
	enum sif_proxy_type proxy;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   203
} sif_create_qp_ext_t;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   204
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   205
typedef struct sif_create_qp_resp_ext {
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   206
	uint32_t qp_idx;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   207
	uint32_t rq_idx;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   208
	uint32_t magic;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   209
	uint32_t sq_extent;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   210
	uint32_t rq_extent;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   211
	uint32_t sq_sgl_offset;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   212
	uint32_t sq_mr_idx;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   213
	uint32_t reserved;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   214
	uint64_t sq_dma_handle;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   215
} sif_create_qp_resp_ext_t;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   216
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   217
typedef struct sif_modify_qp_ext
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   218
{
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   219
	enum sif_flush_type flush;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   220
	uint32_t  reserved;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   221
} sif_modify_qp_ext_t;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   222
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   223
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   224
typedef struct sif_reg_mr_ext {
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   225
	enum sif_vendor_flags flags;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   226
	enum sif_mem_type mem_type;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   227
	/* Used by gva_type SIFGT_ZERO - indicates psif vmap length */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   228
	uint64_t map_length;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   229
	/* Used by gva_type SIFGT_ZERO - indicates valid memory length */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   230
	uint64_t phys_length;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   231
} sif_reg_mr_ext_t;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   232
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   233
typedef struct sif_reg_mr_resp_ext {
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   234
	uint64_t uv2dma;  /* Used to support bypass mode */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   235
} sif_reg_mr_resp_ext_t;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   236
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   237
typedef struct sif_create_srq_ext {
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   238
	enum sif_vendor_flags flags;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   239
	uint32_t res1;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   240
} sif_create_srq_ext_t;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   241
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   242
typedef struct sif_create_srq_resp_ext {
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   243
	uint32_t index;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   244
	uint32_t extent;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   245
} sif_create_srq_resp_ext_t;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   246
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   247
typedef struct sif_create_ah_resp_ext {
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   248
	uint32_t index;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   249
	uint32_t reserved;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   250
} sif_create_ah_resp_ext_t;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   251
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   252
/* mmap offset encoding */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   253
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   254
enum sif_mmap_cmd {
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   255
	SIF_MAP_NONE,	/* No mapping */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   256
	/* Map a collect buffer - cb index as argument */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   257
	SIF_MAP_CB,
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   258
	/* Map an SQ, RQ or CQ (entries) - queue index as argument */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   259
	SIF_MAP_SQ,
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   260
	SIF_MAP_RQ,
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   261
	SIF_MAP_CQ,
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   262
	/*
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   263
	 * Map a block of SQ, RQ or CQ software descriptors -
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   264
	 * block index as argument
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   265
	 */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   266
	SIF_MAP_SQ_SW,
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   267
	SIF_MAP_RQ_SW,
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   268
	SIF_MAP_CQ_SW,
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   269
	/* These are safe to map read-only (so far only sq_hw in use) */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   270
	/* Map a block of qp descriptors - block index as argument */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   271
	SIF_MAP_QP,
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   272
	/*
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   273
	 * Map a block of SQ, RQ or CQ hardware descriptors -
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   274
	 * block index as argument
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   275
	 */
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   276
	SIF_MAP_SQ_HW,
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   277
	SIF_MAP_RQ_HW,
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   278
	SIF_MAP_CQ_HW,
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   279
	SIF_MAP_MAX
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   280
};
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   281
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   282
static inline uint64_t mmap_set_cmd(enum sif_mmap_cmd cmd, uint32_t index)
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   283
{
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   284
	return ((uint64_t)cmd << 44) | ((uint64_t)index << 13);
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   285
}
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   286
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   287
static inline void mmap_get_cmd(uint64_t offset, enum sif_mmap_cmd *cmdp,
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   288
    uint32_t *idxp)
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   289
{
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   290
	*cmdp = (offset >> 44) & 0xff;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   291
	*idxp = (offset >> 13) & 0x7fffffff;
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   292
}
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   293
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   294
#ifdef __cplusplus
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   295
}
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   296
#endif
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   297
ac16f94826c3 PSARC/2015/479 PSIF Solaris IB HCA Driver
ssadalka soniya.sadalkar@oracle.com
parents:
diff changeset
   298
#endif /* _SIF_USER_H */