+++ /dev/null
-##### Begin svn/gen1/trunk/src/userspace/osm/README.opensm-build
-
-# How to Build the OpenSM Subnet Manager
-# ----------------------------------------
-
-# This file is arranged as a shell script so you can paste or execute
-# it. This is for building from the SVN source at openib.org.
-
-# 1. Complete steps outlined in README.kernel-build.
-# 2. Complete steps outlined in README.user-build.
-
-# set TOP to wherever you've checked out the openib repository.
-TOP=/usr/src/openib
-
-export TSHOME=$TOP/src/linux-kernel/infiniband/include/
-export MTHOME=$TOP/src/userspace/hw/mellanox-hca/mthome/
-
-# Add util dir to path for makedepend
-export PATH=$TOP/src/userspace/osm/util:$PATH
-
-cd $TOP/src/userspace/osm
-make VENDOR=ts
-
-##### end
\ No newline at end of file
+++ /dev/null
-Support new HOQ value for the ports feeding HCA ports
-
-Support Static Lid assignment with a flag for specifying a file with guid to lid.
-
-Support PKey comp in Path Record
-Support SL comp in Path Record
-
-Support VL traversal in Path Record - compute the SL accordingly
- Make it a runtime option, So we do not pay the price if no SL are used.
-
-Support a fast Path Record mode - if the fabric is totally uniform in rate and
- MTU. No need to traverse the path at all...
-
-Improve the MinHop routing algorithm such that it only calc the min hops
-for switches, then
-
+++ /dev/null
-Modular Routine Engine
-
-Modular routing engine structure has been added to allow
-for ease of "plugging" new routing modules.
-
-Currently, only unicast callbacks are supported. Multicast
-can be added later.
-
-One of existing routing modules is up-down "updn", which may
-be activated with '-R updn' option (instead of old '-u').
-
-General usage is:
-$ opensm -R 'module-name'
-
-There is also a trivial routing module which is able
-to load LFT tables from a dump file.
-
-Main features:
-
-- this will load switch LFTs and/or LID matrices (min hops tables)
-- this will load switch LFTs according to the path entries introduced in
- the dump file
-- no additional checks will be performed (such as "is port connected", etc.)
-- in case when fabric LIDs were changed this will try to reconstruct LFTs
- correctly if endport GUIDs are represented in the dump file (in order
- to disable this GUIDs may be removed from the dump file or zeroed)
-
-The dump file format is compatible with output of 'ibroute' util and for
-whole fabric may be generated with script like this:
-
- for sw_lid in `ibswitches | awk '{print $NF}'` ; do
- ibroute $sw_lid
- done > /path/to/dump_file
-
-, or using DR paths:
-
- for sw_dr in `ibnetdiscover -v \
- | sed -ne '/^DR path .* switch /s/^DR path \[\(.*\)\].*$/\1/p' \
- | sed -e 's/\]\[/,/g' \
- | sort -u` ; do
- ibroute -D ${sw_dr}
- done > /path/to/dump_file
-
-This script is dump_lfts.sh
-
-In order to activate new module use:
-
- opensm -R file -U /path/to/dump_file
-
-If the dump_file is not found or is in error, the default routing
-algorithm is utilized.
-
-The ability to dump switch lid matrices (aka min hops tables) to file and
-later to load these is also supported.
-
-The usage is similar to unicast forwarding tables loading from dump
-file (introduced by 'file' routing engine), but new lid matrix file
-name should be specified by -M or --lid_matrix_file option. For example:
-
-Â opensm -R file -M ./opensm-lid-matrix.dump
-
-The dump file is named 'opensm-lid-matrix.dump' and will be generated in
-standard opensm dump directory (/var/log by default) when
-OSM_LOG_ROUTING logging flag is set.
-
-When routing engine 'file' is activated, but dump file is not specified
-or not cannot be open default lid matrix algorithm will be used.
-
-There is also a switch forwarding tables dumper which generates
-a file compatible with dump_lfts.sh output. This file can be used
-as input for forwarding tables loading by 'file' routing engine.
-Both or one of options -U and -M can be specified together with '-R file'.
-
-NOTE: ibroute has been updated (for switch management ports) to support this.
-Also, lmc was added to switch management ports. ibroute needs to be r7855 or
-later from the trunk.
-
-
+++ /dev/null
- OpenSM Release Notes 2.0.5
- ============================
-
-Version: OpenFabrics Enterprise Distribution (OFED) 1.1
-Repo: https://openib.org/svn/gen2/branches/1.1/src/userspace/management/osm
-Version: 9535 (openib-2.0.5)
-Date: October 2006
-
-1 Overview
-----------
-This document describes the contents of the OpenSM OFED 1.1 release.
-OpenSM is an InfiniBand compliant Subnet Manager and Administration,
-and runs on top of OpenIB. The OpenSM version for this release
-is openib-2.0.5
-
-This document includes the following sections:
-1 This Overview section (describing new features and software
- dependencies)
-2 Known Issues And Limitations
-3 Unsupported IB compliance statements
-4 Major Bug Fixes
-5 Main Verification Flows
-6 Qualified software stacks and devices
-
-1.1 Major New Features
-
-* Partition manager:
- The partition manager provides a means to setup multiple partitions
- by providing a partition policy file. For details please read the
- doc/partition-config.txt or the opensm man page.
-
-* Basic QoS Manager:
- Provides a uniform configuration of the entire fabric with values defined
- in the OpenSM options file. The options support different settings for
- CAs, Switches, and Routers. Note that this is disabled by default and
- using -Q enables QoS fabric setup.
-
-* Loading pre-routes from a file:
- A new routing module enables loading pre-routes from a file.
- To use this option you should use the command line options:
- "-R file --U <your routing file>" or
- "--routing_engine file --ucast_file <your routing file>"
- For more information refer to the file doc/modular-routing.txt
- or the opensm man page.
-
-* SA MultiPathRecord support:
- The SA can now handle requests for multiple PathRecords in one query.
- This includes methods SA GetMulti/GetMultiResp and dual sided RMPP.
-
-* PPC64 is now QAed and supported
-
-* Support LMC > 0 for Switch Enhanced Port 0:
- Allows enhanced switch port 0 (ESP0) to have a non zero
- LMC. Use the configured subnet wide LMC for this. Modifications were
- necessary to the LID assignment and routing to support this.
- Also, added an option to the configuration to use LMC configured for
- subnet for enhanced switch port 0 or set it to 0 even if a non zero
- LMC is configured for the subnet. The default is currently the
- latter option. The new configuration option is: lmc_esp0
-
-1.2 Minor New Features:
-
-* IPoIB broadcast group configuration:
- It is now possible to control the IPoIB broadcast group parameters
- (MTU, rate, SL) through the partitions configuration file.
-
-* Limiting OpenSM log file size:
- By providing the command line option: "-L <size in MB>" or
- "--log_limit <size in MB>" the user can limit the generated log
- file size. When specified, the log file will be truncated upon reaching
- this limit.
-
-* Favor 1K MTU for Tavor (MT23108) HCA
- In cases where a PathRecord or MultiPathRecord is queried and the
- requestor does not specify the MTU or does specify it in a way
- that allows for MTU to be 1K and one of the path ends in a Tavor,
- limit the MTU to 1K max.
-
-* Man pages:
- Added opensm.8 and osmtest.8
-
-* Leaf VL stall count control:
- A new parameter (leaf_vl_stall_count) for controlling the number of
- sequential packets dropped on a switch port driving a HCA/TCA/Router
- that cause the port to enter the VLStalled state was added to the
- options file.
-
-* SM Polling/Handover defaults changed
- The default SMInfo polling retries was decreased from 18 to 4
- which reduces the default handover time from 3 min to 40 seconds.
-
-1.3 Library API Changes
-
-* cl_mem* APIs deprecated in complib:
- These functions are now considered as deprecated and should be
- replaced by direct calls to malloc, free, memset, etc.
-
-* osm_log_init_v2 API added in libopensm:
- Supports providing the new option for log file truncation.
-
-1.4 Software Dependencies
-
-OpenSM depends on the installation of either OFED 1.1, OFED 1.0,
-OpenIB gen2 (e.g. IBG2 distribution), OpenIB gen1 (e.g. IBGD
-distribution), or Mellanox VAPI stacks. The qualified driver versions
-are provided in Table 2, "Qualified IB Stacks".
-
-1.5 Supported Devices Firmware
-
-The main task of OpenSM is to initialize InfiniBand devices. The
-qualified devices and their corresponding firmware versions
-are listed in Table 3.
-
-2 Known Issues And Limitations
-------------------------------
-
-* No Service / Key associations:
- There is no way to manage Service access by Keys.
-
-* No SM to SM SMDB synchronization:
- Puts the burden of re-registering services, multicast groups, and
- inform-info on the client application (or IB access layer core).
-
-* No "port down" event handling:
- Changing the switch port through which OpenSM connects to the IB
- fabric may cause incorrect operation. Please restart OpenSM whenever
- such a connectivity change is made.
-
-* Changing connections during SM operation:
- Under some conditions the SM can get confused by a change in
- cabling (moving a cable from one switch port to the other) and
- momentarily see this as having the same GUID appear connected
- to two different IB ports. Under some conditions, when the SM fails to
- get the corresponding change event it might mistakenly report this case
- as a "duplicated GUID" case and abort. It is advisable to double-check
- the syslog after each such change in connectivity and restart
- OpenSM if it has exited.
-
-3 Unsupported IB Compliance Statements
---------------------------------------
-The following section lists all the IB compliance statements which
-OpenSM does not support. Please refer to the IB specification for detailed
-information regarding each compliance statement.
-
-* C14-22 (Authentication):
- M_Key M_KeyProtectBits and M_KeyLeasePeriod shall be set in one
- SubnSet method. As a work-around, an OpenSM option is provided for
- defining the protect bits.
-
-* C14-67 (Authentication):
- On SubnGet(SMInfo) and SubnSet(SMInfo) - if M_Key is not zero then
- the SM shall generate a SubnGetResp if the M_Key matches, or
- silently drop the packet if M_Key does not match.
-
-* C15-0.1.23.4 (Authentication):
- InformInfoRecords shall always be provided with the QPN set to 0,
- except for the case of a trusted request, in which case the actual
- subscriber QPN shall be returned.
-
-* o13-17.1.2 (Event-FWD):
- If no permission to forward, the subscription should be removed and
- no further forwarding should occur.
-
-* C14-24.1.1.5 and C14-62.1.1.22 (Initialization):
- GUIDInfo - SM should enable assigning Port GUIDInfo.
-
-* C14-44 (Initialization):
- If the SM discovers that it is missing an M_Key to update CA/RT/SW,
- it should notify the higher level.
-
-* C14-62.1.1.12 (Initialization):
- PortInfo:M_Key - Set the M_Key to a node based random value.
-
-* C14-62.1.1.13 (Initialization):
- PortInfo:P_KeyProtectBits - set according to an optional policy.
-
-* C14-62.1.1.24 (Initialization):
- SwitchInfo:DefaultPort - should be configured for random FDB.
-
-* C14-62.1.1.32 (Initialization):
- RandomForwardingTable should be configured.
-
-* o15-0.1.12 (Multicast):
- If the JoinState is SendOnlyNonMember = 1 (only), then the endport
- should join as sender only.
-
-* o15-0.1.8 (Multicast):
- If a request for creating an MCG with fields that cannot be met,
- return ERR_REQ_INVALID (currently ignores SL and FlowLabelTClass).
-
-* C15-0.1.8.6 (SA-Query):
- Respond to SubnAdmGetTraceTable - this is an optional attribute.
-
-* C15-0.1.13 Services:
- Reject ServiceRecord create, modify or delete if the given
- ServiceP_Key does not match the one included in the ServiceGID port
- and the port that sent the request.
-
-* C15-0.1.14 (Services):
- Provide means to associate service name and ServiceKeys.
-
-4 Major Bug Fixes
------------------
-
-The following is a list of bugs that were fixed. Note that other less critical
-or visible bugs were also fixed.
-
-* "Broken" fabric (duplicated port GUIDs) handling improved
- Replace assert with a real check to handle invalid physical port
- in osm_node_info_rcv.c which could occur on a broken fabric
-
-* SA client synchronous request failed but status returned was IB_SUCCESS
- even if there was no response.
- There was a missing setting of the status in the synchronous case.
-
-* Memory leak fixes:
- 1. In libvendor/osm_vendor_ibumad.c:osm_vendor_get_all_port_attr
- 2. In libvendor/osm_vendor_ibumad_sa.c:__osmv_sa_mad_rcv_cb
- 3. On receiving SMInfo SA request from a node that does not share a
- partition, the response mad was allocated but never free'd
- as it was never sent.
-
-* Set(InformInfo) OpenSM Deadlock:
- When receiving a request with unknown LID
-
-* PathRecord to inconsistent multicast destination:
- Fix the return error when multicast destination is not consistently
- indicated.
-
-* Remove double calculation of reversible path
- In osm_sa_path_record.c:__osm_pr_rcv_get_lid_pair_path a PathRecord
- query used to double check if the path is reversible
-
-* Some PathRecord log messages use "net order":
- Fix GUID net to host conversion in some osm_log messages
-
-* DR/LID routed SMPs direction bit handling:
- osm_resp.c:osm_resp_make_resp_smp, set direction bit only if direct
- routed class. This bug caused two issues:
- 1. Get/Set responses always had direction bit set.
- 2. Trap represses never had direction bit set.
- The direction bit needs setting in direct routed responses and it
- doesn't exist in LID routed responses.
- osm_sm_mad_ctrl.c: did not detect the "direction bit" correctly.
-
-* OpenSM crash due to transaction lookup (interop with Cisco stack)
- When a wire TID that maps to internal TID of zero (after applying
- mask) was received the lookup of the transaction was successful.
- The stale transaction pointed to "free'd" memory.
-
-* Better handling for Path/MultiPath requests for raw traffic
-
-* Wrong ProducerType provided in Notice Reports:
- When formating an SM generated report, the ProducerType was using
- CL_NTOH32 which can not be used to format a 24bit network order number.
-
-* OpenSM break on PPC64
- complib: Fixed memory corruption in cl_pool.c:cl_qcpool_init. This
- affected big endian 64-bit architectures only.
-
-* Illegal Set(InformInfo) was wrongly successful in updating the SMDB
- osm_sa_informinfo.c: In osm_infr_rcv_process_set_method, if sending
- error, don't call osm_infr_rcv_process_set_method
-
-* RMPP queries of InformInfoRecord fail
- ib_types.h: Pad ib_inform_info_record_t to be modulo 8 in size so
- that attribute offset is calculated properly
-
-* Returning "invalid request" rather than "unsupported method/attribute"
- In these cases, a noncompliant response was being provided.
-
-* Noncompliant response for SubnAdmGet(PortInfoRecord) with no match
- osm_pir_rcv_process, now returns "SA no records error" for SubnAdmGet
- with 0 records found
-
-* Noncompliant non base LID returned by some queries:
- The following attributes used to return the request LID rather than
- its base LID in responses: PKeyTableRecord, GUIDInfoRecord,
- SLtoVLMappingTableRecord, VLArbitrationTableRecord, LinkRecord
-
-* Noncompliant SubnAdmGet and SubnAdmGetTable:
- Mixing of error codes in case of no records or multiple records
- fixed for the attributes:
- LinearForwardingTableRecord, GUIDInfoRecord,
- VLArbitrationTableRecord, LinkRecord, PathRecord
-
-* segfault in InformInfo flows
- Under stress concurrent Set/Delete/Get flows. Fixed by adding
- missing lock.
-
-* SA queries containing LID out if range did not return ERR_REQ_INVALID
-
-5 Main Verification Flows
--------------------------
-
-OpenSM verification is run using the following activities:
-* osmtest - a stand-alone program
-* ibmgtsim (IB management simulator) based - a set of flows that
- simulate clusters, inject errors and verify OpenSM capability to
- respond and bring up the network correctly.
-* small cluster regression testing - where the SM is used on back to
- back or single switch configurations. The regression includes
- multiple OpenSM dedicated tests.
-* cluster testing - when we run OpenSM to setup a large cluster, perform
- hand-off, reboots and reconnects, verify routing correctness and SA
- responsiveness at the ULP level (IPoIB and SDP).
-
-5.1 osmtest
-
-osmtest is an automated verification tool used for OpenSM
-testing. Its verification flows are described by list below.
-
-* Inventory File: Obtain and verify all port info, node info, link and path
- records parameters.
-
-* Service Record:
- - Register new service
- - Register another service (with a lease period)
- - Register another service (with service p_key set to zero)
- - Get all services by name
- - Delete the first service
- - Delete the third service
- - Added bad flows of get/delete non valid service
- - Add / Get same service with different data
- - Add / Get / Delete by different component mask values (services
- by Name & Key / Name & Data / Name & Id / Id only )
-
-* Multicast Member Record:
- - Query of existing Groups (IPoIB)
- - BAD Join with insufficient comp mask (o15.0.1.3)
- - Create given MGID=0 (o15.0.1.4)
- - Create given MGID=0xFF12A01C,FE800000,00000000,12345678 (o15.0.1.4)
- - Create BAD MGID=0xFA. (o15.0.1.6)
- - Create BAD MGID=0xFF12A01B w/ link-local not set (o15.0.1.6)
- - New MGID with invalid join state (o15.0.1.9)
- - Retry of existing MGID - See JoinState update (o15.0.1.11)
- - BAD RATE when connecting to existing MGID (o15.0.1.13)
- - Partial JoinState delete request - removing FullMember (o15.0.1.14)
- - Full Delete of a group (o15.0.1.14)
- - Verify Delete by trying to Join deleted group (o15.0.1.14)
- - BAD Delete of IPoIB membership (no prev join) (o15.0.1.15)
-
-* GUIDInfo Record:
- - All GUIDInfoRecords in subnet are obtained
-
-* MultiPathRecord:
- - Perform some compliant and noncompliant MultiPathRecord requests
- - Validation is via status in responses and IB analyzer
-
-* PKeyTableRecord:
- - Perform some compliant and noncompliant PKeyTableRecord queries
- - Validation is via status in responses and IB analyzer
-
-* LinearForwardingTableRecord:
- - Perform some compliant and noncompliant LinearForwardingTableRecord queries
- - Validation is via status in responses and IB analyzer
-
-* Event Forwarding: Register for trap forwarding using reports
- - Send a trap and wait for report
- - Unregister non-existing
-
-* Trap 64/65 Flow: Register to Trap 64-65, create traps (by
- disconnecting/connecting ports) and wait for report, then unregister.
-
-* Stress Test: send PortInfoRecord queries, both single and RMPP and
- check for the rate of responses as well as their validity.
-
-
-5.2 IB Management Simulator OpenSM Test Flows:
-
-The simulator provides ability to simulate the SM handling of virtual
-topologies that are not limited to actual lab equipment availability.
-OpenSM was simulated to bring up clusters of up to 10,000 nodes. Daily
-regressions use smaller (16 and 128 nodes clusters).
-
-The following test flows are run on the IB management simulator:
-
-* Stability:
- Up to 12 links from the fabric are randomly selected to drop packets
- at drop rates up to 90%. The SM is required to succeed in bringing the
- fabric up. The resulting routing is verified to be correct as well.
-
-* LID Manager:
- Using LMC = 2 the fabric is initialized with LIDs. Faults such as
- zero LID, Duplicated LID, non-aligned (to LMC) LIDs are
- randomly assigned to various nodes and other errors are randomly
- output to the guid2lid cache file. The SM sweep is run 5 times and
- after each iteration a complete verification is made to ensure that all
- LIDs that could possibly be maintained are kept, as well as that all nodes
- were assigned a legal LID range.
-
-* Multicast Routing:
- Nodes randomly join the 0xc000 group and eventually the
- resulting routing is verified for completeness and adherence to
- Up/Down routing rules.
-
-* osmtest:
- The complete osmtest flow as described in the previous table is run on
- the simulated fabrics.
-
-* Stress Test:
- This flow merges fabric, LID and stability issues with continuous
- PathRecord, ServiceRecord and Multicast Join/Leave activity to
- stress the SM/SA during continuous sweeps. InformInfo Set/Delete/Get
- were added to the test such both existing and non existing nodes
- perform them in random order.
-
-5.3 OpenSM Regression
-
-Using a back-to-back or single switch connection, the following set of
-tests is run nightly on the stacks described in table 2. The included
-tests are:
-
-* Stress Testing: Flood the SA with queries from multiple channel
- adapters to check the robustness of the entire stack up to the SA.
-
-* Dynamic Changes: Dynamic Topology changes, through randomly
- dropping SMP packets, used to test OpenSM adaptation to an unstable
- network & verify DB correctness.
-
-* Trap Injection: This flow injects traps to the SM and verifies that it
- handles them gracefully.
-
-* SA Query Test: This test exhaustively checks the SA responses to all
- possible single component mask. To do that the test examines the
- entire set of records the SA can provide, classifies them by their
- field values and then selects every field (using component mask and a
- value) and verifies that the response matches the expected set of records.
- A random selection using multiple component mask bits is also performed.
-
-5.4 Cluster testing:
-
-Cluster testing is usually run before a distribution release. It
-involves real hardware setups of 16 to 32 nodes (or more if a beta site
-is available). Each test is validated by running all-to-all ping through the IB
-interface. The test procedure includes:
-
-* Cluster bringup
-
-* Hand-off between 2 or 3 SM's while performing:
- - Node reboots
- - Switch power cycles (disconnecting the SM's)
-
-* Unresponsive port detection and recovery
-
-* osmtest from multiple nodes
-
-* Trap injection and recovery
-
-
-6 Qualification
-----------------
-
-Table 2 - Qualified IB Stacks
-=============================
-
-Stack | Version
------------------------------------------|--------------------------
-OFED | 1.1
-OFED | 1.0
-OpenIB Gen2 (IBG2 distribution) | 1.0
-OpenIB Gen1 (IBGD distribution) | 1.8.0
-VAPI (Mellanox InfiniBand HCA Driver) | 3.2 and later
-
-Table 3 - Qualified Devices and Corresponding Firmware
-======================================================
-
-Mellanox
-Device | FW versions
---------|-----------------------------------------------------------
-MT43132 | InfiniScale - fw-43132 5.2.0 (and later)
-MT47396 | InfiniScale III - fw-47396 0.5.0 (and later)
-MT23108 | InfiniHost - fw-23108 3.3.2 (and later)
-MT25204 | InfiniHost III Lx - fw-25204 1.0.1i (and later)
-MT25208 | InfiniHost III Ex (InfiniHost Mode) - fw-25208 4.6.2 (and later)
-MT25208 | InfiniHost III Ex (MemFree Mode) - fw-25218 5.0.1 (and later)
-
-QLogic/PathScale
-Device | Note
---------|-----------------------------------------------------------
-iPath | QHT6040 (PathScale InfiniPath HT-460)
-iPath | QHT6140 (PathScale InfiniPath HT-465)
-iPath | QLE6140 (PathScale InfiniPath PE-880)
-
-Note: OpenSM does not run on an IBM Galaxy (eHCA) as it does not expose
-QP0 and QP1. However, it does support it as a device on the subnet.
-
+++ /dev/null
-/*
- * Copyright (c) 2004,2005 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under the OpenIB.org BSD license
- * below:
- *
- * Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the following
- * conditions are met:
- *
- * - Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the following
- * disclaimer.
- *
- * - Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * $Id$
- */
-
-
-
-/*
- * Abstract:
- * provides byteswapping utilities. Basic fuctions are obtained from platform
- * specific implementations from ibyteswap_osd.h.
- *
- * Environment:
- * All
- */
-
-
-#ifndef _CL_BYTESWAP_H_
-#define _CL_BYTESWAP_H_
-
-
-#include <complib/cl_memory.h>
-#include <complib/cl_byteswap_osd.h>
-
-
-/****h* Component Library/Byte Swapping
-* NAME
-* Byte Swapping
-*
-* DESCRIPTION
-* The byte swapping functions and macros allow swapping bytes from network
-* byte order to host byte order.
-*
-* All data transmitted between systems should be in network byte order.
-* In order to utilize such data, it must be converted to host byte order
-* before use.
-*
-* SEE ALSO
-* Functions:
-* cl_ntoh16, cl_hton16, cl_ntoh32, cl_hton32, cl_ntoh64, cl_hton64,
-* cl_ntoh
-*
-* Macros:
-* CL_NTOH16, CL_HTON16, CL_NTOH32, CL_HTON32, CL_NTOH64, CL_HTON64
-*********/
-
-
-/*
- * The ibyteswap_osd.h provides the following macros.
- * __LITTLE_ENDIAN
- * __BIG_ENDIAN
- * __BYTE_ORDER
- *
- * If the platform provides byte swapping functions, ibyteswap_osd.h also
- * provides the following macros.
- * ntoh16, hton16
- * ntoh32, hton32
- * ntoh64, hton64
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-
-/****d* Component Library: Byte Swapping/CL_NTOH16
-* NAME
-* CL_NTOH16
-*
-* DESCRIPTION
-* The CL_NTOH16 macro converts a 16-bit value from network byte order to
-* host byte order. The CL_NTOH16 macro will cause constant values to be
-* swapped by the pre-processor. For variables, CL_NTOH16 is less efficient
-* than the cl_ntoh16 function.
-*
-* SYNOPSIS
-* CL_NTOH16( val );
-*
-* PARAMETERS
-* val
-* [in] 16-bit value to swap from network byte order to host byte order.
-*
-* RESULT
-* Value of val converted to host byte order.
-*
-* NOTES
-* This macro is analogous to CL_HTON16.
-*
-* SEE ALSO
-* Byte Swapping, CL_HTON16, CL_NTOH32, CL_NTOH64,
-* cl_ntoh16, cl_ntoh32, cl_ntoh64, cl_ntoh
-*********/
-/****d* Component Library: Byte Swapping/CL_HTON16
-* NAME
-* CL_HTON16
-*
-* DESCRIPTION
-* The CL_HTON16 macro converts a 16-bit value from host byte order to
-* network byte order. The CL_HTON16 macro will cause constant values to be
-* swapped by the pre-processor. For variables, CL_HTON16 is less efficient
-* than the cl_hton16 function.
-*
-* SYNOPSIS
-* CL_HTON16( val );
-*
-* PARAMETERS
-* val
-* [in] 16-bit value to swap from host byte order to network byte order.
-*
-* RESULT
-* Value of val converted to network byte order.
-*
-* NOTES
-* This macro is analogous to CL_NTOH16.
-*
-* SEE ALSO
-* Byte Swapping, CL_NTOH16, CL_HTON32, CL_HTON64,
-* cl_hton16, cl_hton32, cl_hton64, cl_ntoh
-*********/
-#if CPU_LE
- #define CL_NTOH16( x ) (uint16_t)( \
- (((uint16_t)(x) & 0x00FF) << 8) | \
- (((uint16_t)(x) & 0xFF00) >> 8) )
-#else
- #define CL_NTOH16( x ) (x)
-#endif
-#define CL_HTON16 CL_NTOH16
-
-
-/****f* Component Library: Byte Swapping/cl_ntoh16
-* NAME
-* cl_ntoh16
-*
-* DESCRIPTION
-* The cl_ntoh16 function converts a 16-bit value from network byte order to
-* host byte order.
-*
-* SYNOPSIS
-* uint16_t
-* cl_ntoh16(
-* IN const uint16_t val );
-*
-* PARAMETERS
-* val
-* [in] Value to swap from network byte order to host byte order.
-*
-* RETURN VALUE
-* Value of val converted to host byte order.
-*
-* NOTES
-* This function is analogous to cl_hton16.
-*
-* SEE ALSO
-* Byte Swapping, cl_hton16, cl_ntoh32, cl_ntoh64, cl_ntoh
-*********/
-/****f* Component Library: Byte Swapping/cl_hton16
-* NAME
-* cl_hton16
-*
-* DESCRIPTION
-* The cl_hton16 function converts a 16-bit value from host byte order to
-* network byte order.
-*
-* SYNOPSIS
-* uint16_t
-* cl_hton16(
-* IN const uint16_t val );
-*
-* PARAMETERS
-* val
-* [in] Value to swap from host byte order to network byte order .
-*
-* RETURN VALUE
-* Value of val converted to network byte order.
-*
-* NOTES
-* This function is analogous to cl_ntoh16.
-*
-* SEE ALSO
-* Byte Swapping, cl_ntoh16, cl_hton32, cl_hton64, cl_ntoh
-*********/
-#undef cl_ntoh16
-#undef cl_hton16
-#ifndef cl_ntoh16
- #define cl_ntoh16 CL_NTOH16
- #define cl_hton16 CL_HTON16
-#endif
-
-
-/****d* Component Library: Byte Swapping/CL_NTOH32
-* NAME
-* CL_NTOH32
-*
-* DESCRIPTION
-* The CL_NTOH32 macro converts a 32-bit value from network byte order to
-* host byte order. The CL_NTOH32 macro will cause constant values to be
-* swapped by the pre-processor. For variables, CL_NTOH32 is less efficient
-* than the cl_ntoh32 function.
-*
-* SYNOPSIS
-* CL_NTOH32( val );
-*
-* PARAMETERS
-* val
-* [in] 32-bit value to swap from network byte order to host byte order.
-*
-* RESULT
-* Value of val converted to host byte order.
-*
-* NOTES
-* This macro is analogous to CL_HTON32.
-*
-* SEE ALSO
-* Byte Swapping, CL_HTON32, CL_NTOH16, CL_NTOH64,
-* cl_ntoh16, cl_ntoh32, cl_ntoh64, cl_ntoh
-*********/
-/****d* Component Library: Byte Swapping/CL_HTON32
-* NAME
-* CL_HTON32
-*
-* DESCRIPTION
-* The CL_HTON32 macro converts a 32-bit value from host byte order to
-* network byte order. The CL_HTON32 macro will cause constant values to be
-* swapped by the pre-processor. For variables, CL_HTON32 is less efficient
-* than the cl_hton32 function.
-*
-* SYNOPSIS
-* CL_HTON32( val );
-*
-* PARAMETERS
-* val
-* [in] 32-bit value to swap from host byte order to network byte order.
-*
-* RESULT
-* Value of val converted to network byte order.
-*
-* NOTES
-* This macro is analogous to CL_NTOH32.
-*
-* SEE ALSO
-* Byte Swapping, CL_NTOH32, CL_HTON16, CL_HTON64,
-* cl_hton16, cl_hton32, cl_hton64, cl_ntoh
-*********/
-#if CPU_LE
- #define CL_NTOH32( x ) (uint32_t)( \
- (((uint32_t)(x) & 0x000000FF) << 24) | \
- (((uint32_t)(x) & 0x0000FF00) << 8) | \
- (((uint32_t)(x) & 0x00FF0000) >> 8) | \
- (((uint32_t)(x) & 0xFF000000) >> 24) )
-#else
- #define CL_NTOH32( x ) (x)
-#endif
-#define CL_HTON32 CL_NTOH32
-
-
-/****f* Component Library: Byte Swapping/cl_ntoh32
-* NAME
-* cl_ntoh32
-*
-* DESCRIPTION
-* The cl_ntoh32 function converts a 32-bit value from network byte order to
-* host byte order.
-*
-* SYNOPSIS
-* uint32_t
-* cl_ntoh32(
-* IN const uint32_t val );
-*
-* PARAMETERS
-* val
-* [in] Value to swap from network byte order to host byte order.
-*
-* RETURN VALUE
-* Value of val converted in host byte order.
-*
-* NOTES
-* This function is analogous to cl_hton32.
-*
-* SEE ALSO
-* Byte Swapping, cl_hton32, cl_ntoh16, cl_ntoh64, cl_ntoh
-*********/
-/****f* Component Library: Byte Swapping/cl_hton32
-* NAME
-* cl_hton32
-*
-* DESCRIPTION
-* The cl_hton32 function converts a 32-bit value from host byte order to
-* network byte order.
-*
-* SYNOPSIS
-* uint32_t
-* cl_hton32(
-* IN const uint32_t val );
-*
-* PARAMETERS
-* val
-* [in] Value to swap from host byte order to network byte order .
-*
-* RETURN VALUE
-* Value of val converted to network byte order.
-*
-* NOTES
-* This function is analogous to cl_ntoh32.
-*
-* SEE ALSO
-* Byte Swapping, cl_ntoh32, cl_hton16, cl_hton64, cl_ntoh
-*********/
-#undef cl_ntoh32
-#undef cl_hton32
-#ifndef cl_ntoh32
- #define cl_ntoh32 CL_NTOH32
- #define cl_hton32 CL_HTON32
-#endif
-
-
-/****d* Component Library: Byte Swapping/CL_NTOH64
-* NAME
-* CL_NTOH64
-*
-* DESCRIPTION
-* The CL_NTOH64 macro converts a 64-bit value from network byte order to
-* host byte order. The CL_NTOH64 macro will cause constant values to be
-* swapped by the pre-processor. For variables, CL_NTOH64 is less efficient
-* than the cl_ntoh64 function.
-*
-* SYNOPSIS
-* CL_NTOH64( val );
-*
-* PARAMETERS
-* val
-* [in] 64-bit value to swap from network byte order to host byte order.
-*
-* RESULT
-* Value of val converted to host byte order.
-*
-* NOTES
-* This macro is analogous to CL_HTON64.
-*
-* SEE ALSO
-* Byte Swapping, CL_HTON64, CL_NTOH16, CL_NTOH32,
-* cl_ntoh16, cl_ntoh32, cl_ntoh64, cl_ntoh
-*********/
-/****d* Component Library: Byte Swapping/CL_HTON64
-* NAME
-* CL_HTON64
-*
-* DESCRIPTION
-* The CL_HTON64 macro converts a 64-bit value from host byte order to
-* network byte order. The CL_HTON64 macro will cause constant values to be
-* swapped by the pre-processor. For variables, CL_HTON64 is less efficient
-* than the cl_hton64 function.
-*
-* SYNOPSIS
-* CL_HTON64( val );
-*
-* PARAMETERS
-* val
-* [in] 64-bit value to swap from host byte order to network byte order.
-*
-* RESULT
-* Value of val converted to network byte order.
-*
-* NOTES
-* This macro is analogous to CL_NTOH64.
-*
-* SEE ALSO
-* Byte Swapping, CL_NTOH64, CL_HTON16, CL_HTON32,
-* cl_hton16, cl_hton32, cl_hton64, cl_ntoh
-*********/
-#if CPU_LE
- #define CL_NTOH64( x ) (uint64_t)( \
- (((uint64_t)(x) & CL_CONST64(0x00000000000000FF)) << 56) | \
- (((uint64_t)(x) & CL_CONST64(0x000000000000FF00)) << 40) | \
- (((uint64_t)(x) & CL_CONST64(0x0000000000FF0000)) << 24) | \
- (((uint64_t)(x) & CL_CONST64(0x00000000FF000000)) << 8 ) | \
- (((uint64_t)(x) & CL_CONST64(0x000000FF00000000)) >> 8 ) | \
- (((uint64_t)(x) & CL_CONST64(0x0000FF0000000000)) >> 24) | \
- (((uint64_t)(x) & CL_CONST64(0x00FF000000000000)) >> 40) | \
- (((uint64_t)(x) & CL_CONST64(0xFF00000000000000)) >> 56) )
-#else
- #define CL_NTOH64( x ) (x)
-#endif
-#define CL_HTON64 CL_NTOH64
-
-
-/****f* Component Library: Byte Swapping/cl_ntoh64
-* NAME
-* cl_ntoh64
-*
-* DESCRIPTION
-* The cl_ntoh64 function converts a 64-bit value from network byte order to
-* host byte order.
-*
-* SYNOPSIS
-* uint64_t
-* cl_ntoh64(
-* IN const uint64_t val );
-*
-* PARAMETERS
-* val
-* [in] Value to swap from network byte order to host byte order.
-*
-* RETURN VALUE
-* Value of val converted in host byte order.
-*
-* NOTES
-* This function is analogous to cl_hton64.
-*
-* SEE ALSO
-* Byte Swapping, cl_hton64, cl_ntoh16, cl_ntoh32, cl_ntoh
-*********/
-/****f* Component Library: Byte Swapping/cl_hton64
-* NAME
-* cl_hton64
-*
-* DESCRIPTION
-* The cl_hton64 function converts a 64-bit value from host byte order to
-* network byte order.
-*
-* SYNOPSIS
-* uint64_t
-* cl_hton64(
-* IN const uint64_t val );
-*
-* PARAMETERS
-* val
-* [in] Value to swap from host byte order to network byte order .
-*
-* RETURN VALUE
-* Value of val converted to network byte order.
-*
-* NOTES
-* This function is analogous to cl_ntoh64.
-*
-* SEE ALSO
-* Byte Swapping, cl_ntoh64, cl_hton16, cl_hton32, cl_ntoh
-*********/
-#undef cl_ntoh64
-#undef cl_hton64
-#ifndef cl_ntoh64
- #define cl_ntoh64 CL_NTOH64
- #define cl_hton64 CL_HTON64
-#endif
-
-
-/****f* Component Library: Byte Swapping/cl_ntoh
-* NAME
-* cl_ntoh
-*
-* DESCRIPTION
-* The cl_ntoh function converts a value from network byte order to
-* host byte order.
-*
-* SYNOPSIS
-*/
-CL_INLINE void CL_API
-cl_ntoh(
- OUT char* const p_dest,
- IN const char* const p_src,
- IN const uint8_t size )
-{
-#if CPU_LE
- uint8_t i;
- char temp;
-
- if( p_src == p_dest )
- {
- /* Swap in place if source and destination are the same. */
- for( i = 0; i < size / 2; i++ )
- {
- temp = p_dest[i];
- p_dest[i] = p_src[size - 1 - i];
- p_dest[size - 1 - i] = temp;
- }
- }
- else
- {
- for( i = 0; i < size; i++ )
- p_dest[i] = p_src[size - 1 - i];
- }
-#else
- /*
- * If the source and destination are not the same, copy the source to
- * the destination.
- */
- if( p_src != p_dest )
- cl_memcpy( p_dest, p_src, size );
-#endif
-}
-/*
-* PARAMETERS
-* p_dest
-* [in] Pointer to a byte array to contain the converted value of p_src.
-*
-* p_src
-* [in] Pointer to a byte array to be converted from network byte
-* ordering.
-*
-* size
-* [in] Number of bytes to swap.p_dest
-*
-* RETURN VALUE
-* This function does not return a value.
-*
-* NOTES
-* cl_ntoh can perform in place swapping if both p_src and p_dest point to
-* the same buffer.
-*
-* SEE ALSO
-* Byte Swapping, cl_ntoh16, cl_ntoh32, cl_ntoh64
-*********/
-
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif
-
-#endif /* _CL_BYTESWAP_H_ */
+++ /dev/null
-/*
- * Copyright (c) 2005 Mellanox Technologies. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under the OpenIB.org BSD license
- * below:
- *
- * Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the following
- * conditions are met:
- *
- * - Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the following
- * disclaimer.
- *
- * - Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * $Id$
- */
-
-/*
- * Abstract:
- * Declaration of Signal Handler Registration
- *
- * Environment:
- * All
- *
- * $Revision: 1.3 $
- */
-
-
-#ifndef _CL_SIG_HDL_H_
-#define _CL_SIG_HDL_H_
-
-#include <signal.h>
-
-/****h* Component Library/Signal Handler
-* NAME
-* Signal Handler Registration
-*
-* DESCRIPTION
-* The Signal Handler Registration allows to register a callback on the case of incoming signal
-*
-* SEE ALSO
-*********/
-/* TODO : Required when calling signal function in windows*/
-typedef void (__cdecl *cl_sig_hdl)(
- IN int sig);
-/* Prototypes */
-
-/****f* Component Library: Signal Handler/cl_reg_sig_hdl
-* NAME
-* cl_reg_sig_hdl
-*
-* DESCRIPTION
-* Register the handler for the given signal
-*
-* SYNOPSIS
-*/
-
-static inline void
-cl_reg_sig_hdl(int sig, cl_sig_hdl pfn_sig_hdl);
-
-
-
-/****f* Component Library: Signal Handler/cl_mask_sigint
-* NAME
-* cl_sig_mask_sigint
-*
-* DESCRIPTION
-* Mask the kill signal
-*
-* SYNOPSIS
-*/
-
-static inline void
-cl_sig_mask_sigint(void);
-
-
-
-
-/****f* Component Library: Signal Handler/cl_reg_sig_hdl
-* NAME
-* cl_reg_sig_hdl
-*
-* DESCRIPTION
-* Register the handler for the given signal
-*
-* SYNOPSIS
-*/
-static inline void
-cl_reg_sig_hdl(int sig, cl_sig_hdl pfn_sig_hdl) {
- signal(sig,pfn_sig_hdl);
- }
-/*
-*********/
-
-/****f* Component Library: Signal Handler/cl_mask_sigint
-* NAME
-* cl_sig_mask_sigint
-*
-* DESCRIPTION
-* Mask the kill signal
-*
-* SYNOPSIS
-*/
-static inline void
-cl_sig_mask_sigint(void)
-{
-
-}
-/*
-*********/
-
-#endif /* _CL_SIG_HDL_H_ */
+++ /dev/null
-/*\r
- * Copyright (c) 2004,2005 Voltaire, Inc. All rights reserved. \r
- * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved. \r
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved. \r
- * Portions Copyright (c) 2008 Microsoft Corporation. All rights reserved.\r
- * \r
- * This software is available to you under the OpenIB.org BSD license \r
- * below: \r
- * \r
- * Redistribution and use in source and binary forms, with or \r
- * without modification, are permitted provided that the following \r
- * conditions are met: \r
- * \r
- * - Redistributions of source code must retain the above \r
- * copyright notice, this list of conditions and the following \r
- * disclaimer. \r
- * \r
- * - Redistributions in binary form must reproduce the above \r
- * copyright notice, this list of conditions and the following \r
- * disclaimer in the documentation and/or other materials \r
- * provided with the distribution. \r
- * \r
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, \r
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF \r
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND \r
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS \r
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN \r
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN \r
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE \r
- * SOFTWARE. \r
- * \r
- * $Id$\r
- */\r
-\r
-\r
-#if !defined(__IB_TYPES_EXTENDED_H__)\r
-#define __IB_TYPES_EXTENDED_H__\r
-\r
-\r
-#if defined( WIN32 )\r
- #if defined( EXPORT_AL_SYMBOLS )\r
- #define AL_EXPORT __declspec(dllexport)\r
- #else\r
- #define AL_EXPORT __declspec(dllimport)\r
- #endif\r
-\r
- #ifdef CL_KERNEL\r
- #define AL_API\r
- #define AL_INLINE static inline\r
- #else\r
- #define AL_API __stdcall\r
- #define AL_INLINE static inline\r
- #endif /* CL_KERNEL */\r
-#else\r
- #define AL_EXPORT extern\r
- #define AL_INLINE static inline\r
- #define AL_API\r
- #define __ptr64\r
-#endif\r
-\r
-/*\r
- * Defines the size of user available data in communication management MADs\r
- */\r
-#define IB_REQ_PDATA_SIZE 92\r
-#define IB_MRA_PDATA_SIZE 222\r
-#define IB_REJ_PDATA_SIZE 148\r
-#define IB_REP_PDATA_SIZE 196\r
-#define IB_RTU_PDATA_SIZE 224\r
-#define IB_LAP_PDATA_SIZE 168\r
-#define IB_APR_PDATA_SIZE 148\r
-#define IB_DREQ_PDATA_SIZE 220\r
-#define IB_DREP_PDATA_SIZE 224\r
-#define IB_SIDR_REQ_PDATA_SIZE 216\r
-#define IB_SIDR_REP_PDATA_SIZE 136\r
-\r
-/* following v1 ver1.2 p901 */\r
-#define IB_PATH_RECORD_RATE_5_GBS 5\r
-#define IB_PATH_RECORD_RATE_20_GBS 6\r
-#define IB_PATH_RECORD_RATE_40_GBS 7\r
-#define IB_PATH_RECORD_RATE_60_GBS 8\r
-#define IB_PATH_RECORD_RATE_80_GBS 9\r
-#define IB_PATH_RECORD_RATE_120_GBS 10\r
-\r
-\r
-\r
-typedef struct _ib_srq* ib_srq_handle_t ; \r
-\r
-/*\r
- * The following definitions are shared between the Access Layer and VPD\r
- */\r
-\r
-\r
-\r
-/****d* Access Layer/ib_api_status_t\r
-* NAME\r
-* ib_api_status_t\r
-*\r
-* DESCRIPTION\r
-* Function return codes indicating the success or failure of an API call.\r
-* Note that success is indicated by the return value IB_SUCCESS, which\r
-* is always zero.\r
-*\r
-* NOTES\r
-* IB_VERBS_PROCESSING_DONE is used by UVP library to terminate a verbs call\r
-* in the pre-ioctl step itself.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef enum _ib_api_status_t\r
-{\r
- IB_SUCCESS,\r
- IB_INSUFFICIENT_RESOURCES,\r
- IB_INSUFFICIENT_MEMORY,\r
- IB_INVALID_PARAMETER,\r
- IB_INVALID_SETTING,\r
- IB_NOT_FOUND,\r
- IB_TIMEOUT,\r
- IB_CANCELED,\r
- IB_INTERRUPTED,\r
- IB_INVALID_PERMISSION,\r
- IB_UNSUPPORTED,\r
- IB_OVERFLOW,\r
- IB_MAX_MCAST_QPS_REACHED,\r
- IB_INVALID_QP_STATE,\r
- IB_INVALID_APM_STATE,\r
- IB_INVALID_PORT_STATE,\r
- IB_INVALID_STATE,\r
- IB_RESOURCE_BUSY,\r
- IB_INVALID_PKEY,\r
- IB_INVALID_LKEY,\r
- IB_INVALID_RKEY,\r
- IB_INVALID_MAX_WRS,\r
- IB_INVALID_MAX_SGE,\r
- IB_INVALID_CQ_SIZE,\r
- IB_INVALID_SRQ_SIZE,\r
- IB_INVALID_SERVICE_TYPE,\r
- IB_INVALID_GID,\r
- IB_INVALID_LID,\r
- IB_INVALID_GUID,\r
- IB_INVALID_GUID_MASK,\r
- IB_INVALID_CA_HANDLE,\r
- IB_INVALID_AV_HANDLE,\r
- IB_INVALID_CQ_HANDLE,\r
- IB_INVALID_QP_HANDLE,\r
- IB_INVALID_SRQ_HANDLE,\r
- IB_INVALID_PD_HANDLE,\r
- IB_INVALID_MR_HANDLE,\r
- IB_INVALID_FMR_HANDLE,\r
- IB_INVALID_MW_HANDLE,\r
- IB_INVALID_MCAST_HANDLE,\r
- IB_INVALID_CALLBACK,\r
- IB_INVALID_AL_HANDLE, /* InfiniBand Access Layer */\r
- IB_INVALID_HANDLE, /* InfiniBand Access Layer */\r
- IB_ERROR, /* InfiniBand Access Layer */\r
- IB_REMOTE_ERROR, /* Infiniband Access Layer */\r
- IB_VERBS_PROCESSING_DONE, /* See Notes above */\r
- IB_INVALID_WR_TYPE,\r
- IB_QP_IN_TIMEWAIT,\r
- IB_EE_IN_TIMEWAIT,\r
- IB_INVALID_PORT,\r
- IB_NOT_DONE,\r
- IB_INVALID_INDEX,\r
- IB_NO_MATCH,\r
- IB_PENDING,\r
- IB_UNKNOWN_ERROR /* ALWAYS LAST ENUM VALUE! */\r
-\r
-} ib_api_status_t;\r
-/*****/\r
-\r
-\r
-\r
-/****f* IBA Base: Types/ib_get_err_str\r
-* NAME\r
-* ib_get_err_str\r
-*\r
-* DESCRIPTION\r
-* Returns a string for the specified status value.\r
-*\r
-* SYNOPSIS\r
-*/\r
-AL_EXPORT const char* AL_API\r
-ib_get_err_str(\r
- IN ib_api_status_t status );\r
-/*\r
-* PARAMETERS\r
-* status\r
-* [in] status value\r
-*\r
-* RETURN VALUES\r
-* Pointer to the status description string.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-/****d* Verbs/ib_async_event_t\r
-* NAME\r
-* ib_async_event_t -- Async event types\r
-*\r
-* DESCRIPTION\r
-* This type indicates the reason the async callback was called.\r
-* The context in the ib_event_rec_t indicates the resource context\r
-* that associated with the callback. For example, for IB_AE_CQ_ERROR\r
-* the context provided during the ib_create_cq is returned in the event.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef enum _ib_async_event_t\r
-{\r
- IB_AE_SQ_ERROR = 1,\r
- IB_AE_SQ_DRAINED,\r
- IB_AE_RQ_ERROR,\r
- IB_AE_CQ_ERROR,\r
- IB_AE_QP_FATAL,\r
- IB_AE_QP_COMM,\r
- IB_AE_QP_APM,\r
- IB_AE_LOCAL_FATAL,\r
- IB_AE_PKEY_TRAP,\r
- IB_AE_QKEY_TRAP,\r
- IB_AE_MKEY_TRAP,\r
- IB_AE_PORT_TRAP,\r
- IB_AE_SYSIMG_GUID_TRAP,\r
- IB_AE_BUF_OVERRUN,\r
- IB_AE_LINK_INTEGRITY,\r
- IB_AE_FLOW_CTRL_ERROR,\r
- IB_AE_BKEY_TRAP,\r
- IB_AE_QP_APM_ERROR,\r
- IB_AE_WQ_REQ_ERROR,\r
- IB_AE_WQ_ACCESS_ERROR,\r
- IB_AE_PORT_ACTIVE,\r
- IB_AE_PORT_DOWN,\r
- IB_AE_CLIENT_REREGISTER,\r
- IB_AE_SRQ_LIMIT_REACHED,\r
- IB_AE_SRQ_CATAS_ERROR,\r
- IB_AE_SRQ_QP_LAST_WQE_REACHED,\r
- IB_AE_RESET_DRIVER,\r
- IB_AE_RESET_CLIENT,\r
- IB_AE_RESET_END,\r
- IB_AE_RESET_FAILED,\r
- IB_AE_LID_CHANGE,\r
- IB_AE_PKEY_CHANGE,\r
- IB_AE_SM_CHANGE,\r
- IB_AE_GID_CHANGE,\r
- IB_AE_UNKNOWN /* ALWAYS LAST ENUM VALUE */\r
-\r
-} ib_async_event_t;\r
-/*\r
-* VALUES\r
-* IB_AE_SQ_ERROR\r
-* An error occurred when accessing the send queue of the QP.\r
-* This event is optional.\r
-*\r
-* IB_AE_SQ_DRAINED\r
-* The send queue of the specified QP has completed the outstanding\r
-* messages in progress when the state change was requested and, if\r
-* applicable, has received all acknowledgements for those messages.\r
-*\r
-* IB_AE_RQ_ERROR\r
-* An error occurred when accessing the receive queue of the QP.\r
-* This event is optional.\r
-*\r
-* IB_AE_CQ_ERROR\r
-* An error occurred when writing an entry to the CQ.\r
-*\r
-* IB_AE_QP_FATAL\r
-* A catastrophic error occurred while accessing or processing the\r
-* work queue that prevents reporting of completions.\r
-*\r
-* IB_AE_QP_COMM\r
-* The first packet has arrived for the receive work queue where the\r
-* QP is still in the RTR state.\r
-*\r
-* IB_AE_QP_APM\r
-* If alternate path migration is supported, this event indicates that\r
-* the QP connection has migrated to the alternate path.\r
-*\r
-* IB_AE_LOCAL_FATAL\r
-* A catastrophic HCA error occurred which cannot be attributed to any\r
-* resource; behavior is indeterminate.\r
-*\r
-* IB_AE_PKEY_TRAP\r
-* A PKEY violation was detected. This event is optional.\r
-*\r
-* IB_AE_QKEY_TRAP\r
-* A QKEY violation was detected. This event is optional.\r
-*\r
-* IB_AE_MKEY_TRAP\r
-* An MKEY violation was detected. This event is optional.\r
-*\r
-* IB_AE_PORT_TRAP\r
-* A port capability change was detected. This event is optional.\r
-*\r
-* IB_AE_SYSIMG_GUID_TRAP\r
-* If the system image GUID is supported, this event indicates that the\r
-* system image GUID of this HCA has been changed. This event is\r
-* optional.\r
-*\r
-* IB_AE_BUF_OVERRUN\r
-* The number of consecutive flow control update periods with at least\r
-* one overrun error in each period has exceeded the threshold specified\r
-* in the port info attributes. This event is optional.\r
-*\r
-* IB_AE_LINK_INTEGRITY\r
-* The detection of excessively frequent local physical errors has\r
-* exceeded the threshold specified in the port info attributes. This\r
-* event is optional.\r
-*\r
-* IB_AE_FLOW_CTRL_ERROR\r
-* An HCA watchdog timer monitoring the arrival of flow control updates\r
-* has expired without receiving an update. This event is optional.\r
-*\r
-* IB_AE_BKEY_TRAP\r
-* An BKEY violation was detected. This event is optional.\r
-*\r
-* IB_AE_QP_APM_ERROR\r
-* If alternate path migration is supported, this event indicates that\r
-* an incoming path migration request to this QP was not accepted.\r
-*\r
-* IB_AE_WQ_REQ_ERROR\r
-* An OpCode violation was detected at the responder.\r
-*\r
-* IB_AE_WQ_ACCESS_ERROR\r
-* An access violation was detected at the responder.\r
-*\r
-* IB_AE_PORT_ACTIVE\r
-* If the port active event is supported, this event is generated\r
-* when the link becomes active: IB_LINK_ACTIVE.\r
-*\r
-* IB_AE_PORT_DOWN\r
-* The link is declared unavailable: IB_LINK_INIT, IB_LINK_ARMED,\r
-* IB_LINK_DOWN.\r
-*\r
-* IB_AE_CLIENT_REREGISTER\r
-* The SM idicate to client to reregister its SA records.\r
-*\r
-* IB_AE_SRQ_LIMIT_REACHED\r
-* Reached SRQ low watermark\r
-*\r
-* IB_AE_SRQ_CATAS_ERROR\r
-* An error occurred while processing or accessing the SRQ that prevents\r
-* dequeuing a WQE from the SRQ and reporting of receive completions.\r
-*\r
-* IB_AE_SRQ_QP_LAST_WQE_REACHED\r
-* An event, issued for a QP, associated with a shared receive queue, when\r
-* a CQE is generated for the last WQE, or\r
-* the QP gets in the Error State and there are no more WQEs on the RQ.\r
-*\r
-* IB_AE_UNKNOWN\r
-* An unknown error occurred which cannot be attributed to any\r
-* resource; behavior is indeterminate.\r
-*\r
-*****/\r
-\r
-\r
-\r
-/****f* IBA Base: Types/ib_get_async_event_str\r
-* NAME\r
-* ib_get_async_event_str\r
-*\r
-* DESCRIPTION\r
-* Returns a string for the specified asynchronous event.\r
-*\r
-* SYNOPSIS\r
-*/\r
-AL_EXPORT const char* AL_API\r
-ib_get_async_event_str(\r
- IN ib_async_event_t event );\r
-/*\r
-* PARAMETERS\r
-* event\r
-* [in] event value\r
-*\r
-* RETURN VALUES\r
-* Pointer to the asynchronous event description string.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-\r
-/****s* Verbs/ib_event_rec_t\r
-* NAME\r
-* ib_event_rec_t -- Async event notification record\r
-*\r
-* DESCRIPTION\r
-* When an async event callback is made, this structure is passed to indicate\r
-* the type of event, the source of event that caused it, and the context\r
-* associated with this event.\r
-*\r
-* context -- Context of the resource that caused the event.\r
-* -- ca_context if this is a port/adapter event.\r
-* -- qp_context if the source is a QP event\r
-* -- cq_context if the source is a CQ event.\r
-* -- ee_context if the source is an EE event.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef struct _ib_event_rec\r
-{\r
- TO_LONG_PTR(void*, context);\r
- ib_async_event_t type;\r
-\r
- /* HCA vendor specific event information. */\r
- uint64_t vendor_specific;\r
- uint8_t port_number;\r
-\r
-} ib_event_rec_t;\r
-/*******/\r
-\r
-\r
-/****d* Access Layer/ib_atomic_t\r
-* NAME\r
-* ib_atomic_t\r
-*\r
-* DESCRIPTION\r
-* Indicates atomicity levels supported by an adapter.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef enum _ib_atomic_t\r
-{\r
- IB_ATOMIC_NONE,\r
- IB_ATOMIC_LOCAL,\r
- IB_ATOMIC_GLOBAL\r
-\r
-} ib_atomic_t;\r
-/*\r
-* VALUES\r
-* IB_ATOMIC_NONE\r
-* Atomic operations not supported.\r
-*\r
-* IB_ATOMIC_LOCAL\r
-* Atomic operations guaranteed between QPs of a single CA.\r
-*\r
-* IB_ATOMIC_GLOBAL\r
-* Atomic operations are guaranteed between CA and any other entity\r
-* in the system.\r
-*****/\r
-\r
-\r
-/****s* Access Layer/ib_port_cap_t\r
-* NAME\r
-* ib_port_cap_t\r
-*\r
-* DESCRIPTION\r
-* Indicates which management agents are currently available on the specified\r
-* port.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef struct _ib_port_cap\r
-{\r
- boolean_t cm;\r
- boolean_t snmp;\r
- boolean_t dev_mgmt;\r
- boolean_t vend;\r
- boolean_t sm;\r
- boolean_t sm_disable;\r
- boolean_t qkey_ctr;\r
- boolean_t pkey_ctr;\r
- boolean_t notice;\r
- boolean_t trap;\r
- boolean_t apm;\r
- boolean_t slmap;\r
- boolean_t pkey_nvram;\r
- boolean_t mkey_nvram;\r
- boolean_t sysguid;\r
- boolean_t dr_notice;\r
- boolean_t boot_mgmt;\r
- boolean_t capm_notice;\r
- boolean_t reinit;\r
- boolean_t ledinfo;\r
- boolean_t port_active;\r
- boolean_t ipd;\r
- boolean_t pkey_switch_ext_port;\r
- boolean_t bm;\r
- boolean_t link_rtl;\r
- boolean_t client_reregister; \r
-\r
-} ib_port_cap_t;\r
-/*****/\r
-\r
-\r
-/****d* Access Layer/ib_init_type_t\r
-* NAME\r
-* ib_init_type_t\r
-*\r
-* DESCRIPTION\r
-* If supported by the HCA, the type of initialization requested by\r
-* this port before SM moves it to the active or armed state. If the\r
-* SM implements reinitialization, it shall set these bits to indicate\r
-* the type of initialization performed prior to activating the port.\r
-* Otherwise, these bits shall be set to 0.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef uint8_t ib_init_type_t;\r
-#define IB_INIT_TYPE_NO_LOAD 0x01\r
-#define IB_INIT_TYPE_PRESERVE_CONTENT 0x02\r
-#define IB_INIT_TYPE_PRESERVE_PRESENCE 0x04\r
-#define IB_INIT_TYPE_DO_NOT_RESUSCITATE 0x08\r
-/*****/\r
-\r
-\r
-/****s* Access Layer/ib_port_attr_mod_t\r
-* NAME\r
-* ib_port_attr_mod_t\r
-*\r
-* DESCRIPTION\r
-* Port attributes that may be modified.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef struct _ib_port_attr_mod\r
-{\r
- ib_port_cap_t cap;\r
- uint16_t pkey_ctr;\r
- uint16_t qkey_ctr;\r
-\r
- ib_init_type_t init_type;\r
- ib_net64_t system_image_guid;\r
-\r
-} ib_port_attr_mod_t;\r
-/*\r
-* SEE ALSO\r
-* ib_port_cap_t\r
-*****/\r
-\r
-\r
-/****s* Access Layer/ib_port_attr_t\r
-* NAME\r
-* ib_port_attr_t\r
-*\r
-* DESCRIPTION\r
-* Information about a port on a given channel adapter.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef struct _ib_port_attr\r
-{\r
- ib_net64_t port_guid;\r
- uint8_t port_num;\r
- uint8_t mtu;\r
- uint64_t max_msg_size;\r
- ib_net16_t lid;\r
- uint8_t lmc;\r
-\r
- /*\r
- * LinkWidthSupported as defined in PortInfo. Required to calculate\r
- * inter-packet delay (a.k.a. static rate).\r
- */\r
- uint8_t link_width_supported;\r
-\r
- uint16_t max_vls;\r
-\r
- ib_net16_t sm_lid;\r
- uint8_t sm_sl;\r
- uint8_t link_state;\r
-\r
- ib_init_type_t init_type_reply; /* Optional */\r
-\r
- /*\r
- * subnet_timeout:\r
- * The maximum expected subnet propagation delay to reach any port on\r
- * the subnet. This value also determines the rate at which traps can\r
- * be generated from this node.\r
- *\r
- * timeout = 4.096 microseconds * 2^subnet_timeout\r
- */\r
- uint8_t subnet_timeout;\r
- uint8_t active_speed;\r
- uint8_t phys_state;\r
-\r
- ib_port_cap_t cap;\r
- uint16_t pkey_ctr;\r
- uint16_t qkey_ctr;\r
-\r
- uint16_t num_gids;\r
- uint16_t num_pkeys;\r
- /*\r
- * Pointers at the end of the structure to allow doing a simple\r
- * memory comparison of contents up to the first pointer.\r
- */\r
- TO_LONG_PTR(ib_gid_t*, p_gid_table);\r
- TO_LONG_PTR(ib_net16_t*,p_pkey_table);\r
-\r
-} ib_port_attr_t;\r
-/*\r
-* SEE ALSO\r
-* uint8_t, ib_port_cap_t, ib_link_states_t\r
-*****/\r
-\r
-\r
-/****s* Access Layer/ib_ca_attr_t\r
-* NAME\r
-* ib_ca_attr_t\r
-*\r
-* DESCRIPTION\r
-* Information about a channel adapter.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef struct _ib_ca_attr\r
-{\r
- ib_net64_t ca_guid;\r
-\r
- uint32_t vend_id;\r
- uint16_t dev_id;\r
- uint16_t revision;\r
- uint64_t fw_ver;\r
-\r
- /*\r
- * Total size of the ca attributes in bytes\r
- */\r
- uint32_t size;\r
- uint32_t max_qps;\r
- uint32_t max_wrs;\r
-\r
- uint32_t max_sges;\r
- uint32_t max_rd_sges;\r
-\r
- uint32_t max_cqs;\r
- uint32_t max_cqes;\r
-\r
- uint32_t max_pds;\r
-\r
- uint32_t init_regions;\r
- uint64_t init_region_size;\r
-\r
- uint32_t init_windows;\r
- uint64_t max_addr_handles;\r
-\r
- uint32_t max_partitions;\r
-\r
- ib_atomic_t atomicity;\r
-\r
- uint8_t max_qp_resp_res;\r
- uint8_t max_resp_res;\r
-\r
- uint8_t max_qp_init_depth;\r
-\r
- uint32_t max_ipv6_qps;\r
- uint32_t max_ether_qps;\r
-\r
- uint32_t max_mcast_grps;\r
- uint32_t max_mcast_qps;\r
- uint32_t max_qps_per_mcast_grp;\r
- uint32_t max_fmr;\r
- uint32_t max_map_per_fmr;\r
- uint32_t max_srq;\r
- uint32_t max_srq_wrs;\r
- uint32_t max_srq_sges;\r
-\r
- /*\r
- * local_ack_delay:\r
- * Specifies the maximum time interval between the local CA receiving\r
- * a message and the transmission of the associated ACK or NAK.\r
- *\r
- * timeout = 4.096 microseconds * 2^local_ack_delay\r
- */\r
- uint8_t local_ack_delay;\r
-\r
- boolean_t bad_pkey_ctr_support;\r
- boolean_t bad_qkey_ctr_support;\r
- boolean_t raw_mcast_support;\r
- boolean_t apm_support;\r
- boolean_t av_port_check;\r
- boolean_t change_primary_port;\r
- boolean_t modify_wr_depth;\r
- boolean_t modify_srq_depth;\r
- boolean_t current_qp_state_support;\r
- boolean_t shutdown_port_capability;\r
- boolean_t init_type_support;\r
- boolean_t port_active_event_support;\r
- boolean_t system_image_guid_support;\r
- boolean_t hw_agents;\r
- boolean_t ipoib_csum;\r
- \r
- ib_net64_t system_image_guid;\r
-\r
- uint32_t num_page_sizes;\r
- uint8_t num_ports;\r
-\r
- TO_LONG_PTR(uint32_t*, p_page_size);\r
- TO_LONG_PTR(ib_port_attr_t*, p_port_attr);\r
-\r
-} ib_ca_attr_t;\r
-/*\r
-* FIELDS\r
-* ca_guid\r
-* GUID for this adapter.\r
-*\r
-* vend_id\r
-* IEEE vendor ID for this adapter\r
-*\r
-* dev_id\r
-* Device ID of this adapter. (typically from PCI device ID)\r
-*\r
-* revision\r
-* Revision ID of this adapter\r
-*\r
-* fw_ver\r
-* Device Firmware version.\r
-*\r
-* size\r
-* Total size in bytes for the HCA attributes. This size includes total\r
-* size required for all the variable members of the structure. If a\r
-* vendor requires to pass vendor specific fields beyond this structure,\r
-* the HCA vendor can choose to report a larger size. If a vendor is\r
-* reporting extended vendor specific features, they should also provide\r
-* appropriate access functions to aid with the required interpretation.\r
-*\r
-* max_qps\r
-* Maximum number of QP's supported by this HCA.\r
-*\r
-* max_wrs\r
-* Maximum number of work requests supported by this HCA.\r
-*\r
-* max_sges\r
-* Maximum number of scatter gather elements supported per work request.\r
-*\r
-* max_rd_sges\r
-* Maximum number of scatter gather elements supported for READ work\r
-* requests for a Reliable Datagram QP. This value must be zero if RD\r
-* service is not supported.\r
-*\r
-* max_cqs\r
-* Maximum number of Completion Queues supported.\r
-*\r
-* max_cqes\r
-* Maximum number of CQ elements supported per CQ.\r
-*\r
-* max_pds\r
-* Maximum number of protection domains supported.\r
-*\r
-* init_regions\r
-* Initial number of memory regions supported. These are only informative\r
-* values. HCA vendors can extended and grow these limits on demand.\r
-*\r
-* init_region_size\r
-* Initial limit on the size of the registered memory region.\r
-*\r
-* init_windows\r
-* Initial number of window entries supported.\r
-*\r
-* max_addr_handles\r
-* Maximum number of address handles supported.\r
-*\r
-* max_partitions\r
-* Maximum number of partitions supported.\r
-*\r
-* atomicity\r
-* Indicates level of atomic operations supported by this HCA.\r
-*\r
-* max_qp_resp_res\r
-* Maximum limit on number of responder resources for incomming RDMA\r
-* operations on QPs.\r
-*\r
-* max_fmr\r
-* Maximum number of Fast Memory Regions supported.\r
-*\r
-* max_map_per_fmr\r
-* Maximum number of mappings, supported by a Fast Memory Region.\r
-*\r
-* max_srq\r
-* Maximum number of Shared Receive Queues supported.\r
-*\r
-* max_srq_wrs\r
-* Maximum number of work requests supported by this SRQ.\r
-*\r
-* max_srq_sges\r
-* Maximum number of scatter gather elements supported per work request on SRQ.\r
-*\r
-* max_resp_res\r
-* Maximum number of responder resources per HCA, with this HCA used as\r
-* the target.\r
-*\r
-* max_qp_init_depth\r
-* Maximimum initiator depth per QP for initiating RDMA reads and\r
-* atomic operations.\r
-*\r
-* max_ipv6_qps\r
-* max_ether_qps\r
-* Maximum number of IPV6 and raw ether QP's supported by this HCA.\r
-*\r
-* max_mcast_grps\r
-* Maximum number of multicast groups supported.\r
-*\r
-* max_mcast_qps\r
-* Maximum number of QP's that can support multicast operations.\r
-*\r
-* max_qps_per_mcast_grp\r
-* Maximum number of multicast QP's per multicast group.\r
-*\r
-* local_ack_delay\r
-* Specifies the maximum time interval between the local CA receiving\r
-* a message and the transmission of the associated ACK or NAK.\r
-* timeout = 4.096 microseconds * 2^local_ack_delay\r
-*\r
-* bad_pkey_ctr_support\r
-* bad_qkey_ctr_support\r
-* Indicates support for the bad pkey and qkey counters.\r
-*\r
-* raw_mcast_support\r
-* Indicates support for raw packet multicast.\r
-*\r
-* apm_support\r
-* Indicates support for Automatic Path Migration.\r
-*\r
-* av_port_check\r
-* Indicates ability to check port number in address handles.\r
-*\r
-* change_primary_port\r
-* Indicates ability to change primary port for a QP during a\r
-* SQD->RTS transition.\r
-*\r
-* modify_wr_depth\r
-* Indicates ability to modify QP depth during a modify QP operation.\r
-* Check the verb specification for permitted states.\r
-*\r
-* modify_srq_depth\r
-* Indicates ability to modify SRQ depth during a modify SRQ operation.\r
-* Check the verb specification for permitted states.\r
-*\r
-* current_qp_state_support\r
-* Indicates ability of the HCA to support the current QP state modifier\r
-* during a modify QP operation.\r
-*\r
-* shutdown_port_capability\r
-* Shutdown port capability support indicator.\r
-*\r
-* init_type_support\r
-* Indicates init_type_reply and ability to set init_type is supported.\r
-*\r
-* port_active_event_support\r
-* Port active event support indicator.\r
-*\r
-* system_image_guid_support\r
-* System image GUID support indicator.\r
-*\r
-* hw_agents\r
-* Indicates SMA is implemented in HW.\r
-*\r
-* system_image_guid\r
-* Optional system image GUID. This field is valid only if the\r
-* system_image_guid_support flag is set.\r
-*\r
-* num_page_sizes\r
-* Indicates support for different page sizes supported by the HCA.\r
-* The variable size array can be obtained from p_page_size.\r
-*\r
-* num_ports\r
-* Number of physical ports supported on this HCA.\r
-*\r
-* p_page_size\r
-* Array holding different page size supported.\r
-*\r
-* p_port_attr\r
-* Array holding port attributes.\r
-*\r
-* NOTES\r
-* This structure contains the attributes of a channel adapter. Users must\r
-* call ib_copy_ca_attr to copy the contents of this structure to a new\r
-* memory region.\r
-*\r
-* SEE ALSO\r
-* ib_port_attr_t, ib_atomic_t, ib_copy_ca_attr\r
-*****/\r
-\r
-/****f* Access layer/ib_copy_ca_attr\r
-* NAME\r
-* ib_copy_ca_attr\r
-*\r
-* DESCRIPTION\r
-* Copies CA attributes.\r
-*\r
-* SYNOPSIS\r
-*/\r
-AL_EXPORT ib_ca_attr_t* AL_API\r
-ib_copy_ca_attr(\r
- IN ib_ca_attr_t* const p_dest,\r
- IN const ib_ca_attr_t* const p_src );\r
-/*\r
-* PARAMETERS\r
-* p_dest\r
-* Pointer to the buffer that is the destination of the copy.\r
-*\r
-* p_src\r
-* Pointer to the CA attributes to copy.\r
-*\r
-* RETURN VALUE\r
-* Pointer to the copied CA attributes.\r
-*\r
-* NOTES\r
-* The buffer pointed to by the p_dest parameter must be at least the size\r
-* specified in the size field of the buffer pointed to by p_src.\r
-*\r
-* SEE ALSO\r
-* ib_ca_attr_t, ib_dup_ca_attr, ib_free_ca_attr\r
-*****/\r
-\r
-\r
-/****d* Access Layer/ib_pd_type_t\r
-* NAME\r
-* ib_pd_type_t\r
-*\r
-* DESCRIPTION\r
-* Indicates the type of protection domain being allocated.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef enum _ib_pd_type\r
-{\r
- IB_PDT_NORMAL,\r
- IB_PDT_ALIAS,\r
- IB_PDT_SQP,\r
- IB_PDT_UD\r
-\r
-} ib_pd_type_t;\r
-/*\r
-* VALUES\r
-* IB_PDT_NORMAL\r
-* Protection domain for all non-aliased QPs.\r
-*\r
-* IB_PDT_ALIAS\r
-* Protection domain for IB_QPT_QP0_ALIAS and IB_QPT_QP1_ALIAS QPs.\r
-*\r
-* IB_PDT_SQP\r
-* Protection domain for special queue pair usage.\r
-*\r
-* IB_PDT_UD\r
-* Protection domain for UD queue pair usage.\r
-*****/\r
-\r
-\r
-/****s* Access Layer/ib_av_attr_t\r
-* NAME\r
-* ib_av_attr_t\r
-*\r
-* DESCRIPTION\r
-* IBA address vector.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef struct _ib_av_attr\r
-{\r
- uint8_t port_num;\r
-\r
- uint8_t sl;\r
- ib_net16_t dlid;\r
-\r
- boolean_t grh_valid;\r
- ib_grh_t grh;\r
- uint8_t static_rate;\r
- uint8_t path_bits;\r
-\r
- struct _av_conn\r
- {\r
- uint8_t path_mtu;\r
- uint8_t local_ack_timeout;\r
- uint8_t seq_err_retry_cnt;\r
- uint8_t rnr_retry_cnt;\r
-\r
- } conn;\r
-\r
-} ib_av_attr_t;\r
-/*\r
-* SEE ALSO\r
-* ib_gid_t\r
-*****/\r
-\r
-\r
-/****d* Access Layer/ib_qp_type_t\r
-* NAME\r
-* ib_qp_type_t\r
-*\r
-* DESCRIPTION\r
-* Indicates the type of queue pair being created.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef enum _ib_qp_type\r
-{\r
- IB_QPT_RELIABLE_CONN = 0, /* Matches CM REQ transport type */\r
- IB_QPT_UNRELIABLE_CONN = 1, /* Matches CM REQ transport type */\r
- IB_QPT_RELIABLE_DGRM = 2, /* Matches CM REQ transport type */\r
- IB_QPT_UNRELIABLE_DGRM,\r
- IB_QPT_QP0,\r
- IB_QPT_QP1,\r
- IB_QPT_RAW_IPV6,\r
- IB_QPT_RAW_ETHER,\r
- IB_QPT_MAD, /* InfiniBand Access Layer */\r
- IB_QPT_QP0_ALIAS, /* InfiniBand Access Layer */\r
- IB_QPT_QP1_ALIAS, /* InfiniBand Access Layer */\r
- IB_QPT_UNKNOWN\r
-} ib_qp_type_t;\r
-/*\r
-* VALUES\r
-* IB_QPT_RELIABLE_CONN\r
-* Reliable, connected queue pair.\r
-*\r
-* IB_QPT_UNRELIABLE_CONN\r
-* Unreliable, connected queue pair.\r
-*\r
-* IB_QPT_RELIABLE_DGRM\r
-* Reliable, datagram queue pair.\r
-*\r
-* IB_QPT_UNRELIABLE_DGRM\r
-* Unreliable, datagram queue pair.\r
-*\r
-* IB_QPT_QP0\r
-* Queue pair 0.\r
-*\r
-* IB_QPT_QP1\r
-* Queue pair 1.\r
-*\r
-* IB_QPT_RAW_DGRM\r
-* Raw datagram queue pair.\r
-*\r
-* IB_QPT_RAW_IPV6\r
-* Raw IP version 6 queue pair.\r
-*\r
-* IB_QPT_RAW_ETHER\r
-* Raw Ethernet queue pair.\r
-*\r
-* IB_QPT_MAD\r
-* Unreliable, datagram queue pair that will send and receive management\r
-* datagrams with assistance from the access layer.\r
-*\r
-* IB_QPT_QP0_ALIAS\r
-* Alias to queue pair 0. Aliased QPs can only be created on an aliased\r
-* protection domain.\r
-*\r
-* IB_QPT_QP1_ALIAS\r
-* Alias to queue pair 1. Aliased QPs can only be created on an aliased\r
-* protection domain.\r
-*****/\r
-\r
-\r
-/****f* IBA Base: Types/ib_get_qp_type_str\r
-* NAME\r
-* ib_get_qp_type_str\r
-*\r
-* DESCRIPTION\r
-* Returns a string for the specified QP type\r
-*\r
-* SYNOPSIS\r
-*/\r
-AL_EXPORT const char* AL_API\r
-ib_get_qp_type_str(\r
- IN uint8_t qp_type );\r
-\r
-/*\r
-* PARAMETERS\r
-* qp_type\r
-* [in] Encoded QP type as defined in the\r
-QP attribute.\r
-\r
-* RETURN VALUES\r
-* Pointer to the QP type string.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-* ib_qp_type_t\r
-*********/\r
-\r
-/****d* Access Layer/ib_access_t\r
-* NAME\r
-* ib_access_t\r
-*\r
-* DESCRIPTION\r
-* Indicates the type of access is permitted on resources such as QPs,\r
-* memory regions and memory windows.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef uint32_t ib_access_t;\r
-#define IB_AC_RDMA_READ 0x00000001\r
-#define IB_AC_RDMA_WRITE 0x00000002\r
-#define IB_AC_ATOMIC 0x00000004\r
-#define IB_AC_LOCAL_WRITE 0x00000008\r
-#define IB_AC_MW_BIND 0x00000010\r
-/*\r
-* NOTES\r
-* Users may combine access rights using a bit-wise or operation to specify\r
-* additional access. For example: IB_AC_RDMA_READ | IB_AC_RDMA_WRITE grants\r
-* RDMA read and write access.\r
-*****/\r
-\r
-\r
-/****d* Access Layer/ib_qp_state_t\r
-* NAME\r
-* ib_qp_state_t\r
-*\r
-* DESCRIPTION\r
-* Indicates or sets the state of a queue pair. The current state of a queue\r
-* pair is returned through the ib_qp_query call and set via the\r
-* ib_qp_modify call.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef uint32_t ib_qp_state_t;\r
-#define IB_QPS_RESET 0x00000001\r
-#define IB_QPS_INIT 0x00000002\r
-#define IB_QPS_RTR 0x00000004\r
-#define IB_QPS_RTS 0x00000008\r
-#define IB_QPS_SQD 0x00000010\r
-#define IB_QPS_SQD_DRAINING 0x00000030\r
-#define IB_QPS_SQD_DRAINED 0x00000050\r
-#define IB_QPS_SQERR 0x00000080\r
-#define IB_QPS_ERROR 0x00000100\r
-#define IB_QPS_TIME_WAIT 0xDEAD0000 /* InfiniBand Access Layer */\r
-/*****/\r
-\r
-\r
-/****d* Access Layer/ib_apm_state_t\r
-* NAME\r
-* ib_apm_state_t\r
-*\r
-* DESCRIPTION\r
-* The current automatic path migration state of a queue pair\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef enum _ib_apm_state\r
-{\r
- IB_APM_MIGRATED = 1,\r
- IB_APM_REARM,\r
- IB_APM_ARMED\r
-\r
-} ib_apm_state_t;\r
-/*****/\r
-\r
-/****d* Access Layer/ib_srq_attr_mask_t\r
-* NAME\r
-* ib_srq_attr_mask_t\r
-*\r
-* DESCRIPTION\r
-* Indicates valid fields in ib_srq_attr_t structure\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef enum _ib_srq_attr_mask {\r
- IB_SRQ_MAX_WR = 1 << 0,\r
- IB_SRQ_LIMIT = 1 << 1,\r
-} ib_srq_attr_mask_t;\r
-/*****/\r
-\r
-\r
-/****s* Access Layer/ib_srq_attr_t\r
-* NAME\r
-* ib_srq_attr_t\r
-*\r
-* DESCRIPTION\r
-* Attributes used to initialize a shared queue pair at creation time.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef struct _ib_srq_attr {\r
- uint32_t max_wr;\r
- uint32_t max_sge;\r
- uint32_t srq_limit;\r
-} ib_srq_attr_t;\r
-/*\r
-* FIELDS\r
-* max_wr\r
-* Specifies the max number of work request on SRQ.\r
-*\r
-* max_sge\r
-* Specifies the max number of scatter/gather elements in one work request.\r
-*\r
-* srq_limit\r
-* Specifies the low water mark for SRQ.\r
-*\r
-* SEE ALSO\r
-* ib_qp_type_t, ib_srq_attr_mask_t\r
-*****/\r
-\r
-\r
-\r
-/****s* Access Layer/ib_qp_create_t\r
-* NAME\r
-* ib_qp_create_t\r
-*\r
-* DESCRIPTION\r
-* Attributes used to initialize a queue pair at creation time.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef struct _ib_qp_create\r
-{\r
- ib_qp_type_t qp_type;\r
-\r
- uint32_t sq_max_inline;\r
- uint32_t sq_depth;\r
- uint32_t rq_depth;\r
- uint32_t sq_sge;\r
- uint32_t rq_sge;\r
-\r
- TO_LONG_PTR(ib_cq_handle_t, h_sq_cq);\r
- TO_LONG_PTR(ib_cq_handle_t, h_rq_cq);\r
- TO_LONG_PTR(ib_srq_handle_t, h_srq);\r
-\r
- boolean_t sq_signaled;\r
-\r
-} ib_qp_create_t;\r
-/*\r
-* FIELDS\r
-* type\r
-* Specifies the type of queue pair to create.\r
-*\r
-* sq_max_inline\r
-* Maximum payload that can be inlined directly in a WQE, eliminating\r
-* protection checks and additional DMA operations.\r
-*\r
-* sq_depth\r
-* Indicates the requested maximum number of work requests that may be\r
-* outstanding on the queue pair's send queue. This value must be less\r
-* than or equal to the maximum reported by the channel adapter associated\r
-* with the queue pair.\r
-*\r
-* rq_depth\r
-* Indicates the requested maximum number of work requests that may be\r
-* outstanding on the queue pair's receive queue. This value must be less\r
-* than or equal to the maximum reported by the channel adapter associated\r
-* with the queue pair.\r
-*\r
-* sq_sge\r
-* Indicates the maximum number scatter-gather elements that may be\r
-* given in a send work request. This value must be less\r
-* than or equal to the maximum reported by the channel adapter associated\r
-* with the queue pair.\r
-*\r
-* rq_sge\r
-* Indicates the maximum number scatter-gather elements that may be\r
-* given in a receive work request. This value must be less\r
-* than or equal to the maximum reported by the channel adapter associated\r
-* with the queue pair.\r
-*\r
-* h_sq_cq\r
-* A handle to the completion queue that will be used to report send work\r
-* request completions. This handle must be NULL if the type is\r
-* IB_QPT_MAD, IB_QPT_QP0_ALIAS, or IB_QPT_QP1_ALIAS.\r
-*\r
-* h_rq_cq\r
-* A handle to the completion queue that will be used to report receive\r
-* work request completions. This handle must be NULL if the type is\r
-* IB_QPT_MAD, IB_QPT_QP0_ALIAS, or IB_QPT_QP1_ALIAS.\r
-*\r
-* h_srq\r
-* A handle to an SRQ to get receive completions via. Must be coded NULL \r
-* when QP is not associated with SRQ\r
-*\r
-* sq_signaled\r
-* A flag that is used to indicate whether the queue pair will signal\r
-* an event upon completion of a send work request. If set to\r
-* TRUE, send work requests will always generate a completion\r
-* event. If set to FALSE, a completion event will only be\r
-* generated if the send_opt field of the send work request has the\r
-* IB_SEND_OPT_SIGNALED flag set.\r
-*\r
-* SEE ALSO\r
-* ib_qp_type_t, ib_qp_attr_t\r
-*****/\r
-\r
-\r
-/****s* Access Layer/ib_qp_attr_t\r
-* NAME\r
-* ib_qp_attr_t\r
-*\r
-* DESCRIPTION\r
-* Queue pair attributes returned through ib_query_qp.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef struct _ib_qp_attr\r
-{\r
- TO_LONG_PTR(ib_pd_handle_t, h_pd);\r
- ib_qp_type_t qp_type;\r
- ib_access_t access_ctrl;\r
- uint16_t pkey_index;\r
-\r
- uint32_t sq_max_inline;\r
- uint32_t sq_depth;\r
- uint32_t rq_depth;\r
- uint32_t sq_sge;\r
- uint32_t rq_sge;\r
- uint8_t init_depth;\r
- uint8_t resp_res;\r
-\r
- TO_LONG_PTR(ib_cq_handle_t, h_sq_cq);\r
- TO_LONG_PTR(ib_cq_handle_t, h_rq_cq);\r
- TO_LONG_PTR(ib_srq_handle_t,h_srq);\r
-\r
- boolean_t sq_signaled;\r
-\r
- ib_qp_state_t state;\r
- ib_net32_t num;\r
- ib_net32_t dest_num;\r
- ib_net32_t qkey;\r
-\r
- ib_net32_t sq_psn;\r
- ib_net32_t rq_psn;\r
-\r
- uint8_t primary_port;\r
- uint8_t alternate_port;\r
- ib_av_attr_t primary_av;\r
- ib_av_attr_t alternate_av;\r
- ib_apm_state_t apm_state;\r
-\r
-} ib_qp_attr_t;\r
-/*\r
-* FIELDS\r
-* h_pd\r
-* This is a handle to a protection domain associated with the QP.\r
-*\r
-* sq_max_inline\r
-* Maximum payload that can be inlined directly in a WQE, eliminating\r
-* protection checks and additional DMA operations.\r
-*\r
-* NOTES\r
-* Other fields are defined by the Infiniband specification.\r
-*\r
-* SEE ALSO\r
-* ib_qp_type_t, ib_access_t, ib_qp_state_t, ib_av_attr_t, ib_apm_state_t\r
-*****/\r
-\r
-\r
-/****d* Access Layer/ib_qp_opts_t\r
-* NAME\r
-* ib_qp_opts_t\r
-*\r
-* DESCRIPTION\r
-* Optional fields supplied in the modify QP operation.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef uint32_t ib_qp_opts_t;\r
-#define IB_MOD_QP_ALTERNATE_AV 0x00000001\r
-#define IB_MOD_QP_PKEY 0x00000002\r
-#define IB_MOD_QP_APM_STATE 0x00000004\r
-#define IB_MOD_QP_PRIMARY_AV 0x00000008\r
-#define IB_MOD_QP_RNR_NAK_TIMEOUT 0x00000010\r
-#define IB_MOD_QP_RESP_RES 0x00000020\r
-#define IB_MOD_QP_INIT_DEPTH 0x00000040\r
-#define IB_MOD_QP_PRIMARY_PORT 0x00000080\r
-#define IB_MOD_QP_ACCESS_CTRL 0x00000100\r
-#define IB_MOD_QP_QKEY 0x00000200\r
-#define IB_MOD_QP_SQ_DEPTH 0x00000400\r
-#define IB_MOD_QP_RQ_DEPTH 0x00000800\r
-#define IB_MOD_QP_CURRENT_STATE 0x00001000\r
-#define IB_MOD_QP_RETRY_CNT 0x00002000\r
-#define IB_MOD_QP_LOCAL_ACK_TIMEOUT 0x00004000\r
-#define IB_MOD_QP_RNR_RETRY_CNT 0x00008000\r
-\r
-/*\r
-* SEE ALSO\r
-* ib_qp_mod_t\r
-*****/\r
-\r
-\r
-/****s* Access Layer/ib_qp_mod_t\r
-* NAME\r
-* ib_qp_mod_t\r
-*\r
-* DESCRIPTION\r
-* Information needed to change the state of a queue pair through the\r
-* ib_modify_qp call.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef struct _ib_qp_mod\r
-{\r
- ib_qp_state_t req_state;\r
-\r
- union _qp_state\r
- {\r
- struct _qp_init\r
- {\r
- uint8_t primary_port;\r
- ib_net32_t qkey;\r
- uint16_t pkey_index;\r
- ib_access_t access_ctrl;\r
-\r
- } init;\r
-\r
- struct _qp_rtr\r
- {\r
- ib_net32_t rq_psn;\r
- ib_net32_t dest_qp;\r
- ib_av_attr_t primary_av;\r
- uint8_t resp_res;\r
- uint8_t rnr_nak_timeout;\r
-\r
- ib_qp_opts_t opts;\r
- ib_av_attr_t alternate_av;\r
- ib_net32_t qkey;\r
- uint16_t pkey_index;\r
- ib_access_t access_ctrl;\r
- uint32_t sq_depth;\r
- uint32_t rq_depth;\r
-\r
- } rtr;\r
-\r
- struct _qp_rts\r
- {\r
- ib_net32_t sq_psn;\r
- uint8_t retry_cnt;\r
- uint8_t rnr_retry_cnt;\r
- uint8_t local_ack_timeout;\r
- uint8_t init_depth;\r
-\r
- ib_qp_opts_t opts;\r
- uint8_t rnr_nak_timeout;\r
- ib_qp_state_t current_state;\r
- ib_net32_t qkey;\r
- ib_access_t access_ctrl;\r
- uint8_t resp_res;\r
-\r
- ib_av_attr_t primary_av;\r
- ib_av_attr_t alternate_av;\r
-\r
- uint32_t sq_depth;\r
- uint32_t rq_depth;\r
-\r
- ib_apm_state_t apm_state;\r
- uint8_t primary_port;\r
- uint16_t pkey_index;\r
-\r
- } rts;\r
-\r
- struct _qp_sqd\r
- {\r
- boolean_t sqd_event;\r
-\r
- } sqd;\r
-\r
- } state;\r
-\r
-} ib_qp_mod_t;\r
-/*\r
-* SEE ALSO\r
-* ib_qp_state_t, ib_access_t, ib_av_attr_t, ib_apm_state_t\r
-*****/\r
-\r
-\r
-/****d* Access Layer/ib_wr_type_t\r
-* NAME\r
-* ib_wr_type_t\r
-*\r
-* DESCRIPTION\r
-* Identifies the type of work request posted to a queue pair.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef enum _ib_wr_type_t\r
-{\r
- WR_SEND,\r
- WR_RDMA_WRITE,\r
- WR_RDMA_READ,\r
- WR_COMPARE_SWAP,\r
- WR_FETCH_ADD,\r
- WR_LSO,\r
- WR_UNKNOWN\r
-\r
-} ib_wr_type_t;\r
-/*****/\r
-\r
-\r
-/****f* IBA Base: Types/ib_get_wr_type_str\r
-* NAME\r
-* ib_get_wr_type_str\r
-*\r
-* DESCRIPTION\r
-* Returns a string for the specified work request type\r
-*\r
-* SYNOPSIS\r
-*/\r
-AL_EXPORT const char* AL_API\r
-ib_get_wr_type_str(\r
- IN uint8_t wr_type );\r
-\r
-/*\r
-* PARAMETERS\r
-* wr_type\r
-* [in] Encoded work request type as defined in the\r
-work request attribute.\r
-\r
-* RETURN VALUES\r
-* Pointer to the work request type string.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-* ib_wr_type_t\r
-*********/\r
-\r
-\r
-/****s* Access Layer/ib_local_ds_t\r
-* NAME\r
-* ib_local_ds_t\r
-*\r
-* DESCRIPTION\r
-* Local data segment information referenced by send and receive work\r
-* requests. This is used to specify local data buffers used as part of a\r
-* work request.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef struct _ib_local_ds\r
-{\r
- uint64_t vaddr;\r
- uint32_t length;\r
- uint32_t lkey;\r
-\r
-} ib_local_ds_t;\r
-/*****/\r
-\r
-\r
-/****d* Access Layer/ib_send_opt_t\r
-* NAME\r
-* ib_send_opt_t\r
-*\r
-* DESCRIPTION\r
-* Optional flags used when posting send work requests. These flags\r
-* indicate specific processing for the send operation.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef uint32_t ib_send_opt_t;\r
-#define IB_SEND_OPT_IMMEDIATE 0x00000001\r
-#define IB_SEND_OPT_FENCE 0x00000002\r
-#define IB_SEND_OPT_SIGNALED 0x00000004\r
-#define IB_SEND_OPT_SOLICITED 0x00000008\r
-#define IB_SEND_OPT_INLINE 0x00000010\r
-#define IB_SEND_OPT_LOCAL 0x00000020\r
-#define IB_SEND_OPT_TX_IP_CSUM 0x00000040\r
-#define IB_SEND_OPT_TX_TCP_UDP_CSUM 0x00000080\r
-\r
-#define IB_SEND_OPT_VEND_MASK 0xFFFF0000\r
-/*\r
-* VALUES\r
-* The following flags determine the behavior of a work request when\r
-* posted to the send side.\r
-*\r
-* IB_SEND_OPT_IMMEDIATE\r
-* Send immediate data with the given request.\r
-*\r
-* IB_SEND_OPT_FENCE\r
-* The operation is fenced. Complete all pending send operations\r
-* before processing this request.\r
-*\r
-* IB_SEND_OPT_SIGNALED\r
-* If the queue pair is configured for signaled completion, then\r
-* generate a completion queue entry when this request completes.\r
-*\r
-* IB_SEND_OPT_SOLICITED\r
-* Set the solicited bit on the last packet of this request.\r
-*\r
-* IB_SEND_OPT_INLINE\r
-* Indicates that the requested send data should be copied into a VPD\r
-* owned data buffer. This flag permits the user to issue send operations\r
-* without first needing to register the buffer(s) associated with the\r
-* send operation. Verb providers that support this operation may place\r
-* vendor specific restrictions on the size of send operation that may\r
-* be performed as inline.\r
-*\r
-*\r
-* IB_SEND_OPT_LOCAL\r
-* Indicates that a sent MAD request should be given to the local VPD for\r
-* processing. MADs sent using this option are not placed on the wire.\r
-* This send option is only valid for MAD send operations.\r
-*\r
-*\r
-* IB_SEND_OPT_VEND_MASK\r
-* This mask indicates bits reserved in the send options that may be used\r
-* by the verbs provider to indicate vendor specific options. Bits set\r
-* in this area of the send options are ignored by the Access Layer, but\r
-* may have specific meaning to the underlying VPD.\r
-*\r
-*****/\r
-\r
-\r
-/****s* Access Layer/ib_send_wr_t\r
-* NAME\r
-* ib_send_wr_t\r
-*\r
-* DESCRIPTION\r
-* Information used to submit a work request to the send queue of a queue\r
-* pair.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef struct _ib_send_wr\r
-{\r
- uint64_t wr_id;\r
- struct _ib_send_wr* p_next;\r
- ib_local_ds_t* ds_array;\r
- uint32_t num_ds;\r
- ib_wr_type_t wr_type;\r
- ib_send_opt_t send_opt;\r
- ib_net32_t immediate_data;\r
-\r
- union\r
- {\r
- union _send_dgrm\r
- {\r
- struct _send_ud\r
- {\r
- ib_av_handle_t h_av; \r
- ib_net32_t remote_qp;\r
- ib_net32_t remote_qkey;\r
- void* rsvd;\r
- uint16_t pkey_index;\r
- void* header;\r
- int hlen;\r
- int mss;\r
- } ud;\r
-\r
- struct _send_rd\r
- {\r
- ib_net32_t remote_qp;\r
- ib_net32_t remote_qkey;\r
- ib_net32_t eecn;\r
-\r
- } rd;\r
-\r
- struct _send_raw_ether\r
- {\r
- ib_net16_t dest_lid;\r
- uint8_t path_bits;\r
- uint8_t sl;\r
- uint8_t max_static_rate;\r
- ib_net16_t ether_type;\r
- \r
- } raw_ether;\r
-\r
- struct _send_raw_ipv6\r
- {\r
- ib_net16_t dest_lid;\r
- uint8_t path_bits;\r
- uint8_t sl;\r
- uint8_t max_static_rate;\r
- \r
- } raw_ipv6;\r
- \r
- } dgrm;\r
-\r
- struct _send_remote_ops\r
- {\r
- uint64_t vaddr;\r
- net32_t rkey;\r
-\r
- ib_net64_t atomic1;\r
- ib_net64_t atomic2;\r
- \r
- } remote_ops;\r
- };\r
-} ib_send_wr_t;\r
-/*\r
-* FIELDS\r
-* p_next\r
-* A pointer used to chain work requests together. This permits multiple\r
-* work requests to be posted to a queue pair through a single function\r
-* call. This value is set to NULL to mark the end of the chain.\r
-*\r
-* wr_id\r
-* A 64-bit work request identifier that is returned to the consumer\r
-* as part of the work completion.\r
-*\r
-* wr_type\r
-* The type of work request being submitted to the send queue.\r
-*\r
-* send_opt\r
-* Optional send control parameters.\r
-*\r
-* num_ds\r
-* Number of local data segments specified by this work request.\r
-*\r
-* ds_array\r
-* A reference to an array of local data segments used by the send\r
-* operation.\r
-*\r
-* immediate_data\r
-* 32-bit field sent as part of a message send or RDMA write operation.\r
-* This field is only valid if the send_opt flag IB_SEND_OPT_IMMEDIATE\r
-* has been set.\r
-*\r
-* dgrm.ud.remote_qp\r
-* Identifies the destination queue pair of an unreliable datagram send\r
-* operation.\r
-*\r
-* dgrm.ud.remote_qkey\r
-* The qkey for the destination queue pair.\r
-*\r
-* dgrm.ud.h_av\r
-* An address vector that specifies the path information used to route\r
-* the outbound datagram to the destination queue pair.\r
-*\r
-* dgrm.ud.pkey_index\r
-* The pkey index for this send work request. This is valid only\r
-* for IB_QPT_QP1 and IB_QPT_QP1_ALIAS QP types. The work request\r
-* is posted to using this pkey index build the GMP's BTH instead\r
-* of the QP's pkey.\r
-*\r
-* dgrm.ud.rsvd\r
-* Reserved for use by the Access Layer.\r
-*\r
-* dgrm.raw_ether.dest_lid\r
-* The destination LID that will receive this raw ether send.\r
-*\r
-* dgrm.raw_ether.path_bits\r
-* path bits...\r
-*\r
-* dgrm.raw_ether.sl\r
-* service level...\r
-*\r
-* dgrm.raw_ether.max_static_rate\r
-* static rate...\r
-*\r
-* dgrm.raw_ether.ether_type\r
-* ether type...\r
-*\r
-* dgrm.raw_ipv6.dest_lid\r
-* The destination LID that will receive this raw ether send.\r
-*\r
-* dgrm.raw_ipv6.path_bits\r
-* path bits...\r
-*\r
-* dgrm.raw_ipv6.sl\r
-* service level...\r
-*\r
-* dgrm.raw_ipv6.max_static_rate\r
-* static rate...\r
-*\r
-* remote_ops.vaddr\r
-* The registered virtual memory address of the remote memory to access\r
-* with an RDMA or atomic operation.\r
-*\r
-* remote_ops.rkey\r
-* The rkey associated with the specified remote vaddr. This data must\r
-* be presented exactly as obtained from the remote node. No swapping\r
-* of data must be performed.\r
-*\r
-* atomic1\r
-* The first operand for an atomic operation.\r
-*\r
-* atomic2\r
-* The second operand for an atomic operation.\r
-*\r
-* NOTES\r
-* The format of data sent over the fabric is user-defined and is considered\r
-* opaque to the access layer. The sole exception to this are MADs posted\r
-* to a MAD QP service. MADs are expected to match the format defined by\r
-* the Infiniband specification and must be in network-byte order when posted\r
-* to the MAD QP service.\r
-*\r
-* SEE ALSO\r
-* ib_wr_type_t, ib_local_ds_t, ib_send_opt_t\r
-*****/\r
-\r
-\r
-/****s* Access Layer/ib_recv_wr_t\r
-* NAME\r
-* ib_recv_wr_t\r
-*\r
-* DESCRIPTION\r
-* Information used to submit a work request to the receive queue of a queue\r
-* pair.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef struct _ib_recv_wr\r
-{\r
- TO_LONG_PTR(struct _ib_recv_wr*, p_next);\r
- uint64_t wr_id;\r
- uint32_t num_ds;\r
- TO_LONG_PTR(ib_local_ds_t*, ds_array);\r
-\r
-} ib_recv_wr_t;\r
-/*\r
-* FIELDS\r
-* p_next\r
-* A pointer used to chain work requests together. This permits multiple\r
-* work requests to be posted to a queue pair through a single function\r
-* call. This value is set to NULL to mark the end of the chain.\r
-*\r
-* wr_id\r
-* A 64-bit work request identifier that is returned to the consumer\r
-* as part of the work completion.\r
-*\r
-* num_ds\r
-* Number of local data segments specified by this work request.\r
-*\r
-* ds_array\r
-* A reference to an array of local data segments used by the send\r
-* operation.\r
-*\r
-* SEE ALSO\r
-* ib_local_ds_t\r
-*****/\r
-\r
-\r
-/****s* Access Layer/ib_bind_wr_t\r
-* NAME\r
-* ib_bind_wr_t\r
-*\r
-* DESCRIPTION\r
-* Information used to submit a memory window bind work request to the send\r
-* queue of a queue pair.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef struct _ib_bind_wr\r
-{\r
- uint64_t wr_id;\r
- ib_send_opt_t send_opt;\r
-\r
- TO_LONG_PTR(ib_mr_handle_t, h_mr);\r
- ib_access_t access_ctrl;\r
- net32_t current_rkey;\r
-\r
- ib_local_ds_t local_ds;\r
-\r
-} ib_bind_wr_t;\r
-/*\r
-* FIELDS\r
-* wr_id\r
-* A 64-bit work request identifier that is returned to the consumer\r
-* as part of the work completion.\r
-*\r
-* send_opt\r
-* Optional send control parameters.\r
-*\r
-* h_mr\r
-* Handle to the memory region to which this window is being bound.\r
-*\r
-* access_ctrl\r
-* Access rights for this memory window.\r
-*\r
-* current_rkey\r
-* The current rkey assigned to this window for remote access.\r
-*\r
-* local_ds\r
-* A reference to a local data segment used by the bind operation.\r
-*\r
-* SEE ALSO\r
-* ib_send_opt_t, ib_access_t, ib_local_ds_t\r
-*****/\r
-\r
-\r
-/****d* Access Layer/ib_wc_status_t\r
-* NAME\r
-* ib_wc_status_t\r
-*\r
-* DESCRIPTION\r
-* Indicates the status of a completed work request. These VALUES are\r
-* returned to the user when retrieving completions. Note that success is\r
-* identified as IB_WCS_SUCCESS, which is always zero.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef enum _ib_wc_status_t\r
-{\r
- IB_WCS_SUCCESS,\r
- IB_WCS_LOCAL_LEN_ERR,\r
- IB_WCS_LOCAL_OP_ERR,\r
- IB_WCS_LOCAL_PROTECTION_ERR,\r
- IB_WCS_WR_FLUSHED_ERR,\r
- IB_WCS_MEM_WINDOW_BIND_ERR,\r
- IB_WCS_REM_ACCESS_ERR,\r
- IB_WCS_REM_OP_ERR,\r
- IB_WCS_RNR_RETRY_ERR,\r
- IB_WCS_TIMEOUT_RETRY_ERR,\r
- IB_WCS_REM_INVALID_REQ_ERR,\r
- IB_WCS_BAD_RESP_ERR,\r
- IB_WCS_LOCAL_ACCESS_ERR,\r
- IB_WCS_GENERAL_ERR,\r
- IB_WCS_UNMATCHED_RESPONSE, /* InfiniBand Access Layer */\r
- IB_WCS_CANCELED, /* InfiniBand Access Layer */\r
- IB_WCS_REM_ABORT_ERR,\r
- IB_WCS_UNKNOWN /* Must be last. */\r
-\r
-} ib_wc_status_t;\r
-\r
-/*\r
-* VALUES\r
-* IB_WCS_SUCCESS\r
-* Work request completed successfully.\r
-*\r
-* IB_WCS_MAD\r
-* The completed work request was associated with a managmenet datagram\r
-* that requires post processing. The MAD will be returned to the user\r
-* through a callback once all post processing has completed.\r
-*\r
-* IB_WCS_LOCAL_LEN_ERR\r
-* Generated for a work request posted to the send queue when the\r
-* total of the data segment lengths exceeds the message length of the\r
-* channel. Generated for a work request posted to the receive queue when\r
-* the total of the data segment lengths is too small for a\r
-* valid incoming message.\r
-*\r
-* IB_WCS_LOCAL_OP_ERR\r
-* An internal QP consistency error was generated while processing this\r
-* work request. This may indicate that the QP was in an incorrect state\r
-* for the requested operation.\r
-*\r
-* IB_WCS_LOCAL_PROTECTION_ERR\r
-* The data segments of the locally posted work request did not refer to\r
-* a valid memory region. The memory may not have been properly\r
-* registered for the requested operation.\r
-*\r
-* IB_WCS_WR_FLUSHED_ERR\r
-* The work request was flushed from the QP before being completed.\r
-*\r
-* IB_WCS_MEM_WINDOW_BIND_ERR\r
-* A memory window bind operation failed due to insufficient access\r
-* rights.\r
-*\r
-* IB_WCS_REM_ACCESS_ERR,\r
-* A protection error was detected at the remote node for a RDMA or atomic\r
-* operation.\r
-*\r
-* IB_WCS_REM_OP_ERR,\r
-* The operation could not be successfully completed at the remote node.\r
-* This may indicate that the remote QP was in an invalid state or\r
-* contained an invalid work request.\r
-*\r
-* IB_WCS_RNR_RETRY_ERR,\r
-* The RNR retry count was exceeded while trying to send this message.\r
-*\r
-* IB_WCS_TIMEOUT_RETRY_ERR\r
-* The local transport timeout counter expired while trying to send this\r
-* message.\r
-*\r
-* IB_WCS_REM_INVALID_REQ_ERR,\r
-* The remote node detected an invalid message on the channel. This error\r
-* is usually a result of one of the following:\r
-* - The operation was not supported on receive queue.\r
-* - There was insufficient buffers to receive a new RDMA request.\r
-* - There was insufficient buffers to receive a new atomic operation.\r
-* - An RDMA request was larger than 2^31 bytes.\r
-*\r
-* IB_WCS_BAD_RESP_ERR,\r
-* An unexpected transport layer opcode was returned\r
-* by the responder.\r
-*\r
-* IB_WCS_LOCAL_ACCESS_ERR,\r
-* A protection error occurred on a local data buffer\r
-* during the processing of a RDMA Write with Immediate Data \r
-* operation sent from the remote node.\r
-*\r
-* IB_WCS_REM_ABORT_ERR,\r
-* The operation was aborted (e.g., For UD QPs associated with an SRQ, \r
-* the responder aborted the operation).\r
-*\r
-* IB_WCS_REM_ABORT_ERR,\r
-* The operation was aborted (e.g., For UD QPs associated with an SRQ, \r
-* the responder aborted the operation).\r
-*\r
-* IB_WCS_UNMATCHED_RESPONSE\r
-* A response MAD was received for which there was no matching send. The\r
-* send operation may have been canceled by the user or may have timed\r
-* out.\r
-*\r
-* IB_WCS_CANCELED\r
-* The completed work request was canceled by the user.\r
- *\r
- * IB_WCS_GENERAL_ERR,\r
- * Any other error\r
- *\r
-*****/\r
-\r
-\r
-\r
-/****f* IBA Base: Types/ib_get_wc_status_str\r
-* NAME\r
-* ib_get_wc_status_str\r
-*\r
-* DESCRIPTION\r
-* Returns a string for the specified work completion status.\r
-*\r
-* SYNOPSIS\r
-*/\r
-AL_EXPORT const char* AL_API\r
-ib_get_wc_status_str(\r
- IN ib_wc_status_t wc_status );\r
-/*\r
-* PARAMETERS\r
-* wc_status\r
-* [in] work completion status value\r
-*\r
-* RETURN VALUES\r
-* Pointer to the work completion status description string.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-\r
-/****d* Access Layer/ib_wc_type_t\r
-* NAME\r
-* ib_wc_type_t\r
-*\r
-* DESCRIPTION\r
-* Indicates the type of work completion.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef enum _ib_wc_type_t\r
-{\r
- IB_WC_SEND,\r
- IB_WC_RDMA_WRITE,\r
- IB_WC_RDMA_READ,\r
- IB_WC_COMPARE_SWAP,\r
- IB_WC_FETCH_ADD,\r
- IB_WC_MW_BIND,\r
- IB_WC_UNKNOWN1,\r
- IB_WC_RECV = (1 << 7),\r
- IB_WC_RECV_RDMA_WRITE,\r
- IB_WR_LSO,\r
- IB_WC_UNKNOWN2\r
-\r
-} ib_wc_type_t;\r
-/*****/\r
-\r
-\r
-/****f* IBA Base: Types/ib_get_wc_type_str\r
-* NAME\r
-* ib_get_wc_type_str\r
-*\r
-* DESCRIPTION\r
-* Returns a string for the specified work completion type.\r
-*\r
-* SYNOPSIS\r
-*/\r
-AL_EXPORT const char* AL_API\r
-ib_get_wc_type_str(\r
- IN ib_wc_type_t wc_type );\r
-/*\r
-* PARAMETERS\r
-* wc_type\r
-* [in] work completion type value\r
-*\r
-* RETURN VALUES\r
-* Pointer to the work completion type description string.\r
-*\r
-* NOTES\r
-*\r
-* SEE ALSO\r
-*********/\r
-\r
-\r
-/****d* Access Layer/ib_recv_opt_t\r
-* NAME\r
-* ib_recv_opt_t\r
-*\r
-* DESCRIPTION\r
-* Indicates optional fields valid in a receive work completion.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef uint32_t ib_recv_opt_t;\r
-#define IB_RECV_OPT_IMMEDIATE 0x00000001\r
-#define IB_RECV_OPT_FORWARD 0x00000002\r
-#define IB_RECV_OPT_GRH_VALID 0x00000004\r
-#define IB_RECV_OPT_VEND_MASK 0xFFFF0000\r
-/*\r
-* VALUES\r
-* IB_RECV_OPT_IMMEDIATE\r
-* Indicates that immediate data is valid for this work completion.\r
-*\r
-* IB_RECV_OPT_FORWARD\r
-* Indicates that the received trap should be forwarded to the SM.\r
-*\r
-* IB_RECV_OPT_GRH_VALID\r
-* Indicates presence of the global route header. When set, the first\r
-* 40 bytes received are the GRH.\r
-*\r
-* IB_RECV_OPT_VEND_MASK\r
-* This mask indicates bits reserved in the receive options that may be\r
-* used by the verbs provider to indicate vendor specific options. Bits\r
-* set in this area of the receive options are ignored by the Access Layer,\r
-* but may have specific meaning to the underlying VPD.\r
-*****/\r
-\r
-\r
-/****s* Access Layer/ib_wc_t\r
-* NAME\r
-* ib_wc_t\r
-*\r
-* DESCRIPTION\r
-* Work completion information.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef struct _ib_wc\r
-{\r
- TO_LONG_PTR(struct _ib_wc*, p_next);\r
- uint64_t wr_id;\r
- ib_wc_type_t wc_type;\r
-\r
- uint32_t length;\r
- uint64_t vendor_specific;\r
- ib_wc_status_t status;\r
-\r
- union _wc_recv\r
- {\r
- struct _wc_conn\r
- {\r
- ib_recv_opt_t recv_opt;\r
- ib_net32_t immediate_data;\r
-\r
- } conn;\r
-\r
- struct _wc_ud\r
- {\r
- ib_recv_opt_t recv_opt;\r
- ib_net32_t immediate_data;\r
- ib_net32_t remote_qp;\r
- uint16_t pkey_index;\r
- ib_net16_t remote_lid;\r
- uint8_t remote_sl;\r
- uint8_t path_bits;\r
- uint8_t csum_ok;\r
-\r
- } ud;\r
-\r
- struct _wc_rd\r
- {\r
- ib_net32_t remote_eecn;\r
- ib_net32_t remote_qp;\r
- ib_net16_t remote_lid;\r
- uint8_t remote_sl;\r
- uint32_t free_cnt;\r
-\r
- } rd;\r
-\r
- struct _wc_raw_ipv6\r
- {\r
- ib_net16_t remote_lid;\r
- uint8_t remote_sl;\r
- uint8_t path_bits;\r
-\r
- } raw_ipv6;\r
-\r
- struct _wc_raw_ether\r
- {\r
- ib_net16_t remote_lid;\r
- uint8_t remote_sl;\r
- uint8_t path_bits;\r
- ib_net16_t ether_type;\r
-\r
- } raw_ether;\r
-\r
- } recv;\r
-\r
-} ib_wc_t;\r
-/*\r
-* FIELDS\r
-* p_next\r
-* A pointer used to chain work completions. This permits multiple\r
-* work completions to be retrieved from a completion queue through a\r
-* single function call. This value is set to NULL to mark the end of\r
-* the chain.\r
-*\r
-* wr_id\r
-* The 64-bit work request identifier that was specified when posting the\r
-* work request.\r
-*\r
-* wc_type\r
-* Indicates the type of work completion.\r
-*\r
-*\r
-* length\r
-* The total length of the data sent or received with the work request.\r
-*\r
-* status\r
-* The result of the work request.\r
-*\r
-* vendor_specific\r
-* HCA vendor specific information returned as part of the completion.\r
-*\r
-* recv.conn.recv_opt\r
-* Indicates optional fields valid as part of a work request that\r
-* completed on a connected (reliable or unreliable) queue pair.\r
-*\r
-* recv.conn.immediate_data\r
-* 32-bit field received as part of an inbound message on a connected\r
-* queue pair. This field is only valid if the recv_opt flag\r
-* IB_RECV_OPT_IMMEDIATE has been set.\r
-*\r
-* recv.ud.recv_opt\r
-* Indicates optional fields valid as part of a work request that\r
-* completed on an unreliable datagram queue pair.\r
-*\r
-* recv.ud.immediate_data\r
-* 32-bit field received as part of an inbound message on a unreliable\r
-* datagram queue pair. This field is only valid if the recv_opt flag\r
-* IB_RECV_OPT_IMMEDIATE has been set.\r
-*\r
-* recv.ud.remote_qp\r
-* Identifies the source queue pair of a received datagram.\r
-*\r
-* recv.ud.pkey_index\r
-* The pkey index for the source queue pair. This is valid only for\r
-* GSI type QP's.\r
-*\r
-* recv.ud.remote_lid\r
-* The source LID of the received datagram.\r
-*\r
-* recv.ud.remote_sl\r
-* The service level used by the source of the received datagram.\r
-*\r
-* recv.ud.path_bits\r
-* path bits...\r
-*\r
-* recv.rd.remote_eecn\r
-* The remote end-to-end context number that sent the received message.\r
-*\r
-* recv.rd.remote_qp\r
-* Identifies the source queue pair of a received message.\r
-*\r
-* recv.rd.remote_lid\r
-* The source LID of the received message.\r
-*\r
-* recv.rd.remote_sl\r
-* The service level used by the source of the received message.\r
-*\r
-* recv.rd.free_cnt\r
-* The number of available entries in the completion queue. Reliable\r
-* datagrams may complete out of order, so this field may be used to\r
-* determine the number of additional completions that may occur.\r
-*\r
-* recv.raw_ipv6.remote_lid\r
-* The source LID of the received message.\r
-*\r
-* recv.raw_ipv6.remote_sl\r
-* The service level used by the source of the received message.\r
-*\r
-* recv.raw_ipv6.path_bits\r
-* path bits...\r
-*\r
-* recv.raw_ether.remote_lid\r
-* The source LID of the received message.\r
-*\r
-* recv.raw_ether.remote_sl\r
-* The service level used by the source of the received message.\r
-*\r
-* recv.raw_ether.path_bits\r
-* path bits...\r
-*\r
-* recv.raw_ether.ether_type\r
-* ether type...\r
-* NOTES\r
-* When the work request completes with error, the only values that the\r
-* consumer can depend on are the wr_id field, and the status of the\r
-* operation.\r
-*\r
-* If the consumer is using the same CQ for completions from more than\r
-* one type of QP (i.e Reliable Connected, Datagram etc), then the consumer\r
-* must have additional information to decide what fields of the union are\r
-* valid.\r
-* SEE ALSO\r
-* ib_wc_type_t, ib_qp_type_t, ib_wc_status_t, ib_recv_opt_t\r
-*****/\r
-\r
-\r
-/****s* Access Layer/ib_mr_create_t\r
-* NAME\r
-* ib_mr_create_t\r
-*\r
-* DESCRIPTION\r
-* Information required to create a registered memory region.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef struct _ib_mr_create\r
-{\r
- TO_LONG_PTR(void*, vaddr);\r
- uint64_t length;\r
- ib_access_t access_ctrl;\r
-\r
-} ib_mr_create_t;\r
-/*\r
-* FIELDS\r
-* vaddr\r
-* Starting virtual address of the region being registered.\r
-*\r
-* length\r
-* Length of the buffer to register.\r
-*\r
-* access_ctrl\r
-* Access rights of the registered region.\r
-*\r
-* SEE ALSO\r
-* ib_access_t\r
-*****/\r
-\r
-#ifdef CL_KERNEL\r
-\r
-/****s* Access Layer/mlnx_fmr_create_t\r
-* NAME\r
-* mlnx_fmr_create_t\r
-*\r
-* DESCRIPTION\r
-* Information required to create a Mellanox fast memory region.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef struct _mlnx_fmr_create\r
-{\r
- int max_pages;\r
- int max_maps;\r
- uint8_t page_size;\r
- ib_access_t access_ctrl;\r
-\r
-} mlnx_fmr_create_t;\r
-/*\r
-* FIELDS\r
-* max_pages\r
-* max pages in the region.\r
-*\r
-* max_maps\r
-* max times, the region can be mapped before remapping.\r
-*\r
-* page_size\r
-* log2 of the page size (e.g. 12 for 4KB).\r
-*\r
-* access_ctrl\r
-* Access rights of the registered region.\r
-*\r
-* NOTES\r
-* This is a Mellanox specific extension to verbs.\r
-*\r
-* SEE ALSO\r
-* ib_access_t\r
-*****/\r
-\r
-\r
-/****s* Access Layer/mlnx_fmr_pool_create_t\r
-* NAME\r
-* mlnx_fmr_pool_create_t\r
-*\r
-* DESCRIPTION\r
-* Information required to create a Mellanox fast memory region pool.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef struct _mlnx_fmr_pool_create\r
-{\r
- int max_pages_per_fmr;\r
- uint8_t page_size; /* really - page_shift, log2 of page_size */\r
- enum ib_access_flags access_ctrl;\r
- int pool_size;\r
- int dirty_watermark;\r
- void (*flush_function)(mlnx_fmr_pool_handle_t h_pool, void *arg);\r
- void *flush_arg;\r
- boolean_t cache;\r
-} mlnx_fmr_pool_create_t;\r
-/*\r
-* FIELDS\r
-* max_pages\r
-* max pages in the region.\r
-*\r
-* max_maps\r
-* max times, the region can be mapped before remapping.\r
-*\r
-* page_size\r
-* log2 of the page size (e.g. 12 for 4KB).\r
-*\r
-* access_ctrl\r
-* Access rights of the registered region.\r
-*\r
-* NOTES\r
-* This is a Mellanox specific extension to verbs.\r
-*\r
-* SEE ALSO\r
-* ib_access_t\r
-*****/\r
-#endif\r
-\r
-/****s* Access Layer/ib_phys_range_t\r
-* NAME\r
-* ib_phys_range_t\r
-*\r
-* DESCRIPTION\r
-* Information describing a physical memory range.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef struct _ib_phys_range\r
-{\r
- uint64_t base_addr;\r
- uint64_t size;\r
-\r
-} ib_phys_range_t;\r
-/*\r
-* FIELDS\r
-* base_addr\r
-* Physical address of the base of the memory range.\r
-*\r
-* size\r
-* size, in bytes, of the memory range.\r
-*\r
-* NOTES\r
-* The base address must be start and end on an HCA-supported page boundary.\r
-*\r
-* SEE ALSO\r
-* ib_phys_create_t\r
-*********/\r
-\r
-\r
-/****s* Access Layer/ib_phys_create_t\r
-* NAME\r
-* ib_phys_create_t\r
-*\r
-* DESCRIPTION\r
-* Information required to create a physical memory region.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef struct _ib_phys_create\r
-{\r
- uint64_t length;\r
- uint32_t num_ranges;\r
- ib_phys_range_t* range_array;\r
- uint32_t buf_offset;\r
- uint32_t hca_page_size;\r
- ib_access_t access_ctrl;\r
-\r
-} ib_phys_create_t;\r
-/*\r
-* FIELDS\r
-* length\r
-* The length of the memory region in bytes.\r
-*\r
-* num_ranges\r
-* Number of ib_phys_range structures listed in the specified range array.\r
-*\r
-* range_array\r
-* An array of ib_phys_range structures to be registered as a single memory\r
-* region.\r
-*\r
-* buf_offset\r
-* The offset into the first physical memory range of the specified memory\r
-* region on which to start the virtual address.\r
-*\r
-* hca_page_size\r
-* The HCA page size to use to register the memory.\r
-*\r
-* access_ctrl\r
-* Access rights of the registered region.\r
-*\r
-* SEE ALSO\r
-* ib_access_t\r
-*****/\r
-\r
-\r
-/****s* Access Layer/ib_mr_attr_t\r
-* NAME\r
-* ib_mr_attr_t\r
-*\r
-* DESCRIPTION\r
-* Attributes of a registered memory region.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef struct _ib_mr_attr\r
-{\r
- TO_LONG_PTR(ib_pd_handle_t, h_pd);\r
- uint64_t local_lb;\r
- uint64_t local_ub;\r
- uint64_t remote_lb;\r
- uint64_t remote_ub;\r
- ib_access_t access_ctrl;\r
- net32_t lkey;\r
- net32_t rkey;\r
-\r
-} ib_mr_attr_t;\r
-/*\r
-* DESCRIPTION\r
-* h_pd\r
-* Handle to the protection domain for this memory region.\r
-*\r
-* local_lb\r
-* The virtual address of the lower bound of protection for local\r
-* memory access. This is always a 64-bit quantity to support registering\r
-* more than 4GB of memory on 32-bit systems with PAE.\r
-*\r
-* local_ub\r
-* The virtual address of the upper bound of protection for local\r
-* memory access. This is always a 64-bit quantity to support registering\r
-* more than 4GB of memory on 32-bit systems with PAE.\r
-*\r
-* remote_lb\r
-* The virtual address of the lower bound of protection for remote\r
-* memory access. This is always a 64-bit quantity to support registering\r
-* more than 4GB of memory on 32-bit systems with PAE.\r
-*\r
-* remote_ub\r
-* The virtual address of the upper bound of protection for remote\r
-* memory access. This is always a 64-bit quantity to support registering\r
-* more than 4GB of memory on 32-bit systems with PAE.\r
-*\r
-* access_ctrl\r
-* Access rights for the specified memory region.\r
-*\r
-* lkey\r
-* The lkey associated with this memory region.\r
-*\r
-* rkey\r
-* The rkey associated with this memory region.\r
-*\r
-* NOTES\r
-* The remote_lb, remote_ub, and rkey are only valid if remote memory access\r
-* is enabled for this memory region.\r
-*\r
-* SEE ALSO\r
-* ib_access_t\r
-*****/\r
-\r
-\r
-/****d* Access Layer/ib_ca_mod_t\r
-* NAME\r
-* ib_ca_mod_t -- Modify port attributes and error counters\r
-*\r
-* DESCRIPTION\r
-* Specifies modifications to the port attributes of a channel adapter.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef uint32_t ib_ca_mod_t;\r
-#define IB_CA_MOD_IS_CM_SUPPORTED 0x00000001\r
-#define IB_CA_MOD_IS_SNMP_SUPPORTED 0x00000002\r
-#define IB_CA_MOD_IS_DEV_MGMT_SUPPORTED 0x00000004\r
-#define IB_CA_MOD_IS_VEND_SUPPORTED 0x00000008\r
-#define IB_CA_MOD_IS_SM 0x00000010\r
-#define IB_CA_MOD_IS_SM_DISABLED 0x00000020\r
-#define IB_CA_MOD_QKEY_CTR 0x00000040\r
-#define IB_CA_MOD_PKEY_CTR 0x00000080\r
-#define IB_CA_MOD_IS_NOTICE_SUPPORTED 0x00000100\r
-#define IB_CA_MOD_IS_TRAP_SUPPORTED 0x00000200\r
-#define IB_CA_MOD_IS_APM_SUPPORTED 0x00000400\r
-#define IB_CA_MOD_IS_SLMAP_SUPPORTED 0x00000800\r
-#define IB_CA_MOD_IS_PKEY_NVRAM_SUPPORTED 0x00001000\r
-#define IB_CA_MOD_IS_MKEY_NVRAM_SUPPORTED 0x00002000\r
-#define IB_CA_MOD_IS_SYSGUID_SUPPORTED 0x00004000\r
-#define IB_CA_MOD_IS_DR_NOTICE_SUPPORTED 0x00008000\r
-#define IB_CA_MOD_IS_BOOT_MGMT_SUPPORTED 0x00010000\r
-#define IB_CA_MOD_IS_CAPM_NOTICE_SUPPORTED 0x00020000\r
-#define IB_CA_MOD_IS_REINIT_SUPORTED 0x00040000\r
-#define IB_CA_MOD_IS_LEDINFO_SUPPORTED 0x00080000\r
-#define IB_CA_MOD_SHUTDOWN_PORT 0x00100000\r
-#define IB_CA_MOD_INIT_TYPE_VALUE 0x00200000\r
-#define IB_CA_MOD_SYSTEM_IMAGE_GUID 0x00400000\r
-#define IB_CA_MOD_IS_CLIENT_REREGISTER_SUPPORTED 0x00800000\r
-#define IB_CA_MOD_RESERVED_MASK 0xFF000000\r
-/*\r
-* VALUES\r
-* IB_CA_MOD_IS_CM_SUPPORTED\r
-* Indicates if there is a communication manager accessible through\r
-* the port.\r
-*\r
-* IB_CA_MOD_IS_SNMP_SUPPORTED\r
-* Indicates if there is an SNMP agent accessible through the port.\r
-*\r
-* IB_CA_MOD_IS_DEV_MGMT_SUPPORTED\r
-* Indicates if there is a device management agent accessible\r
-* through the port.\r
-*\r
-* IB_CA_MOD_IS_VEND_SUPPORTED\r
-* Indicates if there is a vendor supported agent accessible\r
-* through the port.\r
-*\r
-* IB_CA_MOD_IS_SM\r
-* Indicates if there is a subnet manager accessible through\r
-* the port.\r
-*\r
-* IB_CA_MOD_IS_SM_DISABLED\r
-* Indicates if the port has been disabled for configuration by the\r
-* subnet manager.\r
-*\r
-* IB_CA_MOD_QKEY_CTR\r
-* Used to reset the qkey violation counter associated with the\r
-* port.\r
-*\r
-* IB_CA_MOD_PKEY_CTR\r
-* Used to reset the pkey violation counter associated with the\r
-* port.\r
-*\r
-* IB_CA_MOD_IS_NOTICE_SUPPORTED\r
-* Indicates that this CA supports ability to generate Notices for\r
-* Port State changes. (only applicable to switches)\r
-*\r
-* IB_CA_MOD_IS_TRAP_SUPPORTED\r
-* Indicates that this management port supports ability to generate\r
-* trap messages. (only applicable to switches)\r
-*\r
-* IB_CA_MOD_IS_APM_SUPPORTED\r
-* Indicates that this port is capable of performing Automatic\r
-* Path Migration.\r
-*\r
-* IB_CA_MOD_IS_SLMAP_SUPPORTED\r
-* Indicates this port supports SLMAP capability.\r
-*\r
-* IB_CA_MOD_IS_PKEY_NVRAM_SUPPORTED\r
-* Indicates that PKEY is supported in NVRAM\r
-*\r
-* IB_CA_MOD_IS_MKEY_NVRAM_SUPPORTED\r
-* Indicates that MKEY is supported in NVRAM\r
-*\r
-* IB_CA_MOD_IS_SYSGUID_SUPPORTED\r
-* Indicates System Image GUID support.\r
-*\r
-* IB_CA_MOD_IS_DR_NOTICE_SUPPORTED\r
-* Indicate support for generating Direct Routed Notices\r
-*\r
-* IB_CA_MOD_IS_BOOT_MGMT_SUPPORTED\r
-* Indicates support for Boot Management\r
-*\r
-* IB_CA_MOD_IS_CAPM_NOTICE_SUPPORTED\r
-* Indicates capability to generate notices for changes to CAPMASK\r
-*\r
-* IB_CA_MOD_IS_REINIT_SUPORTED\r
-* Indicates type of node init supported. Refer to Chapter 14 for\r
-* Initialization actions.\r
-*\r
-* IB_CA_MOD_IS_LEDINFO_SUPPORTED\r
-* Indicates support for LED info.\r
-*\r
-* IB_CA_MOD_SHUTDOWN_PORT\r
-* Used to modify the port active indicator.\r
-*\r
-* IB_CA_MOD_INIT_TYPE_VALUE\r
-* Used to modify the init_type value for the port.\r
-*\r
-* IB_CA_MOD_SYSTEM_IMAGE_GUID\r
-* Used to modify the system image GUID for the port.\r
-*\r
-* IB_CA_MOD_IS_CLIENT_REREGISTER_SUPPORTED\r
-* Used to modify the system image GUID for the port.\r
-*\r
-* IB_CA_MOD_RESERVED_MASK\r
-* Mask of all the reserved bits. If any of these bits are set\r
-* ib_modify_ca will return IB_INVALID_PARAMETER.\r
-*****/\r
-\r
-\r
-/****d* Access Layer/ib_mr_mod_t\r
-* NAME\r
-* ib_mr_mod_t\r
-*\r
-* DESCRIPTION\r
-* Mask used to specify which attributes of a registered memory region are\r
-* being modified.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef uint32_t ib_mr_mod_t;\r
-#define IB_MR_MOD_ADDR 0x00000001\r
-#define IB_MR_MOD_PD 0x00000002\r
-#define IB_MR_MOD_ACCESS 0x00000004\r
-/*\r
-* PARAMETERS\r
-* IB_MEM_MOD_ADDR\r
-* The address of the memory region is being modified.\r
-*\r
-* IB_MEM_MOD_PD\r
-* The protection domain associated with the memory region is being\r
-* modified.\r
-*\r
-* IB_MEM_MOD_ACCESS\r
-* The access rights the memory region are being modified.\r
-*****/\r
-\r
-/****d* IBA Base: Constants/IB_SMINFO_STATE_INIT\r
-* NAME\r
-* IB_SMINFO_STATE_INIT\r
-*\r
-* DESCRIPTION\r
-* Encoded state value used in the SMInfo attribute.\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_SMINFO_STATE_INIT 4\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_SMINFO_ATTR_MOD_HANDOVER\r
-* NAME\r
-* IB_SMINFO_ATTR_MOD_HANDOVER\r
-*\r
-* DESCRIPTION\r
-* Encoded attribute modifier value used on SubnSet(SMInfo) SMPs.\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_SMINFO_ATTR_MOD_HANDOVER (CL_NTOH32(0x000001))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_SMINFO_ATTR_MOD_ACKNOWLEDGE\r
-* NAME\r
-* IB_SMINFO_ATTR_MOD_ACKNOWLEDGE\r
-*\r
-* DESCRIPTION\r
-* Encoded attribute modifier value used on SubnSet(SMInfo) SMPs.\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_SMINFO_ATTR_MOD_ACKNOWLEDGE (CL_NTOH32(0x000002))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_SMINFO_ATTR_MOD_DISABLE\r
-* NAME\r
-* IB_SMINFO_ATTR_MOD_DISABLE\r
-*\r
-* DESCRIPTION\r
-* Encoded attribute modifier value used on SubnSet(SMInfo) SMPs.\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_SMINFO_ATTR_MOD_DISABLE (CL_NTOH32(0x000003))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_SMINFO_ATTR_MOD_STANDBY\r
-* NAME\r
-* IB_SMINFO_ATTR_MOD_STANDBY\r
-*\r
-* DESCRIPTION\r
-* Encoded attribute modifier value used on SubnSet(SMInfo) SMPs.\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_SMINFO_ATTR_MOD_STANDBY (CL_NTOH32(0x000004))\r
-/**********/\r
-\r
-/****d* IBA Base: Constants/IB_SMINFO_ATTR_MOD_DISCOVER\r
-* NAME\r
-* IB_SMINFO_ATTR_MOD_DISCOVER\r
-*\r
-* DESCRIPTION\r
-* Encoded attribute modifier value used on SubnSet(SMInfo) SMPs.\r
-*\r
-* SOURCE\r
-*/\r
-#define IB_SMINFO_ATTR_MOD_DISCOVER (CL_NTOH32(0x000005))\r
-/**********/\r
-\r
-/****s* Access Layer/ib_ci_op_t\r
-* NAME\r
-* ib_ci_op_t\r
-*\r
-* DESCRIPTION\r
-* A structure used for vendor specific CA interface communication.\r
-*\r
-* SYNOPSIS\r
-*/\r
-typedef struct _ib_ci_op\r
-{\r
- IN uint32_t command;\r
- IN uint32_t buf_size;\r
- IN uint32_t buf_info;\r
- IN OUT int32_t status;\r
- IN OUT TO_LONG_PTR(void*, p_buf) OPTIONAL; // Do not put it last in the structure, because of memory alignment\r
- OUT uint32_t num_bytes_ret;\r
- \r
-\r
-} ib_ci_op_t;\r
-/*\r
-* FIELDS\r
-* command\r
-* A command code that is understood by the verbs provider.\r
-*\r
-* status\r
-* The completion status from the verbs provider. This field should be\r
-* initialize to indicate an error to allow detection and cleanup in\r
-* case a communication error occurs between user-mode and kernel-mode.\r
-*\r
-* buf_size\r
-* The size of the buffer in bytes.\r
-*\r
-* buf_info\r
-* Additional buffer information\r
-*\r
-* p_buf\r
-* A reference to a buffer containing vendor specific data. The verbs\r
-* provider must not access pointers in the p_buf between user-mode and\r
-* kernel-mode. Any pointers embedded in the p_buf are invalidated by\r
-* the user-mode/kernel-mode transition.\r
-*\r
-* num_bytes_ret\r
-* The size in bytes of the vendor specific data returned in the buffer.\r
-* This field is set by the verbs provider. The verbs provider should\r
-* verify that the buffer size is sufficient to hold the data being\r
-* returned.\r
-*\r
-* NOTES\r
-* This structure is provided to allow the exchange of vendor specific\r
-* data between the originator and the verbs provider. Users of this\r
-* structure are expected to know the format of data in the p_buf based\r
-* on the structure command field or the usage context.\r
-*****/\r
-\r
-\r
-#endif // __IB_TYPES_EXTENDED_H__\r
+++ /dev/null
-/*
- * Copyright (c) 2004, 2005 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under the OpenIB.org BSD license
- * below:
- *
- * Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the following
- * conditions are met:
- *
- * - Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the following
- * disclaimer.
- *
- * - Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * $Id$
- */
-
-
-/*
- * Abstract:
- * Declaration of dispatcher abstraction.
- *
- * Environment:
- * All
- *
- * $Revision: 1.4 $
- */
-
-
-#ifndef _CL_DISPATCHER_H_
-#define _CL_DISPATCHER_H_
-
-
-#include <complib/cl_atomic.h>
-#include <complib/cl_threadpool.h>
-#include <complib/cl_qlist.h>
-#include <complib/cl_qpool.h>
-#include <complib/cl_spinlock.h>
-#include <complib/cl_ptr_vector.h>
-
-#ifdef __cplusplus
-# define BEGIN_C_DECLS extern "C" {
-# define END_C_DECLS }
-#else /* !__cplusplus */
-# define BEGIN_C_DECLS
-# define END_C_DECLS
-#endif /* __cplusplus */
-
-BEGIN_C_DECLS
-
-/****h* Component Library/Dispatcher
-* NAME
-* Dispatcher
-*
-* DESCRIPTION
-* The Dispatcher provides a facility for message routing to
-* asynchronous worker threads.
-*
-* The Dispatcher functions operate on a cl_dispatcher_t structure
-* which should be treated as opaque and should be manipulated
-* only through the provided functions.
-*
-* SEE ALSO
-* Structures:
-* cl_dispatcher_t
-*
-* Initialization/Destruction:
-* cl_disp_construct, cl_disp_init, cl_disp_shutdown, cl_disp_destroy
-*
-* Manipulation:
-* cl_disp_post, cl_disp_reset, cl_disp_wait_on
-*********/
-
-
-/****s* Component Library: Dispatcher/cl_disp_msgid_t
-* NAME
-* cl_disp_msgid_t
-*
-* DESCRIPTION
-* Defines the type of dispatcher messages.
-*
-* SYNOPSIS
-*/
-typedef uint32_t cl_disp_msgid_t;
-/**********/
-
-
-/****s* Component Library: Dispatcher/CL_DISP_MSGID_NONE
-* NAME
-* CL_DISP_MSGID_NONE
-*
-* DESCRIPTION
-* Defines a message value that means "no message".
-* This value is used during registration by Dispatcher clients
-* that do not wish to receive messages.
-*
-* No Dispatcher message is allowed to have this value.
-*
-* SYNOPSIS
-*/
-#define CL_DISP_MSGID_NONE 0xFFFFFFFF
-/**********/
-
-/****s* Component Library: Dispatcher/CL_DISP_INVALID_HANDLE
-* NAME
-* CL_DISP_INVALID_HANDLE
-*
-* DESCRIPTION
-* Defines the value of an invalid Dispatcher registration handle.
-*
-* SYNOPSIS
-*/
-#define CL_DISP_INVALID_HANDLE ((cl_disp_reg_handle_t)0)
-/*********/
-
-/****f* Component Library: Dispatcher/cl_pfn_msgrcv_cb_t
-* NAME
-* cl_pfn_msgrcv_cb_t
-*
-* DESCRIPTION
-* This typedef defines the prototype for client functions invoked
-* by the Dispatcher. The Dispatcher calls the corresponding
-* client function when delivering a message to the client.
-*
-* The client function must be reentrant if the user creates a
-* Dispatcher with more than one worker thread.
-*
-* SYNOPSIS
-*/
-typedef void
-(*cl_pfn_msgrcv_cb_t)(
- IN void* context,
- IN void* p_data );
-/*
-* PARAMETERS
-* context
-* [in] Client specific context specified in a call to
-* cl_disp_register
-*
-* p_data
-* [in] Pointer to the client specific data payload
-* of this message.
-*
-* RETURN VALUE
-* This function does not return a value.
-*
-* NOTES
-* This typedef provides a function prototype reference for
-* the function provided by Dispatcher clients as a parameter
-* to the cl_disp_register function.
-*
-* SEE ALSO
-* Dispatcher, cl_disp_register
-*********/
-
-
-/****f* Component Library: Dispatcher/cl_pfn_msgdone_cb_t
-* NAME
-* cl_pfn_msgdone_cb_t
-*
-* DESCRIPTION
-* This typedef defines the prototype for client functions invoked
-* by the Dispatcher. The Dispatcher calls the corresponding
-* client function after completing delivery of a message.
-*
-* The client function must be reentrant if the user creates a
-* Dispatcher with more than one worker thread.
-*
-* SYNOPSIS
-*/
-typedef void
-(*cl_pfn_msgdone_cb_t)(
- IN void* context,
- IN void* p_data );
-/*
-* PARAMETERS
-* context
-* [in] Client specific context specified in a call to
-* cl_disp_post
-*
-* p_data
-* [in] Pointer to the client specific data payload
-* of this message.
-*
-* RETURN VALUE
-* This function does not return a value.
-*
-* NOTES
-* This typedef provides a function prototype reference for
-* the function provided by Dispatcher clients as a parameter
-* to the cl_disp_post function.
-*
-* SEE ALSO
-* Dispatcher, cl_disp_post
-*********/
-
-
-/****s* Component Library: Dispatcher/cl_dispatcher_t
-* NAME
-* cl_dispatcher_t
-*
-* DESCRIPTION
-* Dispatcher structure.
-*
-* The Dispatcher is thread safe.
-*
-* The cl_dispatcher_t structure should be treated as opaque and should
-* be manipulated only through the provided functions.
-*
-* SYNOPSIS
-*/
-typedef struct _cl_dispatcher
-{
- cl_spinlock_t lock;
- cl_ptr_vector_t reg_vec;
- cl_qlist_t reg_list;
- cl_thread_pool_t worker_threads;
- cl_qlist_t msg_fifo;
- cl_qpool_t msg_pool;
- uint64_t last_msg_queue_time_us;
-} cl_dispatcher_t;
-/*
-* FIELDS
-* reg_vec
-* Vector of registration info objects. Indexed by message msg_id.
-*
-* lock
-* Spinlock to guard internal structures.
-*
-* msg_fifo
-* FIFO of messages being processed by the Dispatcher. New
-* messages are posted to the tail of the FIFO. Worker threads
-* pull messages from the front.
-*
-* worker_threads
-* Thread pool of worker threads to dispose of posted messages.
-*
-* msg_pool
-* Pool of message objects to be processed through the FIFO.
-*
-* reg_count
-* Count of the number of registrants.
-*
-* state
-* Indicates the state of the object.
-*
-* last_msg_queue_time_us
-* The time that the last message spent in the Q in usec
-*
-* SEE ALSO
-* Dispatcher
-*********/
-
-
-/****s* Component Library: Dispatcher/cl_disp_reg_info_t
-* NAME
-* cl_disp_reg_info_t
-*
-* DESCRIPTION
-* Defines the dispatcher registration object structure.
-*
-* The cl_disp_reg_info_t structure is for internal use by the
-* Dispatcher only.
-*
-* SYNOPSIS
-*/
-typedef struct _cl_disp_reg_info
-{
- cl_list_item_t list_item;
- cl_pfn_msgrcv_cb_t pfn_rcv_callback;
- const void *context;
- atomic32_t ref_cnt;
- cl_disp_msgid_t msg_id;
- cl_dispatcher_t *p_disp;
-
-} cl_disp_reg_info_t;
-/*
-* FIELDS
-* pfn_rcv_callback
-* Client's message receive callback.
-*
-* context
-* Client's context for message receive callback.
-*
-* rcv_thread_count
-* Number of threads currently in the receive callback.
-*
-* msg_done_thread_count
-* Number of threads currently in the message done callback.
-*
-* state
-* State of this registration object.
-* DISP_REGSTATE_INIT: initialized and inactive
-* DISP_REGSTATE_ACTIVE: in active use
-* DISP_REGSTATE_UNREGPEND: unregistration is pending
-*
-* msg_id
-* Dispatcher message msg_id value for this registration object.
-*
-* p_disp
-* Pointer to parent Dispatcher.
-*
-* SEE ALSO
-*********/
-
-
-/****s* Component Library: Dispatcher/cl_disp_msg_t
-* NAME
-* cl_disp_msg_t
-*
-* DESCRIPTION
-* Defines the dispatcher message structure.
-*
-* The cl_disp_msg_t structure is for internal use by the
-* Dispatcher only.
-*
-* SYNOPSIS
-*/
-typedef struct _cl_disp_msg
-{
- cl_pool_item_t item;
- const void *p_data;
- cl_disp_reg_info_t *p_src_reg;
- cl_disp_reg_info_t *p_dest_reg;
- cl_pfn_msgdone_cb_t pfn_xmt_callback;
- uint64_t in_time;
- const void *context;
-} cl_disp_msg_t;
-/*
-* FIELDS
-* item
-* List & Pool linkage. Must be first element in the structure!!
-*
-* msg_id
-* The message's numberic ID value.
-*
-* p_data
-* Pointer to the data payload for this message. The payload
-* is opaque to the Dispatcher.
-*
-* p_reg_info
-* Pointer to the registration info of the sender.
-*
-* pfn_xmt_callback
-* Client's message done callback.
-*
-* in_time
-* The absolute time the message was inserted into the queue
-*
-* context
-* Client's message done callback context.
-*
-* SEE ALSO
-*********/
-
-
-/****s* Component Library: Dispatcher/cl_disp_reg_info_t
-* NAME
-* cl_disp_reg_info_t
-*
-* DESCRIPTION
-* Defines the Dispatcher registration handle. This handle
-* should be treated as opaque by the client.
-*
-* SYNOPSIS
-*/
-typedef const struct _cl_disp_reg_info *cl_disp_reg_handle_t;
-/**********/
-
-
-/****f* Component Library: Dispatcher/cl_disp_construct
-* NAME
-* cl_disp_construct
-*
-* DESCRIPTION
-* This function constructs a Dispatcher object.
-*
-* SYNOPSIS
-*/
-void
-cl_disp_construct(
- IN cl_dispatcher_t* const p_disp );
-/*
-* PARAMETERS
-* p_disp
-* [in] Pointer to a Dispatcher.
-*
-* RETURN VALUE
-* This function does not return a value.
-*
-* NOTES
-* Allows calling cl_disp_init and cl_disp_destroy.
-*
-* SEE ALSO
-* Dispatcher, cl_disp_init, cl_disp_destroy
-*********/
-
-
-/****f* Component Library: Dispatcher/cl_disp_init
-* NAME
-* cl_disp_init
-*
-* DESCRIPTION
-* This function initializes a Dispatcher object.
-*
-* SYNOPSIS
-*/
-cl_status_t
-cl_disp_init(
- IN cl_dispatcher_t* const p_disp,
- IN const uint32_t thread_count,
- IN const char* const name );
-/*
-* PARAMETERS
-* p_disp
-* [in] Pointer to a Dispatcher.
-*
-* thread_count
-* [in] The number of worker threads to create in this Dispatcher.
-* A value of 0 causes the Dispatcher to create one worker thread
-* per CPU in the system. When the Dispatcher is created with
-* only one thread, the Dispatcher guarantees to deliver posted
-* messages in order. When the Dispatcher is created with more
-* than one thread, messages may be delivered out of order.
-*
-* name
-* [in] Name to associate with the threads. The name may be up to 16
-* characters, including a terminating null character. All threads
-* created in the Dispatcher have the same name.
-*
-* RETURN VALUE
-* CL_SUCCESS if the operation is successful.
-*
-* SEE ALSO
-* Dispatcher, cl_disp_destoy, cl_disp_register, cl_disp_unregister,
-* cl_disp_post
-*********/
-
-/****f* Component Library: Dispatcher/cl_disp_shutdown
-* NAME
-* cl_disp_shutdown
-*
-* DESCRIPTION
-* This function shutdown a Dispatcher object. So it unreg all messages and
-* clears the fifo and waits for the threads to exit
-*
-* SYNOPSIS
-*/
-void
-cl_disp_shutdown(
- IN cl_dispatcher_t* const p_disp );
-/*
-* PARAMETERS
-* p_disp
-* [in] Pointer to a Dispatcher.
-*
-* RETURN VALUE
-* This function does not return a value.
-*
-* NOTES
-* This function does not returns until all worker threads
-* have exited client callback functions and been successfully
-* shutdowned.
-*
-* SEE ALSO
-* Dispatcher, cl_disp_construct, cl_disp_init
-*********/
-
-/****f* Component Library: Dispatcher/cl_disp_destroy
-* NAME
-* cl_disp_destroy
-*
-* DESCRIPTION
-* This function destroys a Dispatcher object.
-*
-* SYNOPSIS
-*/
-void
-cl_disp_destroy(
- IN cl_dispatcher_t* const p_disp );
-/*
-* PARAMETERS
-* p_disp
-* [in] Pointer to a Dispatcher.
-*
-* RETURN VALUE
-* This function does not return a value.
-*
-* SEE ALSO
-* Dispatcher, cl_disp_construct, cl_disp_init
-*********/
-
-
-/****f* Component Library: Dispatcher/cl_disp_register
-* NAME
-* cl_disp_register
-*
-* DESCRIPTION
-* This function registers a client with a Dispatcher object.
-*
-* SYNOPSIS
-*/
-cl_disp_reg_handle_t
-cl_disp_register(
- IN cl_dispatcher_t* const p_disp,
- IN const cl_disp_msgid_t msg_id,
- IN cl_pfn_msgrcv_cb_t pfn_callback OPTIONAL,
- IN const void* const context );
-/*
-* PARAMETERS
-* p_disp
-* [in] Pointer to a Dispatcher.
-*
-* msg_id
-* [in] Numberic message ID for which the client is registering.
-* If the client does not wish to receive any messages,
-* (a send-only client) then the caller should set this value
-* to CL_DISP_MSGID_NONE. For efficiency, numeric message msg_id
-* values should start with 0 and should be contiguous, or nearly so.
-*
-* pfn_callback
-* [in] Message receive callback. The Dispatcher calls this
-* function after receiving a posted message with the
-* appropriate message msg_id value. Send-only clients may specify
-* NULL for this value.
-*
-* context
-* [in] Client context value passed to the cl_pfn_msgrcv_cb_t
-* function.
-*
-* RETURN VALUE
-* On success a Dispatcher registration handle.
-* CL_CL_DISP_INVALID_HANDLE otherwise.
-*
-* SEE ALSO
-* Dispatcher, cl_disp_unregister, cl_disp_post
-*********/
-
-
-/****f* Component Library: Dispatcher/cl_disp_unregister
-* NAME
-* cl_disp_unregister
-*
-* DESCRIPTION
-* This function unregisters a client from a Dispatcher.
-*
-* SYNOPSIS
-*/
-void
-cl_disp_unregister(
- IN const cl_disp_reg_handle_t handle );
-/*
-* PARAMETERS
-* handle
-* [in] cl_disp_reg_handle_t value return by cl_disp_register.
-*
-* RETURN VALUE
-* This function does not return a value.
-*
-* NOTES
-* This function will not return until worker threads have exited
-* the callback functions for this client. Do not invoke this
-* function from a callback.
-*
-* SEE ALSO
-* Dispatcher, cl_disp_register
-*********/
-
-
-/****f* Component Library: Dispatcher/cl_disp_post
-* NAME
-* cl_disp_post
-*
-* DESCRIPTION
-* This function posts a message to a Dispatcher object.
-*
-* SYNOPSIS
-*/
-cl_status_t
-cl_disp_post(
- IN const cl_disp_reg_handle_t handle,
- IN const cl_disp_msgid_t msg_id,
- IN const void* const p_data,
- IN cl_pfn_msgdone_cb_t pfn_callback OPTIONAL,
- IN const void* const context );
-/*
-* PARAMETERS
-* handle
-* [in] cl_disp_reg_handle_t value return by cl_disp_register.
-*
-* msg_id
-* [in] Numeric message msg_id value associated with this message.
-*
-* p_data
-* [in] Data payload for this message.
-*
-* pfn_callback
-* [in] Pointer to a cl_pfn_msgdone_cb_t function.
-* The Dispatcher calls this function after the message has been
-* processed by the recipient.
-* The caller may pass NULL for this value, which indicates no
-* message done callback is necessary.
-*
-* context
-* [in] Client context value passed to the cl_pfn_msgdone_cb_t
-* function.
-*
-* RETURN VALUE
-* CL_SUCCESS if the message was successfully queued in the Dispatcher.
-*
-* NOTES
-* The caller must not modify the memory pointed to by p_data until
-* the Dispatcher call the pfn_callback function.
-*
-* SEE ALSO
-* Dispatcher
-*********/
-
-/****f* Component Library: Dispatcher/cl_disp_get_queue_status
-* NAME
-* cl_disp_get_queue_status
-*
-* DESCRIPTION
-* This function posts a message to a Dispatcher object.
-*
-* SYNOPSIS
-*/
-void
-cl_disp_get_queue_status(
- IN const cl_disp_reg_handle_t handle,
- OUT uint32_t *p_num_queued_msgs,
- OUT uint64_t *p_last_msg_queue_time_ms);
-/*
-* PARAMETERS
-* handle
-* [in] cl_disp_reg_handle_t value return by cl_disp_register.
-*
-* p_last_msg_queue_time_ms
-* [out] pointer to a variable to hold the time the last popped up message
-* spent in the queue
-*
-* p_num_queued_msgs
-* [out] number of messages in the queue
-*
-* RETURN VALUE
-* Thr time the last popped up message stayed in the queue, in msec
-*
-* NOTES
-* Extarnel Locking is not required.
-*
-* SEE ALSO
-* Dispatcher
-*********/
-
-END_C_DECLS
-
-#endif /* !defined(_CL_DISPATCHER_H_) */
+++ /dev/null
-/*
- * Copyright (c) 2004, 2005 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under the OpenIB.org BSD license
- * below:
- *
- * Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the following
- * conditions are met:
- *
- * - Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the following
- * disclaimer.
- *
- * - Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * $Id$
- */
-
-
-/*
- * Abstract:
- * Declaration of event wheel abstraction.
- *
- * Environment:
- * All
- *
- * $Revision: 1.4 $
- */
-
-
-#ifndef _CL_EVENT_WHEEL_H_
-#define _CL_EVENT_WHEEL_H_
-
-#include <complib/cl_atomic.h>
-#include <complib/cl_qlist.h>
-#include <complib/cl_qmap.h>
-#include <complib/cl_timer.h>
-#include <complib/cl_spinlock.h>
-#include <opensm/osm_log.h>
-
-#ifdef __cplusplus
-# define BEGIN_C_DECLS extern "C" {
-# define END_C_DECLS }
-#else /* !__cplusplus */
-# define BEGIN_C_DECLS
-# define END_C_DECLS
-#endif /* __cplusplus */
-
-BEGIN_C_DECLS
-
-/****h* Component Library/Event_Wheel
-* NAME
-* Event_Wheel
-*
-* DESCRIPTION
-* The Event_Wheel provides a facility for registering delayed events
-* and getting called once they timeout.
-*
-* The Event_Wheel functions operate on a cl_event_wheel_t structure
-* which should be treated as opaque and should be manipulated
-* only through the provided functions.
-*
-* SEE ALSO
-* Structures:
-* cl_event_wheel_t
-*
-* Initialization/Destruction:
-* cl_event_wheel_construct, cl_event_wheel_init, cl_event_wheel_destroy
-*
-* Manipulation:
-* cl_event_wheel_reg, cl_event_wheel_unreg
-*
-*********/
-
-/****f* Component Library: Event_Wheel/cl_pfn_event_aged_cb_t
-* NAME
-* cl_pfn_event_aged_cb_t
-*
-* DESCRIPTION
-* This typedef defines the prototype for client functions invoked
-* by the Event_Wheel. The Event_Wheel calls the corresponding
-* client function when the specific item has aged.
-*
-* SYNOPSIS
-*/
-typedef uint64_t
-(*cl_pfn_event_aged_cb_t)(
- IN uint64_t key,
- IN uint32_t num_regs,
- IN void* context);
-/*
-* PARAMETERS
-* key
-* [in] The key used for registering the item in the call to
-* cl_event_wheel_reg
-*
-* num_regs
-* [in] The number of times this event was registered (pushed in time).
-*
-* context
-* [in] Client specific context specified in a call to
-* cl_event_wheel_reg
-*
-* RETURN VALUE
-* This function returns the abosolute time the event should fire in [usec].
-* If lower then current time means the event should be unregistered
-* immediatly.
-*
-* NOTES
-* This typedef provides a function prototype reference for
-* the function provided by Event_Wheel clients as a parameter
-* to the cl_event_wheel_reg function.
-*
-* SEE ALSO
-* Event_Wheel, cl_event_wheel_reg
-*********/
-
-/****s* Component Library: Event_Wheel/cl_event_wheel_t
-* NAME
-* cl_event_wheel_t
-*
-* DESCRIPTION
-* Event_Wheel structure.
-*
-* The Event_Wheel is thread safe.
-*
-* The cl_event_wheel_t structure should be treated as opaque and should
-* be manipulated only through the provided functions.
-*
-* SYNOPSIS
-*/
-typedef struct _cl_event_wheel
-{
- cl_spinlock_t lock;
- cl_spinlock_t *p_external_lock;
-
- cl_qmap_t events_map;
- boolean_t closing;
- cl_qlist_t events_wheel;
- cl_timer_t timer;
- osm_log_t *p_log;
-} cl_event_wheel_t;
-/*
-* FIELDS
-* lock
-* Spinlock to guard internal structures.
-*
-* p_external_lock
-* Reference to external spinlock to guard internal structures
-* if the event wheel is part of a larger object protected by its own lock
-*
-* events_map
-* A Map holding all registered event items by their key.
-*
-* closing
-* A flag indicating the event wheel is closing. This means that
-* callbacks that are called when closing == TRUE should just be ignored.
-*
-* events_wheel
-* A list of the events sorted by expiration time.
-*
-* timer
-* The timer scheduling event time propagation.
-*
-* p_log
-* Pointer to opensm log object.
-*
-* SEE ALSO
-* Event_Wheel
-*********/
-
-/****s* Component Library: Event_Wheel/cl_event_wheel_reg_info_t
-* NAME
-* cl_event_wheel_reg_info_t
-*
-* DESCRIPTION
-* Defines the event_wheel registration object structure.
-*
-* The cl_event_wheel_reg_info_t structure is for internal use by the
-* Event_Wheel only.
-*
-* SYNOPSIS
-*/
-typedef struct _cl_event_wheel_reg_info
-{
- cl_map_item_t map_item;
- cl_list_item_t list_item;
- uint64_t key;
- cl_pfn_event_aged_cb_t pfn_aged_callback;
- uint64_t aging_time;
- uint32_t num_regs;
- void *context;
- cl_event_wheel_t *p_event_wheel;
-} cl_event_wheel_reg_info_t;
-/*
-* FIELDS
-* map_item
-* The map item of this event
-*
-* list_item
-* The sorted by aging time list item
-*
-* key
-* The key by which one can find the event
-*
-* pfn_aged_callback
-* The clients Event-Aged callback
-*
-* aging_time
-* The delta time [msec] for which the event should age.
-*
-* num_regs
-* The number of times the same event (key) was registered
-*
-* context
-* Client's context for event-aged callback.
-*
-* p_event_wheel
-* Pointer to this event wheel object
-*
-* SEE ALSO
-*********/
-
-
-/****f* Component Library: Event_Wheel/cl_event_wheel_construct
-* NAME
-* cl_event_wheel_construct
-*
-* DESCRIPTION
-* This function constructs a Event_Wheel object.
-*
-* SYNOPSIS
-*/
-void
-cl_event_wheel_construct(
- IN cl_event_wheel_t* const p_event_wheel );
-/*
-* PARAMETERS
-* p_event_wheel
-* [in] Pointer to a Event_Wheel.
-*
-* RETURN VALUE
-* This function does not return a value.
-*
-* NOTES
-* Allows calling cl_event_wheel_init and cl_event_wheel_destroy.
-*
-* SEE ALSO
-* Event_Wheel, cl_event_wheel_init, cl_event_wheel_destroy
-*********/
-
-
-/****f* Component Library: Event_Wheel/cl_event_wheel_init
-* NAME
-* cl_event_wheel_init
-*
-* DESCRIPTION
-* This function initializes a Event_Wheel object.
-*
-* SYNOPSIS
-*/
-cl_status_t
-cl_event_wheel_init(
- IN cl_event_wheel_t* const p_event_wheel,
- IN osm_log_t *p_log);
-
-/*
-* PARAMETERS
-* p_event_wheel
-* [in] Pointer to a Event_Wheel.
-*
-* p_log
-* [in] Pointer to opensm log object to be used for logging
-*
-* RETURN VALUE
-* CL_SUCCESS if the operation is successful.
-*
-* SEE ALSO
-* Event_Wheel, cl_event_wheel_destoy, cl_event_wheel_reg, cl_event_wheel_unreg
-*
-*********/
-
-/****f* Component Library: Event_Wheel/cl_event_wheel_init
-* NAME
-* cl_event_wheel_init
-*
-* DESCRIPTION
-* This function initializes a Event_Wheel object.
-*
-* SYNOPSIS
-*/
-cl_status_t
-cl_event_wheel_init_ex(
- IN cl_event_wheel_t* const p_event_wheel,
- IN osm_log_t *p_log,
- IN cl_spinlock_t *p_external_lock);
-
-/*
-* PARAMETERS
-* p_event_wheel
-* [in] Pointer to a Event_Wheel.
-*
-* p_log
-* [in] Pointer to opensm log object to be used for logging
-*
-* p_external_lock
-* [in] Reference to external spinlock to guard internal structures
-* if the event wheel is part of a larger object protected by its own lock
-*
-* RETURN VALUE
-* CL_SUCCESS if the operation is successful.
-*
-* SEE ALSO
-* Event_Wheel, cl_event_wheel_destoy, cl_event_wheel_reg, cl_event_wheel_unreg
-*
-*********/
-
-
-/****f* Component Library: Event_Wheel/cl_event_wheel_destroy
-* NAME
-* cl_event_wheel_destroy
-*
-* DESCRIPTION
-* This function destroys a Event_Wheel object.
-*
-* SYNOPSIS
-*/
-void
-cl_event_wheel_destroy(
- IN cl_event_wheel_t* const p_event_wheel );
-/*
-* PARAMETERS
-* p_event_wheel
-* [in] Pointer to a Event_Wheel.
-*
-* RETURN VALUE
-* This function does not return a value.
-*
-* NOTES
-* This function does not returns until all client callback functions
-* been successfully finished.
-*
-* SEE ALSO
-* Event_Wheel, cl_event_wheel_construct, cl_event_wheel_init
-*********/
-
-/****f* Component Library: Event_Wheel/cl_event_wheel_dump
-* NAME
-* cl_event_wheel_dump
-*
-* DESCRIPTION
-* This function dumps the details of an Event_Whell object.
-*
-* SYNOPSIS
-*/
-void
-cl_event_wheel_dump(
- IN cl_event_wheel_t* const p_event_wheel );
-/*
-* PARAMETERS
-* p_event_wheel
-* [in] Pointer to a Event_Wheel.
-*
-* RETURN VALUE
-* This function does not return a value.
-*
-* NOTES
-* Note that this function should be called inside a lock of the event wheel!
-* It doesn't aquire the lock by itself.
-*
-* SEE ALSO
-* Event_Wheel, cl_event_wheel_construct, cl_event_wheel_init
-*********/
-
-/****f* Component Library: Event_Wheel/cl_event_wheel_reg
-* NAME
-* cl_event_wheel_reg
-*
-* DESCRIPTION
-* This function registers a client with a Event_Wheel object.
-*
-* SYNOPSIS
-*/
-cl_status_t
-cl_event_wheel_reg(
- IN cl_event_wheel_t* const p_event_wheel,
- IN const uint64_t key,
- IN const uint64_t aging_time_usec,
- IN cl_pfn_event_aged_cb_t pfn_callback,
- IN void* const context );
-/*
-* PARAMETERS
-* p_event_wheel
-* [in] Pointer to a Event_Wheel.
-*
-* key
-* [in] The specifc Key by which events are registered.
-*
-* aging_time_usec
-* [in] The absolute time this event should age in usec
-*
-* pfn_callback
-* [in] Event Aging callback. The Event_Wheel calls this
-* function after the time the event has registed for has come.
-*
-* context
-* [in] Client context value passed to the cl_pfn_event_aged_cb_t
-* function.
-*
-* RETURN VALUE
-* On success a Event_Wheel CL_SUCCESS or CL_ERROR otherwise.
-*
-* SEE ALSO
-* Event_Wheel, cl_event_wheel_unreg
-*********/
-
-
-/****f* Component Library: Event_Wheel/cl_event_wheel_unreg
-* NAME
-* cl_event_wheel_unreg
-*
-* DESCRIPTION
-* This function unregisters a client event from a Event_Wheel.
-*
-* SYNOPSIS
-*/
-void
-cl_event_wheel_unreg(
- IN cl_event_wheel_t* const p_event_wheel,
- IN uint64_t key );
-/*
-* PARAMETERS
-* p_event_wheel
-* [in] Pointer to a Event_Wheel.
-*
-* key
-* [in] The key used for registering the event
-*
-* RETURN VALUE
-* This function does not return a value.
-*
-* NOTES
-* After the event has aged it is automatically removed from
-* the event wheel. So it should only be invoked when the need arises
-* to remove existing events before they age.
-*
-* SEE ALSO
-* Event_Wheel, cl_event_wheel_reg
-*********/
-
-/****f* Component Library: Event_Wheel/cl_event_wheel_num_regs
-* NAME
-* cl_event_wheel_num_regs
-*
-* DESCRIPTION
-* This function returns the number of times an event was registered.
-*
-* SYNOPSIS
-*/
-uint32_t
-cl_event_wheel_num_regs(
- IN cl_event_wheel_t* const p_event_wheel,
- IN uint64_t key );
-/*
-* PARAMETERS
-* p_event_wheel
-* [in] Pointer to a Event_Wheel.
-*
-* key
-* [in] The key used for registering the event
-*
-* RETURN VALUE
-* The number of times the event was registered.
-* 0 if never registered or eventually aged.
-*
-* SEE ALSO
-* Event_Wheel, cl_event_wheel_reg, cl_event_wheel_unreg
-*********/
-
-END_C_DECLS
-
-#endif /* !defined(_CL_EVENT_WHEEL_H_) */
+++ /dev/null
-/*
- * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2006 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under the OpenIB.org BSD license
- * below:
- *
- * Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the following
- * conditions are met:
- *
- * - Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the following
- * disclaimer.
- *
- * - Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * $Id$
- */
-
-
-/*
- * Abstract:
- * Declaration of osm_drop_mgr_t.
- * This object represents the Drop Manager object.
- * This object is part of the OpenSM family of objects.
- *
- * Environment:
- * Linux User Mode
- *
- * $Revision: 1.4 $
- */
-
-#ifndef _OSM_DROP_MGR_H_
-#define _OSM_DROP_MGR_H_
-
-#include <complib/cl_passivelock.h>
-#include <opensm/osm_base.h>
-#include <opensm/osm_madw.h>
-#include <opensm/osm_subnet.h>
-#include <opensm/osm_req.h>
-#include <opensm/osm_log.h>
-
-#ifdef __cplusplus
-# define BEGIN_C_DECLS extern "C" {
-# define END_C_DECLS }
-#else /* !__cplusplus */
-# define BEGIN_C_DECLS
-# define END_C_DECLS
-#endif /* __cplusplus */
-
-BEGIN_C_DECLS
-
-/****h* OpenSM/Drop Manager
-* NAME
-* Drop Manager
-*
-* DESCRIPTION
-* The Drop Manager object encapsulates the information
-* needed to receive the SwitchInfo attribute from a node.
-*
-* The Drop Manager object is thread safe.
-*
-* This object should be treated as opaque and should be
-* manipulated only through the provided functions.
-*
-* AUTHOR
-* Steve King, Intel
-*
-*********/
-
-/****s* OpenSM: Drop Manager/osm_drop_mgr_t
-* NAME
-* osm_drop_mgr_t
-*
-* DESCRIPTION
-* Drop Manager structure.
-*
-* This object should be treated as opaque and should
-* be manipulated only through the provided functions.
-*
-* SYNOPSIS
-*/
-typedef struct _osm_drop_mgr
-{
- osm_subn_t *p_subn;
- osm_log_t *p_log;
- osm_req_t *p_req;
- cl_plock_t *p_lock;
-
-} osm_drop_mgr_t;
-/*
-* FIELDS
-* p_subn
-* Pointer to the Subnet object for this subnet.
-*
-* p_log
-* Pointer to the log object.
-*
-* p_req
-* Pointer to the Request object.
-*
-* p_lock
-* Pointer to the serializing lock.
-*
-* SEE ALSO
-* Drop Manager object
-*********/
-
-/****f* OpenSM: Drop Manager/osm_drop_mgr_construct
-* NAME
-* osm_drop_mgr_construct
-*
-* DESCRIPTION
-* This function constructs a Drop Manager object.
-*
-* SYNOPSIS
-*/
-void osm_drop_mgr_construct(
- IN osm_drop_mgr_t* const p_mgr );
-/*
-* PARAMETERS
-* p_mgr
-* [in] Pointer to a Drop Manager object to construct.
-*
-* RETURN VALUE
-* This function does not return a value.
-*
-* NOTES
-* Allows calling osm_drop_mgr_init, osm_drop_mgr_destroy
-*
-* Calling osm_drop_mgr_construct is a prerequisite to calling any other
-* method except osm_drop_mgr_init.
-*
-* SEE ALSO
-* Drop Manager object, osm_drop_mgr_init,
-* osm_drop_mgr_destroy
-*********/
-
-/****f* OpenSM: Drop Manager/osm_drop_mgr_destroy
-* NAME
-* osm_drop_mgr_destroy
-*
-* DESCRIPTION
-* The osm_drop_mgr_destroy function destroys the object, releasing
-* all resources.
-*
-* SYNOPSIS
-*/
-void osm_drop_mgr_destroy(
- IN osm_drop_mgr_t* const p_mgr );
-/*
-* PARAMETERS
-* p_mgr
-* [in] Pointer to the object to destroy.
-*
-* RETURN VALUE
-* This function does not return a value.
-*
-* NOTES
-* Performs any necessary cleanup of the specified
-* Drop Manager object.
-* Further operations should not be attempted on the destroyed object.
-* This function should only be called after a call to
-* osm_drop_mgr_construct or osm_drop_mgr_init.
-*
-* SEE ALSO
-* Drop Manager object, osm_drop_mgr_construct,
-* osm_drop_mgr_init
-*********/
-
-/****f* OpenSM: Drop Manager/osm_drop_mgr_init
-* NAME
-* osm_drop_mgr_init
-*
-* DESCRIPTION
-* The osm_drop_mgr_init function initializes a
-* Drop Manager object for use.
-*
-* SYNOPSIS
-*/
-ib_api_status_t osm_drop_mgr_init(
- IN osm_drop_mgr_t* const p_mgr,
- IN osm_subn_t* const p_subn,
- IN osm_log_t* const p_log,
- IN osm_req_t* const p_req,
- IN cl_plock_t* const p_lock );
-/*
-* PARAMETERS
-* p_mgr
-* [in] Pointer to an osm_drop_mgr_t object to initialize.
-*
-* p_subn
-* [in] Pointer to the Subnet object for this subnet.
-*
-* p_log
-* [in] Pointer to the log object.
-*
-* p_req
-* [in] Pointer to an osm_req_t object.
-*
-* p_lock
-* [in] Pointer to the OpenSM serializing lock.
-*
-* RETURN VALUES
-* IB_SUCCESS if the Drop Manager object was initialized
-* successfully.
-*
-* NOTES
-* Allows calling other Drop Manager methods.
-*
-* SEE ALSO
-* Drop Manager object, osm_drop_mgr_construct,
-* osm_drop_mgr_destroy
-*********/
-
-/****f* OpenSM: Drop Manager/osm_drop_mgr_process
-* NAME
-* osm_drop_mgr_process
-*
-* DESCRIPTION
-* Process the SwitchInfo attribute.
-*
-* SYNOPSIS
-*/
-void osm_drop_mgr_process(
- IN const osm_drop_mgr_t* const p_mgr );
-/*
-* PARAMETERS
-* p_mgr
-* [in] Pointer to an osm_drop_mgr_t object.
-*
-* RETURN VALUES
-* None
-*
-* NOTES
-* This function processes a SwitchInfo attribute.
-*
-* SEE ALSO
-* Drop Manager, Switch Info Response Controller
-*********/
-
-END_C_DECLS
-
-#endif /* _OSM_DROP_MGR_H_ */
-
+++ /dev/null
-/*
- * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2006 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under the OpenIB.org BSD license
- * below:
- *
- * Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the following
- * conditions are met:
- *
- * - Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the following
- * disclaimer.
- *
- * - Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * $Id$
- */
-
-
-/*
- * Abstract:
- * Declaration of osm_fwd_tbl_t.
- * This object represents a unicast forwarding table.
- * This object is part of the OpenSM family of objects.
- *
- * Environment:
- * Linux User Mode
- *
- * $Revision: 1.4 $
- */
-
-#ifndef _OSM_FWD_TBL_H_
-#define _OSM_FWD_TBL_H_
-
-#include <iba/ib_types.h>
-#include <opensm/osm_base.h>
-#include <opensm/osm_rand_fwd_tbl.h>
-#include <opensm/osm_lin_fwd_tbl.h>
-
-#ifdef __cplusplus
-# define BEGIN_C_DECLS extern "C" {
-# define END_C_DECLS }
-#else /* !__cplusplus */
-# define BEGIN_C_DECLS
-# define END_C_DECLS
-#endif /* __cplusplus */
-
-BEGIN_C_DECLS
-
-/****h* OpenSM/Forwarding Table
-* NAME
-* Forwarding Table
-*
-* DESCRIPTION
-* The Forwarding Table objects encapsulate the information
-* needed by the OpenSM to manage forwarding tables. The OpenSM
-* allocates one Forwarding Table object per switch in the
-* IBA subnet.
-*
-* The Forwarding Table objects are not thread safe, thus
-* callers must provide serialization.
-*
-* AUTHOR
-* Steve King, Intel
-*
-*********/
-
-/****s* OpenSM: Forwarding Table/osm_fwd_tbl_t
-* NAME
-* osm_fwd_tbl_t
-*
-* DESCRIPTION
-* Forwarding Table structure. This object hides the type
-* of fowarding table (linear or random) actually used by
-* the switch.
-*
-* This object should be treated as opaque and should
-* be manipulated only through the provided functions.
-*
-* SYNOPSIS
-*/
-typedef struct _osm_fwd_tbl_t
-{
- osm_rand_fwd_tbl_t *p_rnd_tbl;
- osm_lin_fwd_tbl_t *p_lin_tbl;
-
-} osm_fwd_tbl_t;
-/*
-* FIELDS
-* p_rnd_tbl
-* Pointer to the switch's Random Forwarding Table object.
-* If the switch does not use a Random Forwarding Table,
-* then this pointer is NULL.
-*
-* p_lin_tbl
-* Pointer to the switch's Linear Forwarding Table object.
-* If the switch does not use a Linear Forwarding Table,
-* then this pointer is NULL.
-*
-* SEE ALSO
-* Forwarding Table object, Random Forwarding Table object.
-*********/
-
-/****f* OpenSM: Forwarding Table/osm_fwd_tbl_init
-* NAME
-* osm_fwd_tbl_init
-*
-* DESCRIPTION
-* Initializes a Forwarding Table object.
-*
-* SYNOPSIS
-*/
-ib_api_status_t
-osm_fwd_tbl_init(
- IN osm_fwd_tbl_t* const p_tbl,
- IN const ib_switch_info_t* const p_si );
-/*
-* PARAMETERS
-* p_tbl
-* [in] Pointer to the Forwarding Table object.
-*
-* p_si
-* [in] Pointer to the SwitchInfo attribute of the associated
-* switch.
-*
-* RETURN VALUE
-* IB_SUCCESS if the operation is successful.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* OpenSM: Forwarding Table/osm_fwd_tbl_destroy
-* NAME
-* osm_fwd_tbl_destroy
-*
-* DESCRIPTION
-* Destroys a Forwarding Table object.
-*
-* SYNOPSIS
-*/
-void
-osm_fwd_tbl_destroy(
- IN osm_fwd_tbl_t* const p_tbl );
-/*
-* PARAMETERS
-* p_tbl
-* [in] Pointer to the Forwarding Table object.
-*
-* RETURN VALUE
-* None.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* OpenSM: Forwarding Table/osm_fwd_tbl_get
-* NAME
-* osm_fwd_tbl_get
-*
-* DESCRIPTION
-* Returns the port that routes the specified LID.
-*
-* SYNOPSIS
-*/
-static inline uint8_t
-osm_fwd_tbl_get(
- IN const osm_fwd_tbl_t* const p_tbl,
- IN uint16_t const lid_ho )
-{
- if( p_tbl->p_lin_tbl )
- return( osm_lin_fwd_tbl_get( p_tbl->p_lin_tbl, lid_ho ) );
- else
- return( osm_rand_fwd_tbl_get( p_tbl->p_rnd_tbl, lid_ho ) );
-}
-/*
-* PARAMETERS
-* p_tbl
-* [in] Pointer to the Forwarding Table object.
-*
-* lid_ho
-* [in] LID (host order) for which to find the route.
-*
-* RETURN VALUE
-* Returns the port that routes the specified LID.
-* IB_INVALID_PORT_NUM if the table does not have a route for this LID.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* OpenSM: Forwarding Table/osm_fwd_tbl_set
-* NAME
-* osm_fwd_tbl_set
-*
-* DESCRIPTION
-* Sets the port to route the specified LID.
-*
-* SYNOPSIS
-*/
-static inline void
-osm_fwd_tbl_set(
- IN osm_fwd_tbl_t* const p_tbl,
- IN const uint16_t lid_ho,
- IN const uint8_t port )
-{
- CL_ASSERT( p_tbl );
- if( p_tbl->p_lin_tbl )
- osm_lin_fwd_tbl_set( p_tbl->p_lin_tbl, lid_ho, port );
- else
- osm_rand_fwd_tbl_set( p_tbl->p_rnd_tbl, lid_ho, port );
-}
-/*
-* PARAMETERS
-* p_tbl
-* [in] Pointer to the Forwarding Table object.
-*
-* lid_ho
-* [in] LID value (host order) for which to set the route.
-*
-* port
-* [in] Port to route the specified LID value.
-*
-* RETURN VALUE
-* None.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* OpenSM: Forwarding Table/osm_fwd_tbl_set_block
-* NAME
-* osm_fwd_tbl_set_block
-*
-* DESCRIPTION
-* Copies the specified block into the Forwarding Table.
-*
-* SYNOPSIS
-*/
-static inline ib_api_status_t
-osm_fwd_tbl_set_block(
- IN osm_fwd_tbl_t* const p_tbl,
- IN const uint8_t* const p_block,
- IN const uint32_t block_num )
-{
- CL_ASSERT( p_tbl );
- if( p_tbl->p_lin_tbl )
- return( osm_lin_fwd_tbl_set_block( p_tbl->p_lin_tbl,
- p_block, block_num ) );
- else
- return( osm_rand_fwd_tbl_set_block( p_tbl->p_rnd_tbl,
- p_block, block_num ) );
-}
-/*
-* PARAMETERS
-* p_tbl
-* [in] Pointer to the Forwarding Table object.
-*
-* RETURN VALUE
-* None.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* OpenSM: Forwarding Table/osm_fwd_tbl_get_size
-* NAME
-* osm_fwd_tbl_get_size
-*
-* DESCRIPTION
-* Returns the number of entries available in the forwarding table.
-*
-* SYNOPSIS
-*/
-static inline uint16_t
-osm_fwd_tbl_get_size(
- IN const osm_fwd_tbl_t* const p_tbl )
-{
- CL_ASSERT( p_tbl );
- if( p_tbl->p_lin_tbl )
- return( osm_lin_fwd_tbl_get_size( p_tbl->p_lin_tbl ) );
- else
- return( osm_rand_fwd_tbl_get_size( p_tbl->p_rnd_tbl ) );
-}
-/*
-* PARAMETERS
-* p_tbl
-* [in] Pointer to the Forwarding Table object.
-*
-* RETURN VALUE
-* Returns the number of entries available in the forwarding table.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* OpenSM: Forwarding Table/osm_fwd_tbl_get_lids_per_block
-* NAME
-* osm_fwd_tbl_get_lids_per_block
-*
-* DESCRIPTION
-* Returns the number of LIDs per LID block.
-*
-* SYNOPSIS
-*/
-static inline uint16_t
-osm_fwd_tbl_get_lids_per_block(
- IN const osm_fwd_tbl_t* const p_tbl )
-{
- CL_ASSERT( p_tbl );
- if( p_tbl->p_lin_tbl )
- return( osm_lin_fwd_tbl_get_lids_per_block( p_tbl->p_lin_tbl ) );
- else
- return( osm_rand_fwd_tbl_get_lids_per_block( p_tbl->p_rnd_tbl ) );
-}
-/*
-* PARAMETERS
-* p_tbl
-* [in] Pointer to the Forwarding Table object.
-*
-* RETURN VALUE
-* Returns the number of LIDs per LID block.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* OpenSM: Forwarding Table/osm_fwd_tbl_get_max_block_id_in_use
-* NAME
-* osm_fwd_tbl_get_max_block_id_in_use
-*
-* DESCRIPTION
-* Returns the number of LIDs per LID block.
-*
-* SYNOPSIS
-*/
-static inline uint16_t
-osm_fwd_tbl_get_max_block_id_in_use(
- IN const osm_fwd_tbl_t* const p_tbl,
- IN const uint16_t lid_top_ho )
-{
- CL_ASSERT( p_tbl );
- if( p_tbl->p_lin_tbl )
- return( osm_lin_fwd_tbl_get_max_block_id_in_use(
- p_tbl->p_lin_tbl, lid_top_ho ) );
- else
- return( osm_rand_fwd_tbl_get_max_block_id_in_use(
- p_tbl->p_rnd_tbl, lid_top_ho ) );
-}
-/*
-* PARAMETERS
-* p_tbl
-* [in] Pointer to the Forwarding Table object.
-*
-* RETURN VALUE
-* Returns the number of LIDs per LID block.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-END_C_DECLS
-
-#endif /* _OSM_FWD_TBL_H_ */
-
+++ /dev/null
-/*
- * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2006 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under the OpenIB.org BSD license
- * below:
- *
- * Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the following
- * conditions are met:
- *
- * - Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the following
- * disclaimer.
- *
- * - Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * $Id$
- */
-
-
-/*
- * Abstract:
- * Declaration of osm_lft_rcv_t.
- * This object represents the LFT Receiver object.
- * This object is part of the OpenSM family of objects.
- *
- * Environment:
- * Linux User Mode
- *
- * $Revision: 1.4 $
- */
-
-#ifndef _OSM_LFT_RCV_H_
-#define _OSM_LFT_RCV_H_
-
-#include <complib/cl_passivelock.h>
-#include <opensm/osm_base.h>
-#include <opensm/osm_madw.h>
-#include <opensm/osm_subnet.h>
-#include <opensm/osm_log.h>
-
-#ifdef __cplusplus
-# define BEGIN_C_DECLS extern "C" {
-# define END_C_DECLS }
-#else /* !__cplusplus */
-# define BEGIN_C_DECLS
-# define END_C_DECLS
-#endif /* __cplusplus */
-
-BEGIN_C_DECLS
-
-/****h* OpenSM/LFT Receiver
-* NAME
-* LFT Receiver
-*
-* DESCRIPTION
-* The LFT Receiver object encapsulates the information
-* needed to receive the LFT attribute from a node.
-*
-* The LFT Receiver object is thread safe.
-*
-* This object should be treated as opaque and should be
-* manipulated only through the provided functions.
-*
-* AUTHOR
-* Steve King, Intel
-*
-*********/
-
-/****s* OpenSM: LFT Receiver/osm_lft_rcv_t
-* NAME
-* osm_lft_rcv_t
-*
-* DESCRIPTION
-* LFT Receiver structure.
-*
-* This object should be treated as opaque and should
-* be manipulated only through the provided functions.
-*
-* SYNOPSIS
-*/
-typedef struct _osm_lft_rcv
-{
- osm_subn_t *p_subn;
- osm_log_t *p_log;
- cl_plock_t *p_lock;
-
-} osm_lft_rcv_t;
-/*
-* FIELDS
-* p_subn
-* Pointer to the Subnet object for this subnet.
-*
-* p_log
-* Pointer to the log object.
-*
-* p_lock
-* Pointer to the serializing lock.
-*
-* SEE ALSO
-* LFT Receiver object
-*********/
-
-/****f* OpenSM: LFT Receiver/osm_lft_rcv_construct
-* NAME
-* osm_lft_rcv_construct
-*
-* DESCRIPTION
-* This function constructs a LFT Receiver object.
-*
-* SYNOPSIS
-*/
-void osm_lft_rcv_construct(
- IN osm_lft_rcv_t* const p_rcv );
-/*
-* PARAMETERS
-* p_rcv
-* [in] Pointer to a LFT Receiver object to construct.
-*
-* RETURN VALUE
-* This function does not return a value.
-*
-* NOTES
-* Allows calling osm_lft_rcv_init, osm_lft_rcv_destroy
-*
-* Calling osm_lft_rcv_construct is a prerequisite to calling any other
-* method except osm_lft_rcv_init.
-*
-* SEE ALSO
-* LFT Receiver object, osm_lft_rcv_init,
-* osm_lft_rcv_destroy
-*********/
-
-/****f* OpenSM: LFT Receiver/osm_lft_rcv_destroy
-* NAME
-* osm_lft_rcv_destroy
-*
-* DESCRIPTION
-* The osm_lft_rcv_destroy function destroys the object, releasing
-* all resources.
-*
-* SYNOPSIS
-*/
-void osm_lft_rcv_destroy(
- IN osm_lft_rcv_t* const p_rcv );
-/*
-* PARAMETERS
-* p_rcv
-* [in] Pointer to the object to destroy.
-*
-* RETURN VALUE
-* This function does not return a value.
-*
-* NOTES
-* Performs any necessary cleanup of the specified
-* LFT Receiver object.
-* Further operations should not be attempted on the destroyed object.
-* This function should only be called after a call to
-* osm_lft_rcv_construct or osm_lft_rcv_init.
-*
-* SEE ALSO
-* LFT Receiver object, osm_lft_rcv_construct,
-* osm_lft_rcv_init
-*********/
-
-/****f* OpenSM: LFT Receiver/osm_lft_rcv_init
-* NAME
-* osm_lft_rcv_init
-*
-* DESCRIPTION
-* The osm_lft_rcv_init function initializes a
-* LFT Receiver object for use.
-*
-* SYNOPSIS
-*/
-ib_api_status_t osm_lft_rcv_init(
- IN osm_lft_rcv_t* const p_rcv,
- IN osm_subn_t* const p_subn,
- IN osm_log_t* const p_log,
- IN cl_plock_t* const p_lock );
-/*
-* PARAMETERS
-* p_rcv
-* [in] Pointer to an osm_lft_rcv_t object to initialize.
-*
-* p_subn
-* [in] Pointer to the Subnet object for this subnet.
-*
-* p_log
-* [in] Pointer to the log object.
-*
-* p_lock
-* [in] Pointer to the OpenSM serializing lock.
-*
-* RETURN VALUES
-* CL_SUCCESS if the LFT Receiver object was initialized
-* successfully.
-*
-* NOTES
-* Allows calling other LFT Receiver methods.
-*
-* SEE ALSO
-* LFT Receiver object, osm_lft_rcv_construct,
-* osm_lft_rcv_destroy
-*********/
-
-/****f* OpenSM: LFT Receiver/osm_lft_rcv_process
-* NAME
-* osm_lft_rcv_process
-*
-* DESCRIPTION
-* Process the LFT attribute.
-*
-* SYNOPSIS
-*/
-void osm_lft_rcv_process(
- IN const osm_lft_rcv_t* const p_rcv,
- IN osm_madw_t* const p_madw );
-/*
-* PARAMETERS
-* p_rcv
-* [in] Pointer to an osm_lft_rcv_t object.
-*
-* p_madw
-* [in] Pointer to the MAD Wrapper containing the MAD
-* that contains the node's LFT attribute.
-*
-* RETURN VALUES
-* CL_SUCCESS if the LFT processing was successful.
-*
-* NOTES
-* This function processes a LFT attribute.
-*
-* SEE ALSO
-* LFT Receiver, Node Description Response Controller
-*********/
-
-END_C_DECLS
-
-#endif /* _OSM_LFT_RCV_H_ */
-
+++ /dev/null
-/*
- * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2006 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under the OpenIB.org BSD license
- * below:
- *
- * Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the following
- * conditions are met:
- *
- * - Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the following
- * disclaimer.
- *
- * - Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * $Id$
- */
-
-
-/*
- * Abstract:
- * Declaration of osm_lft_rcv_ctrl_t.
- * This object represents a controller that receives the IBA
- * LFT attribute from a node.
- * This object is part of the OpenSM family of objects.
- *
- * Environment:
- * Linux User Mode
- *
- * $Revision: 1.4 $
- */
-
-#ifndef _OSM_LFT_RCV_CTRL_H_
-#define _OSM_LFT_RCV_CTRL_H_
-
-#include <complib/cl_dispatcher.h>
-#include <opensm/osm_base.h>
-#include <opensm/osm_madw.h>
-#include <opensm/osm_lin_fwd_rcv.h>
-#include <opensm/osm_log.h>
-
-#ifdef __cplusplus
-# define BEGIN_C_DECLS extern "C" {
-# define END_C_DECLS }
-#else /* !__cplusplus */
-# define BEGIN_C_DECLS
-# define END_C_DECLS
-#endif /* __cplusplus */
-
-BEGIN_C_DECLS
-
-/****h* OpenSM/LFT Receive Controller
-* NAME
-* LFT Receive Controller
-*
-* DESCRIPTION
-* The LFT Receive Controller object
-* encapsulates the information
-* needed to receive the NodeDescription attribute from a node.
-*
-* The LFT Receive Controller object is thread safe.
-*
-* This object should be treated as opaque and should be
-* manipulated only through the provided functions.
-*
-* AUTHOR
-* Steve King, Intel
-*
-*********/
-
-/****s* OpenSM: LFT Receive Controller/osm_lft_rcv_ctrl_t
-* NAME
-* osm_lft_rcv_ctrl_t
-*
-* DESCRIPTION
-* LFT Receive Controller structure.
-*
-* This object should be treated as opaque and should
-* be manipulated only through the provided functions.
-*
-* SYNOPSIS
-*/
-typedef struct _osm_lft_rcv_ctrl
-{
- osm_lft_rcv_t *p_rcv;
- osm_log_t *p_log;
- cl_dispatcher_t *p_disp;
- cl_disp_reg_handle_t h_disp;
-
-} osm_lft_rcv_ctrl_t;
-/*
-* FIELDS
-* p_rcv
-* Pointer to the LFT Receiver object.
-*
-* p_log
-* Pointer to the log object.
-*
-* p_disp
-* Pointer to the Dispatcher.
-*
-* h_disp
-* Handle returned from dispatcher registration.
-*
-* SEE ALSO
-* LFT Receive Controller object
-*********/
-
-/****f* OpenSM: LFT Receive Controller/osm_lft_rcv_ctrl_construct
-* NAME
-* osm_lft_rcv_ctrl_construct
-*
-* DESCRIPTION
-* This function constructs a LFT Receive Controller object.
-*
-* SYNOPSIS
-*/
-void
-osm_lft_rcv_ctrl_construct(
- IN osm_lft_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-* p_ctrl
-* [in] Pointer to a LFT Receive Controller object to construct.
-*
-* RETURN VALUE
-* This function does not return a value.
-*
-* NOTES
-* Allows calling osm_lft_rcv_ctrl_init, osm_lft_rcv_ctrl_destroy
-*
-* Calling osm_lft_rcv_ctrl_construct is a prerequisite to calling any other
-* method except osm_lft_rcv_ctrl_init.
-*
-* SEE ALSO
-* LFT Receive Controller object, osm_lft_rcv_ctrl_init,
-* osm_lft_rcv_ctrl_destroy
-*********/
-
-/****f* OpenSM: LFT Receive Controller/osm_lft_rcv_ctrl_destroy
-* NAME
-* osm_lft_rcv_ctrl_destroy
-*
-* DESCRIPTION
-* The osm_lft_rcv_ctrl_destroy function destroys the object, releasing
-* all resources.
-*
-* SYNOPSIS
-*/
-void
-osm_lft_rcv_ctrl_destroy(
- IN osm_lft_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-* p_ctrl
-* [in] Pointer to the object to destroy.
-*
-* RETURN VALUE
-* This function does not return a value.
-*
-* NOTES
-* Performs any necessary cleanup of the specified
-* LFT Receive Controller object.
-* Further operations should not be attempted on the destroyed object.
-* This function should only be called after a call to
-* osm_lft_rcv_ctrl_construct or osm_lft_rcv_ctrl_init.
-*
-* SEE ALSO
-* LFT Receive Controller object, osm_lft_rcv_ctrl_construct,
-* osm_lft_rcv_ctrl_init
-*********/
-
-/****f* OpenSM: LFT Receive Controller/osm_lft_rcv_ctrl_init
-* NAME
-* osm_lft_rcv_ctrl_init
-*
-* DESCRIPTION
-* The osm_lft_rcv_ctrl_init function initializes a
-* LFT Receive Controller object for use.
-*
-* SYNOPSIS
-*/
-ib_api_status_t
-osm_lft_rcv_ctrl_init(
- IN osm_lft_rcv_ctrl_t* const p_ctrl,
- IN osm_lft_rcv_t* const p_rcv,
- IN osm_log_t* const p_log,
- IN cl_dispatcher_t* const p_disp );
-/*
-* PARAMETERS
-* p_ctrl
-* [in] Pointer to an osm_lft_rcv_ctrl_t object to initialize.
-*
-* p_rcv
-* [in] Pointer to an osm_lft_rcv_t object.
-*
-* p_log
-* [in] Pointer to the log object.
-*
-* p_disp
-* [in] Pointer to the OpenSM central Dispatcher.
-*
-* RETURN VALUES
-* CL_SUCCESS if the LFT Receive Controller object was initialized
-* successfully.
-*
-* NOTES
-* Allows calling other LFT Receive Controller methods.
-*
-* SEE ALSO
-* LFT Receive Controller object, osm_lft_rcv_ctrl_construct,
-* osm_lft_rcv_ctrl_destroy
-*********/
-
-END_C_DECLS
-
-#endif /* OSM_LFT_RCV_CTRL_H_ */
-
+++ /dev/null
-/*
- * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2006 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under the OpenIB.org BSD license
- * below:
- *
- * Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the following
- * conditions are met:
- *
- * - Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the following
- * disclaimer.
- *
- * - Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * $Id$
- */
-
-
-/*
- * Abstract:
- * Declaration of osm_lin_fwd_tbl_t.
- * This object represents a linear forwarding table.
- * This object is part of the OpenSM family of objects.
- *
- * Environment:
- * Linux User Mode
- *
- * $Revision: 1.4 $
- */
-
-#ifndef _OSM_LIN_FWD_TBL_H_
-#define _OSM_LIN_FWD_TBL_H_
-
-#include <string.h>
-#include <iba/ib_types.h>
-#include <opensm/osm_base.h>
-
-#ifdef __cplusplus
-# define BEGIN_C_DECLS extern "C" {
-# define END_C_DECLS }
-#else /* !__cplusplus */
-# define BEGIN_C_DECLS
-# define END_C_DECLS
-#endif /* __cplusplus */
-
-BEGIN_C_DECLS
-
-/****h* OpenSM/Linear Forwarding Table
-* NAME
-* Linear Forwarding Table
-*
-* DESCRIPTION
-* The Linear Forwarding Table objects encapsulate the information
-* needed by the OpenSM to manage linear forwarding tables. The OpenSM
-* allocates one Linear Forwarding Table object per switch in the
-* IBA subnet, if that switch uses a linear table.
-*
-* The Linear Forwarding Table objects are not thread safe, thus
-* callers must provide serialization.
-*
-* AUTHOR
-* Steve King, Intel
-*
-*********/
-
-/****s* OpenSM: Forwarding Table/osm_lin_fwd_tbl_t
-* NAME
-* osm_lin_fwd_tbl_t
-*
-* DESCRIPTION
-* Linear Forwarding Table structure.
-*
-* Callers may directly access this object.
-*
-* SYNOPSIS
-*/
-typedef struct _osm_lin_fwd_tbl
-{
- uint16_t size;
- uint8_t port_tbl[1];
-
-} osm_lin_fwd_tbl_t;
-/*
-* FIELDS
-* Size
-* Number of entries in the linear forwarding table. This value
-* is taken from the SwitchInfo attribute.
-*
-* port_tbl
-* The array that specifies the port number which routes the
-* corresponding LID. Index is by LID.
-*
-* SEE ALSO
-* Forwarding Table object, Random Forwarding Table object.
-*********/
-
-/****f* OpenSM: Forwarding Table/osm_lin_tbl_new
-* NAME
-* osm_lin_tbl_new
-*
-* DESCRIPTION
-* This function creates and initializes a Linear Forwarding Table object.
-*
-* SYNOPSIS
-*/
-osm_lin_fwd_tbl_t*
-osm_lin_tbl_new(
- IN uint16_t const size );
-/*
-* PARAMETERS
-* size
-* [in] Number of entries in the Linear Forwarding Table.
-*
-* RETURN VALUE
-* On success, returns a pointer to a new Linear Forwarding Table object
-* of the specified size.
-* NULL otherwise.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* OpenSM: Forwarding Table/osm_lin_tbl_delete
-* NAME
-* osm_lin_tbl_delete
-*
-* DESCRIPTION
-* This destroys and deallocates a Linear Forwarding Table object.
-*
-* SYNOPSIS
-*/
-void
-osm_lin_tbl_delete(
- IN osm_lin_fwd_tbl_t** const pp_tbl );
-/*
-* PARAMETERS
-* pp_tbl
-* [in] Pointer a Pointer to the Linear Forwarding Table object.
-*
-* RETURN VALUE
-* On success, returns a pointer to a new Linear Forwarding Table object
-* of the specified size.
-* NULL otherwise.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* OpenSM: Forwarding Table/osm_lin_fwd_tbl_set
-* NAME
-* osm_lin_fwd_tbl_set
-*
-* DESCRIPTION
-* Sets the port to route the specified LID.
-*
-* SYNOPSIS
-*/
-static inline void
-osm_lin_fwd_tbl_set(
- IN osm_lin_fwd_tbl_t* const p_tbl,
- IN const uint16_t lid_ho,
- IN const uint8_t port )
-{
- CL_ASSERT( lid_ho < p_tbl->size );
- if( lid_ho < p_tbl->size )
- p_tbl->port_tbl[lid_ho] = port;
-}
-/*
-* PARAMETERS
-* p_tbl
-* [in] Pointer to the Linear Forwarding Table object.
-*
-* lid_ho
-* [in] LID value (host order) for which to set the route.
-*
-* port
-* [in] Port to route the specified LID value.
-*
-* RETURN VALUE
-* None.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* OpenSM: Forwarding Table/osm_lin_fwd_tbl_get
-* NAME
-* osm_lin_fwd_tbl_get
-*
-* DESCRIPTION
-* Returns the port that routes the specified LID.
-*
-* SYNOPSIS
-*/
-static inline uint8_t
-osm_lin_fwd_tbl_get(
- IN const osm_lin_fwd_tbl_t* const p_tbl,
- IN const uint16_t lid_ho )
-{
- if( lid_ho < p_tbl->size )
- return( p_tbl->port_tbl[lid_ho] );
- else
- return( 0xFF );
-}
-/*
-* PARAMETERS
-* p_tbl
-* [in] Pointer to the Linear Forwarding Table object.
-*
-* lid_ho
-* [in] LID value (host order) for which to get the route.
-*
-* RETURN VALUE
-* Returns the port that routes the specified LID.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* OpenSM: Forwarding Table/osm_lin_fwd_tbl_get_size
-* NAME
-* osm_lin_fwd_tbl_get_size
-*
-* DESCRIPTION
-* Returns the number of entries available in the forwarding table.
-*
-* SYNOPSIS
-*/
-static inline uint16_t
-osm_lin_fwd_tbl_get_size(
- IN const osm_lin_fwd_tbl_t* const p_tbl )
-{
- return( p_tbl->size );
-}
-/*
-* PARAMETERS
-* p_tbl
-* [in] Pointer to the Forwarding Table object.
-*
-* RETURN VALUE
-* Returns the number of entries available in the forwarding table.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* OpenSM: Forwarding Table/osm_lin_fwd_tbl_get_lids_per_block
-* NAME
-* osm_lin_fwd_tbl_get_lids_per_block
-*
-* DESCRIPTION
-* Returns the number of LIDs per LID block.
-*
-* SYNOPSIS
-*/
-static inline uint16_t
-osm_lin_fwd_tbl_get_lids_per_block(
- IN const osm_lin_fwd_tbl_t* const p_tbl )
-{
- UNUSED_PARAM( p_tbl );
- return( 64 );
-}
-/*
-* PARAMETERS
-* p_tbl
-* [in] Pointer to the Forwarding Table object.
-*
-* RETURN VALUE
-* Returns the number of LIDs per LID block.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* OpenSM: Forwarding Table/osm_lin_fwd_tbl_get_max_block_id_in_use
-* NAME
-* osm_lin_fwd_tbl_get_max_block_id_in_use
-*
-* DESCRIPTION
-* Returns the maximum block ID in actual use by the forwarding table.
-*
-* SYNOPSIS
-*/
-static inline uint16_t
-osm_lin_fwd_tbl_get_max_block_id_in_use(
- IN const osm_lin_fwd_tbl_t* const p_tbl,
- IN const uint16_t lid_top_ho )
-{
- return( (uint16_t)(lid_top_ho /
- osm_lin_fwd_tbl_get_lids_per_block( p_tbl ) ) );
-}
-/*
-* PARAMETERS
-* p_tbl
-* [in] Pointer to the Forwarding Table object.
-*
-* RETURN VALUE
-* Returns the maximum block ID in actual use by the forwarding table.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* OpenSM: Forwarding Table/osm_lin_fwd_tbl_set_block
-* NAME
-* osm_lin_fwd_tbl_set_block
-*
-* DESCRIPTION
-* Copies the specified block into the Linear Forwarding Table.
-*
-* SYNOPSIS
-*/
-static inline ib_api_status_t
-osm_lin_fwd_tbl_set_block(
- IN osm_lin_fwd_tbl_t* const p_tbl,
- IN const uint8_t* const p_block,
- IN const uint32_t block_num )
-{
- uint16_t lid_start;
- uint16_t num_lids;
-
- CL_ASSERT( p_tbl );
- CL_ASSERT( p_block );
-
- num_lids = osm_lin_fwd_tbl_get_lids_per_block( p_tbl );
- lid_start = (uint16_t)(block_num * num_lids);
-
- if( lid_start + num_lids > p_tbl->size )
- return( IB_INVALID_PARAMETER );
-
- memcpy( &p_tbl->port_tbl[lid_start], p_block, num_lids );
- return( IB_SUCCESS );
-}
-/*
-* PARAMETERS
-* p_tbl
-* [in] Pointer to the Linear Forwarding Table object.
-*
-* p_block
-* [in] Pointer to the Forwarding Table block.
-*
-* block_num
-* [in] Block number of this block.
-*
-* RETURN VALUE
-* None.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-END_C_DECLS
-
-#endif /* _OSM_LIN_FWD_TBL_H_ */
-
+++ /dev/null
-/*
- * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2006 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under the OpenIB.org BSD license
- * below:
- *
- * Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the following
- * conditions are met:
- *
- * - Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the following
- * disclaimer.
- *
- * - Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * $Id$
- */
-
-
-/*
- * Abstract:
- * Declaration of osm_link_mgr_t.
- * This object represents the Link Manager object.
- * This object is part of the OpenSM family of objects.
- *
- * Environment:
- * Linux User Mode
- *
- * $Revision: 1.4 $
- */
-
-#ifndef _OSM_LINK_MGR_H_
-#define _OSM_LINK_MGR_H_
-
-#include <complib/cl_passivelock.h>
-#include <opensm/osm_base.h>
-#include <opensm/osm_madw.h>
-#include <opensm/osm_req.h>
-#include <opensm/osm_subnet.h>
-#include <opensm/osm_log.h>
-
-#ifdef __cplusplus
-# define BEGIN_C_DECLS extern "C" {
-# define END_C_DECLS }
-#else /* !__cplusplus */
-# define BEGIN_C_DECLS
-# define END_C_DECLS
-#endif /* __cplusplus */
-
-BEGIN_C_DECLS
-
-/****h* OpenSM/Link Manager
-* NAME
-* Link Manager
-*
-* DESCRIPTION
-* The Link Manager object encapsulates the information
-* needed to control unicast LID forwarding on the subnet.
-*
-* The Link Manager object is thread safe.
-*
-* This object should be treated as opaque and should be
-* manipulated only through the provided functions.
-*
-* AUTHOR
-* Steve King, Intel
-*
-*********/
-
-/****s* OpenSM: Link Manager/osm_link_mgr_t
-* NAME
-* osm_link_mgr_t
-*
-* DESCRIPTION
-* Link Manager structure.
-*
-* This object should be treated as opaque and should
-* be manipulated only through the provided functions.
-*
-* SYNOPSIS
-*/
-typedef struct _osm_link_mgr
-{
- osm_subn_t *p_subn;
- osm_req_t *p_req;
- osm_log_t *p_log;
- cl_plock_t *p_lock;
- boolean_t send_set_reqs;
-
-} osm_link_mgr_t;
-/*
-* FIELDS
-* p_subn
-* Pointer to the Subnet object for this subnet.
-*
-* p_req
-* Pointer to the Requester object sending SMPs.
-*
-* p_log
-* Pointer to the log object.
-*
-* p_lock
-* Pointer to the serializing lock.
-*
-* SEE ALSO
-* Link Manager object
-*********/
-
-/****f* OpenSM: Link Manager/osm_link_mgr_construct
-* NAME
-* osm_link_mgr_construct
-*
-* DESCRIPTION
-* This function constructs a Link Manager object.
-*
-* SYNOPSIS
-*/
-void
-osm_link_mgr_construct(
- IN osm_link_mgr_t* const p_mgr );
-/*
-* PARAMETERS
-* p_mgr
-* [in] Pointer to a Link Manager object to construct.
-*
-* RETURN VALUE
-* This function does not return a value.
-*
-* NOTES
-* Allows osm_link_mgr_destroy
-*
-* Calling osm_link_mgr_construct is a prerequisite to calling any other
-* method except osm_link_mgr_init.
-*
-* SEE ALSO
-* Link Manager object, osm_link_mgr_init,
-* osm_link_mgr_destroy
-*********/
-
-/****f* OpenSM: Link Manager/osm_link_mgr_destroy
-* NAME
-* osm_link_mgr_destroy
-*
-* DESCRIPTION
-* The osm_link_mgr_destroy function destroys the object, releasing
-* all resources.
-*
-* SYNOPSIS
-*/
-void
-osm_link_mgr_destroy(
- IN osm_link_mgr_t* const p_mgr );
-/*
-* PARAMETERS
-* p_mgr
-* [in] Pointer to the object to destroy.
-*
-* RETURN VALUE
-* This function does not return a value.
-*
-* NOTES
-* Performs any necessary cleanup of the specified
-* Link Manager object.
-* Further operations should not be attempted on the destroyed object.
-* This function should only be called after a call to
-* osm_link_mgr_construct or osm_link_mgr_init.
-*
-* SEE ALSO
-* Link Manager object, osm_link_mgr_construct,
-* osm_link_mgr_init
-*********/
-
-/****f* OpenSM: Link Manager/osm_link_mgr_init
-* NAME
-* osm_link_mgr_init
-*
-* DESCRIPTION
-* The osm_link_mgr_init function initializes a
-* Link Manager object for use.
-*
-* SYNOPSIS
-*/
-ib_api_status_t
-osm_link_mgr_init(
- IN osm_link_mgr_t* const p_mgr,
- IN osm_req_t* const p_req,
- IN osm_subn_t* const p_subn,
- IN osm_log_t* const p_log,
- IN cl_plock_t* const p_lock );
-/*
-* PARAMETERS
-* p_mgr
-* [in] Pointer to an osm_link_mgr_t object to initialize.
-*
-* p_req
-* [in] Pointer to the attribute Requester object.
-*
-* p_subn
-* [in] Pointer to the Subnet object for this subnet.
-*
-* p_log
-* [in] Pointer to the log object.
-*
-* p_lock
-* [in] Pointer to the OpenSM serializing lock.
-*
-* RETURN VALUES
-* IB_SUCCESS if the Link Manager object was initialized
-* successfully.
-*
-* NOTES
-* Allows calling other Link Manager methods.
-*
-* SEE ALSO
-* Link Manager object, osm_link_mgr_construct,
-* osm_link_mgr_destroy
-*********/
-
-/****f* OpenSM: Link Manager/osm_link_mgr_process
-* NAME
-* osm_link_mgr_process
-*
-* DESCRIPTION
-* Processes all ports in the subnet per the link manager command.
-*
-* SYNOPSIS
-*/
-osm_signal_t
-osm_link_mgr_process(
- IN osm_link_mgr_t* const p_mgr,
- IN const uint8_t link_state );
-/*
-* PARAMETERS
-* p_mgr
-* [in] Pointer to an osm_link_mgr_t object.
-*
-* link_state
-* [in] state to which to the set the port.
-*
-*
-* RETURN VALUES
-* Returns the appropriate signal to the caller:
-* OSM_SIGNAL_DONE - operation is complete
-* OSM_SIGNAL_DONE_PENDING - local operations are complete, but
-* transactions are still pending on the wire.
-*
-* NOTES
-*
-* SEE ALSO
-* Link Manager, Node Info Response Controller
-*********/
-
-END_C_DECLS
-
-#endif /* _OSM_LINK_MGR_H_ */
-
+++ /dev/null
-/*
- * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2006 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under the OpenIB.org BSD license
- * below:
- *
- * Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the following
- * conditions are met:
- *
- * - Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the following
- * disclaimer.
- *
- * - Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * $Id$
- */
-
-
-/*
- * Abstract:
- * Declaration of osm_lid_matrix_t.
- * This object represents a two dimensional array of port numbers
- * and LID values.
- * This object is part of the OpenSM family of objects.
- *
- * Environment:
- * Linux User Mode
- *
- * $Revision: 1.5 $
- */
-
-
-#ifndef _OSM_MATRIX_H_
-#define _OSM_MATRIX_H_
-
-#include <iba/ib_types.h>
-#include <complib/cl_vector.h>
-#include <opensm/osm_base.h>
-
-#ifdef __cplusplus
-# define BEGIN_C_DECLS extern "C" {
-# define END_C_DECLS }
-#else /* !__cplusplus */
-# define BEGIN_C_DECLS
-# define END_C_DECLS
-#endif /* __cplusplus */
-
-BEGIN_C_DECLS
-
-/****h* OpenSM/LID Matrix
-* NAME
-* LID Matrix
-*
-* DESCRIPTION
-* The LID Matrix object encapsulates the information needed by the
-* OpenSM to manage fabric routes. It is a two dimensional array
-* index by LID value and Port Number. Each element contains the
-* number of hops from that Port Number to the LID.
-* Every Switch object contains a LID Matrix.
-*
-* The LID Matrix is not thread safe, thus callers must provide
-* serialization.
-*
-* This object should be treated as opaque and should be
-* manipulated only through the provided functions.
-*
-* AUTHOR
-* Steve King, Intel
-*
-*********/
-
-/****s* OpenSM: LID Matrix/osm_lid_matrix_t
-* NAME
-* osm_lid_matrix_t
-*
-* DESCRIPTION
-*
-* The LID Matrix object encapsulates the information needed by the
-* OpenSM to manage fabric routes. It is a two dimensional array
-* index by LID value and Port Number. Each element contains the
-* number of hops from that Port Number to the LID.
-* Every Switch object contains a LID Matrix.
-*
-* The LID Matrix is not thread safe, thus callers must provide
-* serialization.
-*
-* The num_ports index into the matrix serves a special purpose, in that it
-* contains the shortest hop path for that LID through any port.
-*
-* This object should be treated as opaque and should be
-* manipulated only through the provided functions.
-*
-* SYNOPSIS
-*/
-typedef struct _osm_lid_matrix_t
-{
- cl_vector_t lid_vec;
- uint8_t num_ports;
-
-} osm_lid_matrix_t;
-/*
-* FIELDS
-* lid_vec
-* Vector (indexed by LID) of port arrays (indexed by port number)
-*
-* num_ports
-* Number of ports at each entry in the LID vector.
-*
-* SEE ALSO
-*********/
-
-/****f* OpenSM: LID Matrix/osm_lid_matrix_construct
-* NAME
-* osm_lid_matrix_construct
-*
-* DESCRIPTION
-* This function constructs a LID Matrix object.
-*
-* SYNOPSIS
-*/
-static inline void
-osm_lid_matrix_construct(
- IN osm_lid_matrix_t* const p_lmx )
-{
- p_lmx->num_ports = 0;
- cl_vector_construct( &p_lmx->lid_vec );
-}
-/*
-* PARAMETERS
-* p_lmx
-* [in] Pointer to a LID Matrix object to construct.
-*
-* RETURN VALUE
-* This function does not return a value.
-*
-* NOTES
-* Allows calling osm_lid_matrix_init, osm_lid_matrix_destroy
-*
-* Calling osm_lid_matrix_construct is a prerequisite to calling any other
-* method except osm_lid_matrix_init.
-*
-* SEE ALSO
-* LID Matrix object, osm_lid_matrix_init, osm_lid_matrix_destroy
-*********/
-
-/****f* OpenSM: LID Matrix/osm_lid_matrix_destroy
-* NAME
-* osm_lid_matrix_destroy
-*
-* DESCRIPTION
-* The osm_lid_matrix_destroy function destroys a node, releasing
-* all resources.
-*
-* SYNOPSIS
-*/
-void osm_lid_matrix_destroy(
- IN osm_lid_matrix_t* const p_lmx );
-/*
-* PARAMETERS
-* p_lmx
-* [in] Pointer to a LID Matrix object to destroy.
-*
-* RETURN VALUE
-* This function does not return a value.
-*
-* NOTES
-* Performs any necessary cleanup of the specified LID Matrix object.
-* Further operations should not be attempted on the destroyed object.
-* This function should only be called after a call to osm_lid_matrix_construct or
-* osm_lid_matrix_init.
-*
-* SEE ALSO
-* LID Matrix object, osm_lid_matrix_construct, osm_lid_matrix_init
-*********/
-
-/****f* OpenSM: LID Matrix/osm_lid_matrix_init
-* NAME
-* osm_lid_matrix_init
-*
-* DESCRIPTION
-* Initializes a LID Matrix object for use.
-*
-* SYNOPSIS
-*/
-ib_api_status_t
-osm_lid_matrix_init(
- IN osm_lid_matrix_t* const p_lmx,
- IN const uint8_t num_ports );
-/*
-* PARAMETERS
-* p_lmx
-* [in] Pointer to an osm_lid_matrix_t object to initialize.
-*
-* num_ports
-* [in] Number of ports at each LID index. This value is fixed
-* at initialization time.
-*
-* RETURN VALUES
-* IB_SUCCESS on success
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* OpenSM: LID Matrix/osm_lid_matrix_get
-* NAME
-* osm_lid_matrix_get
-*
-* DESCRIPTION
-* Returns the hop count at the specified LID/Port intersection.
-*
-* SYNOPSIS
-*/
-static inline uint8_t
-osm_lid_matrix_get(
- IN const osm_lid_matrix_t* const p_lmx,
- IN const uint16_t lid_ho,
- IN const uint8_t port_num )
-{
- CL_ASSERT( port_num < p_lmx->num_ports );
- CL_ASSERT( lid_ho <cl_vector_get_size(&p_lmx->lid_vec) );
- return( ((uint8_t *)cl_vector_get_ptr(
- &p_lmx->lid_vec, lid_ho ))[port_num] );
-}
-/*
-* PARAMETERS
-* p_lmx
-* [in] Pointer to an osm_lid_matrix_t object.
-*
-* lid_ho
-* [in] LID value (host order) for which to return the hop count
-*
-* port_num
-* [in] Port number in the switch
-*
-* RETURN VALUES
-* Returns the hop count at the specified LID/Port intersection.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* OpenSM: LID Matrix/osm_lid_matrix_get_max_lid_ho
-* NAME
-* osm_lid_matrix_get_max_lid_ho
-*
-* DESCRIPTION
-* Returns the maximum LID (host order) value contained
-* in the matrix.
-*
-* SYNOPSIS
-*/
-static inline uint16_t
-osm_lid_matrix_get_max_lid_ho(
- IN const osm_lid_matrix_t* const p_lmx )
-{
- return( (uint16_t)(cl_vector_get_size( &p_lmx->lid_vec ) - 1 ) );
-}
-/*
-* PARAMETERS
-* p_lmx
-* [in] Pointer to an osm_lid_matrix_t object.
-*
-* RETURN VALUES
-* Returns the maximum LID (host order) value contained
-* in the matrix.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* OpenSM: LID Matrix/osm_lid_matrix_get_num_ports
-* NAME
-* osm_lid_matrix_get_num_ports
-*
-* DESCRIPTION
-* Returns the number of ports in this lid matrix.
-*
-* SYNOPSIS
-*/
-static inline uint8_t
-osm_lid_matrix_get_num_ports(
- IN const osm_lid_matrix_t* const p_lmx )
-{
- return( p_lmx->num_ports );
-}
-/*
-* PARAMETERS
-* p_lmx
-* [in] Pointer to an osm_lid_matrix_t object.
-*
-* RETURN VALUES
-* Returns the number of ports in this lid matrix.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* OpenSM: LID Matrix/osm_lid_matrix_get_least_hops
-* NAME
-* osm_lid_matrix_get_least_hops
-*
-* DESCRIPTION
-* Returns the least number of hops for specified lid
-*
-* SYNOPSIS
-*/
-static inline uint8_t
-osm_lid_matrix_get_least_hops(
- IN const osm_lid_matrix_t* const p_lmx,
- IN const uint16_t lid_ho )
-{
- if( lid_ho > osm_lid_matrix_get_max_lid_ho( p_lmx ) )
- return( OSM_NO_PATH );
-
- return( ((uint8_t *)cl_vector_get_ptr(
- &p_lmx->lid_vec, lid_ho ))[p_lmx->num_ports] );
-}
-/*
-* PARAMETERS
-* p_lmx
-* [in] Pointer to an osm_lid_matrix_t object.
-*
-* lid_ho
-* [in] LID (host order) for which to retrieve the shortest hop count.
-*
-* RETURN VALUES
-* Returns the least number of hops for specified lid
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* OpenSM: LID Matrix/osm_lid_matrix_set
-* NAME
-* osm_lid_matrix_set
-*
-* DESCRIPTION
-* Sets the hop count at the specified LID/Port intersection.
-*
-* SYNOPSIS
-*/
-cl_status_t
-osm_lid_matrix_set(
- IN osm_lid_matrix_t* const p_lmx,
- IN const uint16_t lid_ho,
- IN const uint8_t port_num,
- IN const uint8_t val );
-/*
-* PARAMETERS
-* p_lmx
-* [in] Pointer to an osm_lid_matrix_t object.
-*
-* lid_ho
-* [in] LID value (host order) to index into the vector.
-*
-* port_num
-* [in] port number index into the vector entry.
-*
-* val
-* [in] value (number of hops) to assign to this entry.
-*
-* RETURN VALUES
-* Returns the hop count at the specified LID/Port intersection.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* OpenSM: LID Matrix/osm_lid_matrix_set_min_lid_size
-* NAME
-* osm_lid_matrix_set_min_lid_size
-*
-* DESCRIPTION
-* Sets the size of the matrix to at least accomodate the
-* specified LID value (host ordered)
-*
-* SYNOPSIS
-*/
-static inline cl_status_t
-osm_lid_matrix_set_min_lid_size(
- IN osm_lid_matrix_t* const p_lmx,
- IN const uint16_t lid_ho )
-{
- return( cl_vector_set_min_size( &p_lmx->lid_vec, lid_ho + 1 ) );
-}
-/*
-* PARAMETERS
-* p_lmx
-* [in] Pointer to an osm_lid_matrix_t object.
-*
-* lid_ho
-* [in] Minimum LID value (host order) to accomodate.
-*
-* RETURN VALUES
-* Sets the size of the matrix to at least accomodate the
-* specified LID value (host ordered)
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* OpenSM: LID Matrix/osm_lid_matrix_clear
-* NAME
-* osm_lid_matrix_clear
-*
-* DESCRIPTION
-* Clears a LID Matrix object in anticipation of a rebuild.
-*
-* SYNOPSIS
-*/
-void
-osm_lid_matrix_clear(
- IN osm_lid_matrix_t* const p_lmx );
-/*
-* PARAMETERS
-* p_lmx
-* [in] Pointer to an osm_lid_matrix_t object to clear.
-*
-* RETURN VALUES
-* None.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-END_C_DECLS
-
-#endif /* _OSM_MATRIX_H_ */
-
+++ /dev/null
-/*
- * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2006 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under the OpenIB.org BSD license
- * below:
- *
- * Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the following
- * conditions are met:
- *
- * - Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the following
- * disclaimer.
- *
- * - Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * $Id$
- */
-
-
-/*
- * Abstract:
- * Declaration of osm_mft_rcv_t.
- * This object represents the Multicast Forwarding Table Receiver object.
- * This object is part of the OpenSM family of objects.
- *
- * Environment:
- * Linux User Mode
- *
- * $Revision: 1.4 $
- */
-
-#ifndef _OSM_MFT_RCV_H_
-#define _OSM_MFT_RCV_H_
-
-#include <complib/cl_passivelock.h>
-#include <opensm/osm_base.h>
-#include <opensm/osm_madw.h>
-#include <opensm/osm_subnet.h>
-#include <opensm/osm_log.h>
-
-#ifdef __cplusplus
-# define BEGIN_C_DECLS extern "C" {
-# define END_C_DECLS }
-#else /* !__cplusplus */
-# define BEGIN_C_DECLS
-# define END_C_DECLS
-#endif /* __cplusplus */
-
-BEGIN_C_DECLS
-
-/****h* OpenSM/MFT Receiver
-* NAME
-* MFT Receiver
-*
-* DESCRIPTION
-* The MFT Receiver object encapsulates the information
-* needed to receive the MFT attribute from a node.
-*
-* The MFT Receiver object is thread safe.
-*
-* This object should be treated as opaque and should be
-* manipulated only through the provided functions.
-*
-* AUTHOR
-* Steve King, Intel
-*
-*********/
-
-/****s* OpenSM: MFT Receiver/osm_mft_rcv_t
-* NAME
-* osm_mft_rcv_t
-*
-* DESCRIPTION
-* MFT Receiver structure.
-*
-* This object should be treated as opaque and should
-* be manipulated only through the provided functions.
-*
-* SYNOPSIS
-*/
-typedef struct _osm_mft_rcv
-{
- osm_subn_t *p_subn;
- osm_log_t *p_log;
- cl_plock_t *p_lock;
-
-} osm_mft_rcv_t;
-/*
-* FIELDS
-* p_subn
-* Pointer to the Subnet object for this subnet.
-*
-* p_log
-* Pointer to the log object.
-*
-* p_lock
-* Pointer to the serializing lock.
-*
-* SEE ALSO
-* MFT Receiver object
-*********/
-
-/****f* OpenSM: MFT Receiver/osm_mft_rcv_construct
-* NAME
-* osm_mft_rcv_construct
-*
-* DESCRIPTION
-* This function constructs a MFT Receiver object.
-*
-* SYNOPSIS
-*/
-void
-osm_mft_rcv_construct(
- IN osm_mft_rcv_t* const p_rcv );
-/*
-* PARAMETERS
-* p_rcv
-* [in] Pointer to a MFT Receiver object to construct.
-*
-* RETURN VALUE
-* This function does not return a value.
-*
-* NOTES
-* Allows calling osm_mft_rcv_init, osm_mft_rcv_destroy
-*
-* Calling osm_mft_rcv_construct is a prerequisite to calling any other
-* method except osm_mft_rcv_init.
-*
-* SEE ALSO
-* MFT Receiver object, osm_mft_rcv_init,
-* osm_mft_rcv_destroy
-*********/
-
-/****f* OpenSM: MFT Receiver/osm_mft_rcv_destroy
-* NAME
-* osm_mft_rcv_destroy
-*
-* DESCRIPTION
-* The osm_mft_rcv_destroy function destroys the object, releasing
-* all resources.
-*
-* SYNOPSIS
-*/
-void
-osm_mft_rcv_destroy(
- IN osm_mft_rcv_t* const p_rcv );
-/*
-* PARAMETERS
-* p_rcv
-* [in] Pointer to the object to destroy.
-*
-* RETURN VALUE
-* This function does not return a value.
-*
-* NOTES
-* Performs any necessary cleanup of the specified
-* MFT Receiver object.
-* Further operations should not be attempted on the destroyed object.
-* This function should only be called after a call to
-* osm_mft_rcv_construct or osm_mft_rcv_init.
-*
-* SEE ALSO
-* MFT Receiver object, osm_mft_rcv_construct,
-* osm_mft_rcv_init
-*********/
-
-/****f* OpenSM: MFT Receiver/osm_mft_rcv_init
-* NAME
-* osm_mft_rcv_init
-*
-* DESCRIPTION
-* The osm_mft_rcv_init function initializes a
-* MFT Receiver object for use.
-*
-* SYNOPSIS
-*/
-ib_api_status_t
-osm_mft_rcv_init(
- IN osm_mft_rcv_t* const p_rcv,
- IN osm_subn_t* const p_subn,
- IN osm_log_t* const p_log,
- IN cl_plock_t* const p_lock );
-/*
-* PARAMETERS
-* p_rcv
-* [in] Pointer to an osm_mft_rcv_t object to initialize.
-*
-* p_subn
-* [in] Pointer to the Subnet object for this subnet.
-*
-* p_log
-* [in] Pointer to the log object.
-*
-* p_lock
-* [in] Pointer to the OpenSM serializing lock.
-*
-* RETURN VALUES
-* CL_SUCCESS if the MFT Receiver object was initialized
-* successfully.
-*
-* NOTES
-* Allows calling other MFT Receiver methods.
-*
-* SEE ALSO
-* MFT Receiver object, osm_mft_rcv_construct,
-* osm_mft_rcv_destroy
-*********/
-
-/****f* OpenSM: MFT Receiver/osm_mft_rcv_process
-* NAME
-* osm_mft_rcv_process
-*
-* DESCRIPTION
-* Process the MFT attribute.
-*
-* SYNOPSIS
-*/
-void
-osm_mft_rcv_process(
- IN const osm_mft_rcv_t* const p_rcv,
- IN osm_madw_t* const p_madw );
-/*
-* PARAMETERS
-* p_rcv
-* [in] Pointer to an osm_mft_rcv_t object.
-*
-* p_madw
-* [in] Pointer to the MAD Wrapper containing the MAD
-* that contains the node's MFT attribute.
-*
-* RETURN VALUES
-* CL_SUCCESS if the MFT processing was successful.
-*
-* NOTES
-* This function processes a MFT attribute.
-*
-* SEE ALSO
-* MFT Receiver, Node Description Response Controller
-*********/
-
-END_C_DECLS
-
-#endif /* _OSM_MFT_RCV_H_ */
-
+++ /dev/null
-/*
- * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2006 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under the OpenIB.org BSD license
- * below:
- *
- * Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the following
- * conditions are met:
- *
- * - Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the following
- * disclaimer.
- *
- * - Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * $Id$
- */
-
-
-/*
- * Abstract:
- * Declaration of osm_mft_rcv_ctrl_t.
- * This object represents a controller that receives the IBA
- * Multicast Forwarding Table attribute from a node (specifically, a
- * switch).
- * This object is part of the OpenSM family of objects.
- *
- * Environment:
- * Linux User Mode
- *
- * $Revision: 1.4 $
- */
-
-#ifndef _OSM_MFT_RCV_CTRL_H_
-#define _OSM_MFT_RCV_CTRL_H_
-
-#include <complib/cl_dispatcher.h>
-#include <opensm/osm_base.h>
-#include <opensm/osm_madw.h>
-#include <opensm/osm_mcast_fwd_rcv.h>
-#include <opensm/osm_log.h>
-
-#ifdef __cplusplus
-# define BEGIN_C_DECLS extern "C" {
-# define END_C_DECLS }
-#else /* !__cplusplus */
-# define BEGIN_C_DECLS
-# define END_C_DECLS
-#endif /* __cplusplus */
-
-BEGIN_C_DECLS
-
-/****h* OpenSM/MFT Receive Controller
-* NAME
-* MFT Receive Controller
-*
-* DESCRIPTION
-* The MFT Receive Controller object
-* encapsulates the information
-* needed to receive the Multicast Forwarding Table
-* attribute from a node.
-*
-* The MFT Receive Controller object is thread safe.
-*
-* This object should be treated as opaque and should be
-* manipulated only through the provided functions.
-*
-* AUTHOR
-* Steve King, Intel
-*
-*********/
-
-/****s* OpenSM: MFT Receive Controller/osm_mft_rcv_ctrl_t
-* NAME
-* osm_mft_rcv_ctrl_t
-*
-* DESCRIPTION
-* MFT Receive Controller structure.
-*
-* This object should be treated as opaque and should
-* be manipulated only through the provided functions.
-*
-* SYNOPSIS
-*/
-typedef struct _osm_mft_rcv_ctrl
-{
- osm_mft_rcv_t *p_rcv;
- osm_log_t *p_log;
- cl_dispatcher_t *p_disp;
- cl_disp_reg_handle_t h_disp;
-
-} osm_mft_rcv_ctrl_t;
-/*
-* FIELDS
-* p_rcv
-* Pointer to the MFT Receiver object.
-*
-* p_log
-* Pointer to the log object.
-*
-* p_disp
-* Pointer to the Dispatcher.
-*
-* h_disp
-* Handle returned from dispatcher registration.
-*
-* SEE ALSO
-* MFT Receive Controller object
-*********/
-
-/****f* OpenSM: MFT Receive Controller/osm_mft_rcv_ctrl_construct
-* NAME
-* osm_mft_rcv_ctrl_construct
-*
-* DESCRIPTION
-* This function constructs a MFT Receive Controller object.
-*
-* SYNOPSIS
-*/
-void
-osm_mft_rcv_ctrl_construct(
- IN osm_mft_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-* p_ctrl
-* [in] Pointer to a MFT Receive Controller object to construct.
-*
-* RETURN VALUE
-* This function does not return a value.
-*
-* NOTES
-* Allows calling osm_mft_rcv_ctrl_init, osm_mft_rcv_ctrl_destroy
-*
-* Calling osm_mft_rcv_ctrl_construct is a prerequisite to calling any other
-* method except osm_mft_rcv_ctrl_init.
-*
-* SEE ALSO
-* MFT Receive Controller object, osm_mft_rcv_ctrl_init,
-* osm_mft_rcv_ctrl_destroy
-*********/
-
-/****f* OpenSM: MFT Receive Controller/osm_mft_rcv_ctrl_destroy
-* NAME
-* osm_mft_rcv_ctrl_destroy
-*
-* DESCRIPTION
-* The osm_mft_rcv_ctrl_destroy function destroys the object, releasing
-* all resources.
-*
-* SYNOPSIS
-*/
-void
-osm_mft_rcv_ctrl_destroy(
- IN osm_mft_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-* p_ctrl
-* [in] Pointer to the object to destroy.
-*
-* RETURN VALUE
-* This function does not return a value.
-*
-* NOTES
-* Performs any necessary cleanup of the specified
-* MFT Receive Controller object.
-* Further operations should not be attempted on the destroyed object.
-* This function should only be called after a call to
-* osm_mft_rcv_ctrl_construct or osm_mft_rcv_ctrl_init.
-*
-* SEE ALSO
-* MFT Receive Controller object, osm_mft_rcv_ctrl_construct,
-* osm_mft_rcv_ctrl_init
-*********/
-
-/****f* OpenSM: MFT Receive Controller/osm_mft_rcv_ctrl_init
-* NAME
-* osm_mft_rcv_ctrl_init
-*
-* DESCRIPTION
-* The osm_mft_rcv_ctrl_init function initializes a
-* MFT Receive Controller object for use.
-*
-* SYNOPSIS
-*/
-ib_api_status_t
-osm_mft_rcv_ctrl_init(
- IN osm_mft_rcv_ctrl_t* const p_ctrl,
- IN osm_mft_rcv_t* const p_rcv,
- IN osm_log_t* const p_log,
- IN cl_dispatcher_t* const p_disp );
-/*
-* PARAMETERS
-* p_ctrl
-* [in] Pointer to an osm_mft_rcv_ctrl_t object to initialize.
-*
-* p_rcv
-* [in] Pointer to an osm_mft_rcv_t object.
-*
-* p_log
-* [in] Pointer to the log object.
-*
-* p_disp
-* [in] Pointer to the OpenSM central Dispatcher.
-*
-* RETURN VALUES
-* CL_SUCCESS if the MFT Receive Controller object was initialized
-* successfully.
-*
-* NOTES
-* Allows calling other MFT Receive Controller methods.
-*
-* SEE ALSO
-* MFT Receive Controller object, osm_mft_rcv_ctrl_construct,
-* osm_mft_rcv_ctrl_destroy
-*********/
-
-END_C_DECLS
-
-#endif /* OSM_MFT_RCV_CTRL_H_ */
-
+++ /dev/null
-/*
- * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2006 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under the OpenIB.org BSD license
- * below:
- *
- * Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the following
- * conditions are met:
- *
- * - Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the following
- * disclaimer.
- *
- * - Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * $Id$
- */
-
-
-/*
- * Abstract:
- * Declaration of osm_mcast_mgr_t.
- * This object represents the Multicast Manager object.
- * This object is part of the OpenSM family of objects.
- *
- * Environment:
- * Linux User Mode
- *
- * $Revision: 1.4 $
- */
-
-#ifndef _OSM_MCAST_MGR_H_
-#define _OSM_MCAST_MGR_H_
-
-#include <complib/cl_passivelock.h>
-#include <opensm/osm_base.h>
-#include <opensm/osm_madw.h>
-#include <opensm/osm_req.h>
-#include <opensm/osm_subnet.h>
-#include <opensm/osm_log.h>
-#include <opensm/osm_multicast.h>
-
-#ifdef __cplusplus
-# define BEGIN_C_DECLS extern "C" {
-# define END_C_DECLS }
-#else /* !__cplusplus */
-# define BEGIN_C_DECLS
-# define END_C_DECLS
-#endif /* __cplusplus */
-
-BEGIN_C_DECLS
-
-#define OSM_MCAST_MGR_LIST_SIZE_MIN 256
-
-/****h* OpenSM/Multicast Manager
-* NAME
-* Multicast Manager
-*
-* DESCRIPTION
-* The Multicast Manager object encapsulates the information
-* needed to control multicast LID forwarding on the subnet.
-*
-* The Multicast Manager object is thread safe.
-*
-* This object should be treated as opaque and should be
-* manipulated only through the provided functions.
-*
-* AUTHOR
-* Steve King, Intel
-*
-*********/
-
-/****s* OpenSM: Multicast Manager/osm_mcast_mgr_t
-* NAME
-* osm_mcast_mgr_t
-*
-* DESCRIPTION
-* Multicast Manager structure.
-*
-* This object should be treated as opaque and should
-* be manipulated only through the provided functions.
-*
-* SYNOPSIS
-*/
-typedef struct _osm_mcast_mgr
-{
- osm_subn_t *p_subn;
- osm_req_t *p_req;
- osm_log_t *p_log;
- cl_plock_t *p_lock;
-
-} osm_mcast_mgr_t;
-/*
-* FIELDS
-* p_subn
-* Pointer to the Subnet object for this subnet.
-*
-* p_req
-* Pointer to the Requester object sending SMPs.
-*
-* p_log
-* Pointer to the log object.
-*
-* p_lock
-* Pointer to the serializing lock.
-*
-* SEE ALSO
-* Multicast Manager object
-*********/
-
-/****f* OpenSM: Multicast Manager/osm_mcast_mgr_construct
-* NAME
-* osm_mcast_mgr_construct
-*
-* DESCRIPTION
-* This function constructs a Multicast Manager object.
-*
-* SYNOPSIS
-*/
-void
-osm_mcast_mgr_construct(
- IN osm_mcast_mgr_t* const p_mgr );
-/*
-* PARAMETERS
-* p_mgr
-* [in] Pointer to a Multicast Manager object to construct.
-*
-* RETURN VALUE
-* This function does not return a value.
-*
-* NOTES
-* Allows osm_mcast_mgr_destroy
-*
-* Calling osm_mcast_mgr_construct is a prerequisite to calling any other
-* method except osm_mcast_mgr_init.
-*
-* SEE ALSO
-* Multicast Manager object, osm_mcast_mgr_init,
-* osm_mcast_mgr_destroy
-*********/
-
-/****f* OpenSM: Multicast Manager/osm_mcast_mgr_destroy
-* NAME
-* osm_mcast_mgr_destroy
-*
-* DESCRIPTION
-* The osm_mcast_mgr_destroy function destroys the object, releasing
-* all resources.
-*
-* SYNOPSIS
-*/
-void
-osm_mcast_mgr_destroy(
- IN osm_mcast_mgr_t* const p_mgr );
-/*
-* PARAMETERS
-* p_mgr
-* [in] Pointer to the object to destroy.
-*
-* RETURN VALUE
-* This function does not return a value.
-*
-* NOTES
-* Performs any necessary cleanup of the specified
-* Multicast Manager object.
-* Further operations should not be attempted on the destroyed object.
-* This function should only be called after a call to
-* osm_mcast_mgr_construct or osm_mcast_mgr_init.
-*
-* SEE ALSO
-* Multicast Manager object, osm_mcast_mgr_construct,
-* osm_mcast_mgr_init
-*********/
-
-/****f* OpenSM: Multicast Manager/osm_mcast_mgr_init
-* NAME
-* osm_mcast_mgr_init
-*
-* DESCRIPTION
-* The osm_mcast_mgr_init function initializes a
-* Multicast Manager object for use.
-*
-* SYNOPSIS
-*/
-ib_api_status_t
-osm_mcast_mgr_init(
- IN osm_mcast_mgr_t* const p_mgr,
- IN osm_req_t* const p_req,
- IN osm_subn_t* const p_subn,
- IN osm_log_t* const p_log,
- IN cl_plock_t* const p_lock );
-/*
-* PARAMETERS
-* p_mgr
-* [in] Pointer to an osm_mcast_mgr_t object to initialize.
-*
-* p_req
-* [in] Pointer to the attribute Requester object.
-*
-* p_subn
-* [in] Pointer to the Subnet object for this subnet.
-*
-* p_log
-* [in] Pointer to the log object.
-*
-* p_lock
-* [in] Pointer to the OpenSM serializing lock.
-*
-* RETURN VALUES
-* IB_SUCCESS if the Multicast Manager object was initialized
-* successfully.
-*
-* NOTES
-* Allows calling other Multicast Manager methods.
-*
-* SEE ALSO
-* Multicast Manager object, osm_mcast_mgr_construct,
-* osm_mcast_mgr_destroy
-*********/
-
-/****f* OpenSM: Multicast Manager/osm_mcast_mgr_process
-* NAME
-* osm_mcast_mgr_process
-*
-* DESCRIPTION
-* Process and configure the subnet's multicast forwarding tables.
-*
-* SYNOPSIS
-*/
-osm_signal_t
-osm_mcast_mgr_process(
- IN osm_mcast_mgr_t* const p_mgr );
-/*
-* PARAMETERS
-* p_mgr
-* [in] Pointer to an osm_mcast_mgr_t object.
-*
-* RETURN VALUES
-* Returns the appropriate signal to the caller:
-* OSM_SIGNAL_DONE - operation is complete
-* OSM_SIGNAL_DONE_PENDING - local operations are complete, but
-* transactions are still pending on the wire.
-*
-* NOTES
-* This function processes the subnet, configuring switch
-* multicast forwarding tables.
-*
-* SEE ALSO
-* Multicast Manager, Node Info Response Controller
-*********/
-
-/****f* OpenSM: Multicast Manager/osm_mcast_mgr_process_mgrp_cb
-* NAME
-* osm_mcast_mgr_process_mgrp_cb
-*
-* DESCRIPTION
-* Callback entry point for the osm_mcast_mgr_process_mgrp function.
-*
-* SYNOPSIS
-*/
-osm_signal_t
-osm_mcast_mgr_process_mgrp_cb(
- IN void* const Context1,
- IN void* const Context2 );
-/*
-* PARAMETERS
-* (Context1) p_mgr
-* [in] Pointer to an osm_mcast_mgr_t object.
-*
-* (Context2) p_mgrp
-* [in] Pointer to the multicast group to process.
-*
-* RETURN VALUES
-* IB_SUCCESS
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* OpenSM: Multicast Manager/osm_mcast_mgr_process
-* NAME
-* osm_mcast_mgr_process_single
-*
-* DESCRIPTION
-* Attempts to add a single port to an existing multicast spanning tree.
-* This function can only succeed if the port to be added is connected
-* to a switch that is already routing traffic for this multicast group.
-*
-* SYNOPSIS
-*/
-ib_api_status_t
-osm_mcast_mgr_process_single(
- IN osm_mcast_mgr_t* const p_mgr,
- IN const ib_net16_t mlid,
- IN const ib_net64_t port_guid,
- IN const uint8_t join_state );
-/*
-* PARAMETERS
-* p_mgr
-* [in] Pointer to an osm_mcast_mgr_t object.
-*
-* mlid
-* [in] Multicast LID of relevent multicast group.
-*
-* port_guid
-* [in] GUID of port to attempt to add to the group.
-*
-* join_state
-* [in] Specifies the join state for this port per the spec.
-*
-* RETURN VALUES
-* IB_SUCCESS
-* IB_NOT_DONE
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-END_C_DECLS
-
-#endif /* _OSM_MCAST_MGR_H_ */
-
+++ /dev/null
-/*
- * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2006 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under the OpenIB.org BSD license
- * below:
- *
- * Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the following
- * conditions are met:
- *
- * - Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the following
- * disclaimer.
- *
- * - Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * $Id$
- */
-
-
-/*
- * Abstract:
- * Declaration of osm_mcm_info_t.
- * This object represents a Multicast Forwarding Information object.
- * This object is part of the OpenSM family of objects.
- *
- * Environment:
- * Linux User Mode
- *
- * $Revision: 1.4 $
- */
-
-#ifndef _OSM_MCM_INFO_H_
-#define _OSM_MCM_INFO_H_
-
-#include <string.h>
-#include <iba/ib_types.h>
-#include <complib/cl_qlist.h>
-#include <opensm/osm_base.h>
-
-#ifdef __cplusplus
-# define BEGIN_C_DECLS extern "C" {
-# define END_C_DECLS }
-#else /* !__cplusplus */
-# define BEGIN_C_DECLS
-# define END_C_DECLS
-#endif /* __cplusplus */
-
-BEGIN_C_DECLS
-
-/****s* OpenSM: Multicast Member Info/osm_mcm_info_t
-* NAME
-* osm_mcm_info_t
-*
-* DESCRIPTION
-* Multicast Membership Info object.
-* This object contains information about a nodes membership
-* in a particular multicast group.
-*
-* This object should be treated as opaque and should
-* be manipulated only through the provided functions.
-*
-* SYNOPSIS
-*/
-typedef struct _osm_mcm_info
-{
- cl_list_item_t list_item;
- ib_net16_t mlid;
-
-} osm_mcm_info_t;
-/*
-* FIELDS
-* list_item
-* Linkage structure for cl_qlist. MUST BE FIRST MEMBER!
-*
-* mlid
-* MLID of this multicast group.
-*
-* SEE ALSO
-*********/
-
-/****f* OpenSM: Multicast Member Info/osm_mcm_info_construct
-* NAME
-* osm_mcm_info_construct
-*
-* DESCRIPTION
-* This function constructs a Multicast Member Info object.
-*
-* SYNOPSIS
-*/
-static inline void
-osm_mcm_info_construct(
- IN osm_mcm_info_t* const p_mcm )
-{
- memset( p_mcm, 0, sizeof(*p_mcm) );
-}
-/*
-* PARAMETERS
-* p_mcm
-* [in] Pointer to a Multicast Member Info object to construct.
-*
-* RETURN VALUE
-* This function does not return a value.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* OpenSM: Multicast Member Info/osm_mcm_info_destroy
-* NAME
-* osm_mcm_info_destroy
-*
-* DESCRIPTION
-* The osm_mcm_info_destroy function destroys the object, releasing
-* all resources.
-*
-* SYNOPSIS
-*/
-void
-osm_mcm_info_destroy(
- IN osm_mcm_info_t* const p_mcm );
-/*
-* PARAMETERS
-* p_mcm
-* [in] Pointer to a Multicast Member Info object to destroy.
-*
-* RETURN VALUE
-* This function does not return a value.
-*
-* NOTES
-* Performs any necessary cleanup of the specified Multicast Member Info object.
-* Further operations should not be attempted on the destroyed object.
-* This function should only be called after a call to osm_mtree_construct or
-* osm_mtree_init.
-*
-* SEE ALSO
-* Multicast Member Info object, osm_mtree_construct, osm_mtree_init
-*********/
-
-/****f* OpenSM: Multicast Member Info/osm_mcm_info_init
-* NAME
-* osm_mcm_info_init
-*
-* DESCRIPTION
-* Initializes a Multicast Member Info object for use.
-*
-* SYNOPSIS
-*/
-void
-osm_mcm_info_init(
- IN osm_mcm_info_t* const p_mcm,
- IN const ib_net16_t mlid );
-/*
-* PARAMETERS
-* p_mcm
-* [in] Pointer to an osm_mcm_info_t object to initialize.
-*
-* mlid
-* [in] MLID value for this multicast group.
-*
-* RETURN VALUES
-* None.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* OpenSM: Multicast Member Info/osm_mcm_info_new
-* NAME
-* osm_mcm_info_new
-*
-* DESCRIPTION
-* Returns an initialized a Multicast Member Info object for use.
-*
-* SYNOPSIS
-*/
-osm_mcm_info_t*
-osm_mcm_info_new(
- IN const ib_net16_t mlid );
-/*
-* PARAMETERS
-* mlid
-* [in] MLID value for this multicast group.
-*
-* RETURN VALUES
-* Pointer to an initialized tree node.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-/****f* OpenSM: Multicast Member Info/osm_mcm_info_delete
-* NAME
-* osm_mcm_info_delete
-*
-* DESCRIPTION
-* Destroys and deallocates the specified object.
-*
-* SYNOPSIS
-*/
-void
-osm_mcm_info_delete(
- IN osm_mcm_info_t* const p_mcm );
-/*
-* PARAMETERS
-* p_mcm
-* Pointer to the object to destroy.
-*
-* RETURN VALUES
-* None.
-*
-* NOTES
-*
-* SEE ALSO
-*********/
-
-END_C_DECLS
-
-#endif /* _OSM_MCM_INFO_H_ */
-
+++ /dev/null
-/*
- * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2006 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under the OpenIB.org BSD license
- * below:
- *
- * Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the following
- * conditions are met:
- *
- * - Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the following
- * disclaimer.
- *
- * - Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * $Id$
- */
-
-
-#ifndef _OSM_BIND_H_
-#define _OSM_BIND_H_
-
-#include <opensm/osm_helper.h>
-#include <vendor/osm_vendor_mtl.h>
-#include <vendor/osm_vendor_api.h>
-#include <opensm/osm_subnet.h>
-#include <opensm/osm_opensm.h>
-
-#ifdef __cplusplus
-# define BEGIN_C_DECLS extern "C" {
-# define END_C_DECLS }
-#else /* !__cplusplus */
-# define BEGIN_C_DECLS
-# define END_C_DECLS
-#endif /* __cplusplus */
-
-BEGIN_C_DECLS
-
-/****s* OpenSM: Vendor/osm_vendor_mgt_bind
-* NAME
-* osm_vendor_mgt_bind_t
-*
-* DESCRIPTION
-* Tracks the handles returned by IB_MGT to the SMI and GSI
-* Nulled on init of the vendor obj. Populated on first bind.
-*
-* SYNOPSIS
-*/
-typedef struct _osm_vendor_mgt_bind
-{
- boolean_t smi_init, gsi_init;
- IB_MGT_mad_hndl_t smi_mads_hdl;
- IB_MGT_mad_hndl_t gsi_mads_hdl;
- struct _osm_mtl_bind_info *smi_p_bind;
-}
-osm_vendor_mgt_bind_t;
-
-/*
-* FIELDS
-* smi_mads_hdl
-* Handle returned by IB_MGT_get_handle to the IB_MGT_SMI
-*
-* gsi_mads_hdl
-* Handle returned by IB_MGT_get_handle to the IB_MGT_GSI
-*
-* SEE ALSO
-*********/
-
-/****s* OpenSM: Vendor osm_mtl_bind_info_t
-* NAME
-* osm_mtl_bind_info_t
-*
-* DESCRIPTION
-* Handle to the result of binding a class callbacks to IB_MGT.
-*
-* SYNOPSIS
-*/
-typedef struct _osm_mtl_bind_info
-{
- IB_MGT_mad_hndl_t mad_hndl;
- osm_vendor_t *p_vend;
- void *client_context;
- VAPI_hca_hndl_t hca_hndl;
- VAPI_hca_id_t hca_id;
- uint8_t port_num;
- osm_vend_mad_recv_callback_t rcv_callback;
- osm_vend_mad_send_err_callback_t send_err_callback;
- osm_mad_pool_t *p_osm_pool;
-}
-osm_mtl_bind_info_t;
-
-/*
-* FIELDS
-* mad_hndl
-* the handle returned from the registration in IB_MGT
-*
-* p_vend
-* Pointer to the vendor object.
-*
-* client_context
-* User's context passed during osm_bind
-*
-* hca_id
-* HCA Id we bind to.
-*
-* port_num
-* Port number (within the HCA) of the bound port.
-*
-* rcv_callback
-* OSM Callback function to be called on receive of MAD.
-*
-* send_err_callback
-* OSM Callback to be called on send error.
-*
-* p_osm_pool
-* Points to the MAD pool used by OSM
-*
-*
-* SEE ALSO
-*********/
-ib_api_status_t
-osm_mtl_send_mad(
- IN osm_mtl_bind_info_t *p_bind,
- IN osm_madw_t * const p_madw);
-
-END_C_DECLS
-
-#endif // _OSM_BIND_H_
-
+++ /dev/null
-/*
- * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2006 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under the OpenIB.org BSD license
- * below:
- *
- * Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the following
- * conditions are met:
- *
- * - Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the following
- * disclaimer.
- *
- * - Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF