5810N/A * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved. 5810N/A * Redistribution and use in source and binary forms, with or without 5810N/A * modification, are permitted provided that the following conditions are met: 5810N/A * 1. Redistributions of source code must retain the above copyright notice, 5810N/A * this list of conditions and the following disclaimer. 5810N/A * 2. Redistributions in binary form must reproduce the above copyright notice, 5810N/A * this list of conditions and the following disclaimer in the documentation 5810N/A * and/or other materials provided with the distribution. 5810N/A * 3. Neither the name of the copyright holder nor the names of its contributors 5810N/A * may be used to endorse or promote products derived from this software 5810N/A * without specific prior written permission. 5810N/A * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 5810N/A * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 5810N/A * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 5810N/A * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY 5810N/A * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 5810N/A * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 5810N/A * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 5810N/A * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 5810N/A * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 5810N/A * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 5810N/A * Userspace library for Oracle SIF Infiniband PCI Express 5810N/A * host channel adapter (HCA) 5810N/A * This file is included both from user space and kernel space so 5810N/A * Binary interface control: 5810N/A * Major version difference indicate backward incompatible changes 5810N/A * Minor version difference indicate that only a common subset of 5810N/A * Bit 5 is not used by the PSIF_WC_OPCODE_FOO_BAR enums. Hence, using 5810N/A * it to indicate if QP has been destroyed before the CQE has been 5810N/A * This struct will be amended to an un-polled cqe, in case the QP has 5810N/A * been destroyed before the CQEs are polled. The information is 5810N/A * needed in order to handle flushing of SRQs and generation of Last 5810N/A * The information amended to the CQE is _only_ valid if the CQE has 5810N/A * been marked with SIF_WC_QP_DESTROYED. 5810N/A * These definitions must be kept in sync with 5810N/A * Use special mmu setup in associated mappings 5810N/A * NB! Modifies input to ibv_reg_mr! 5810N/A /* Trigger send queue mode instead of using VCBs */ 5810N/A /* Enable EPS-A proxying - requires the eps_a field to be set */ 5810N/A /* Enable kernel mode - default is direct user mode */ 5810N/A /* Value to use for the qosl bit in the qp state */ 5810N/A /* Mapping of user memory based on the process' own page table */ 5810N/A * A large (sparsely populated) SIF only vaddr mapping 5810N/A /* Special mapping of a vaddr range to a single page (see #1931) */ 5810N/A /* MMU bypass mapped read only for device (requires IOMMU enabled) */ 5810N/A /* GVA2GPA mapped read only for device (requires IOMMU enabled) */ 5810N/A /* Use GVA2GPA but input is based on a phys_buf array instead of umem */ 5810N/A * Use GVA2GPA but input is based on a page address array instead 5810N/A /* Similar to FMR but input pages are 2M instead of 4K */ 5810N/A /* Bypass mode - special kernel mappings with no memory allocated */ 5810N/A /* sif_kmem based 4K page allocation - mostly for test purposes */ 5810N/A/* These should be multiple of 64 bytes and densely packed: */ 5810N/A /* Distance in bytes between descriptor elements */ 5810N/A /* Number of entries per block of descriptors */ 5810N/A /* Dist between sq hw descriptor elms, from >= v.3.3 */ 5810N/A /* The virtual collect buffer to use by this protection domain */ 5810N/A /* Used by gva_type SIFGT_ZERO - indicates psif vmap length */ 5810N/A /* Used by gva_type SIFGT_ZERO - indicates valid memory length */ 5810N/A /* Map a collect buffer - cb index as argument */ 5810N/A /* Map an SQ, RQ or CQ (entries) - queue index as argument */ 5810N/A * Map a block of SQ, RQ or CQ software descriptors - 5810N/A /* These are safe to map read-only (so far only sq_hw in use) */ 5810N/A /* Map a block of qp descriptors - block index as argument */ 5810N/A * Map a block of SQ, RQ or CQ hardware descriptors -