rdsib_ib.h revision 8257fab973a69800a3a3309e8af21fc1876d2df9
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2007 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
/*
* Copyright (c) 2005 SilverStorm Technologies, Inc. All rights reserved.
*
* This software is available to you under a choice of one of two
* licenses. You may choose to be licensed under the terms of the GNU
* General Public License (GPL) Version 2, available from the file
* COPYING in the main directory of this source tree, or 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
* 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.
*
*/
/*
* Sun elects to include this software in Sun product
* under the OpenIB BSD license.
*
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _RDSIB_IB_H
#define _RDSIB_IB_H
#pragma ident "%Z%%M% %I% %E% SMI"
#ifdef __cplusplus
extern "C" {
#endif
#include "rdsib_debug.h"
#include "rdsib_protocol.h"
/*
* Global Configuration Variables
* As defined in RDS proposal
*/
extern uint_t UserBufferSize;
extern uint_t RdsPktSize;
extern uint_t MaxRecvMemory;
extern uint_t MaxDataSendBuffers;
extern uint_t MaxDataRecvBuffers;
extern uint_t MaxCtrlSendBuffers;
extern uint_t MaxCtrlRecvBuffers;
extern uint_t DataRecvBufferLWM;
extern uint_t CtrlRecvBufferLWM;
extern uint_t PendingRxPktsHWM;
extern uint_t MinRnrRetry;
extern uint8_t IBPathRetryCount;
extern uint8_t IBPktLifeTime;
#ifdef DEBUG
#else
#endif
/* performance tunables */
extern uint_t rds_no_interrupts;
extern uint_t rds_poll_percent_full;
extern uint_t rds_wc_signal;
extern uint_t rds_waittime_ms;
/* loopback port map */
#define RDS_PORT_MAP_SIZE 8192
extern krwlock_t rds_loopback_portmap_lock;
extern ddi_taskq_t *rds_taskq;
/* Number of WCs to poll in a single call */
#define RDS_NUM_DATA_SEND_WCS 10
#define RDS_RDMAW_WRID 0xdabadaba
/*
* There is one of this structure for each HCA in the system.
* This holds all the information about the HCA.
*
* hca_nextp - Points to the next hca in the system.
* hca_guid - HCA Guid
* hca_nports - Number of ports on the HCA
* hca_hdl - HCA hdl obtained after opening the HCA
* hca_pdhdl - PD hdl
* hca_lkey - LKey for the registered global receive buffer pool memory
* hca_rkey - Rkey for the registered global receive buffer pool memory
* hca_attrp - HCA attributes
* hca_pinfop - ptr to portinfo data, allocated by ibtf
* hca_pinfo_sz - Sizeof of portinfo data
*/
typedef struct rds_hca_s {
} rds_hca_t;
/*
* RDS Soft State
* NOTE: Only one soft state per driver and NOT per instance.
*
* sessionlock - protects the rds_session_t:session_nextp, this lock has
* nsessions - Number of sessions in sessionlist
* sessionlistp - Pointer to the first session.
* ibhdl - Clnt handle acquired after registering with IBTF
* nhcas - Number of HCAs initialized. This is also the number of rds_hca_t
* structures in the rds_hcalistp.
* hcalistp - list of rds_hca_t.
* srvhdl - RDS service handle
*/
typedef struct rds_state_s {
struct rds_session_s *rds_sessionlistp;
} rds_state_t;
/* defined in rds_cm.c */
/* defined in rds_ib.c */
/* defined in rds_debug.c */
void rds_logging_initialization();
void rds_logging_destroy();
#ifdef __cplusplus
}
#endif
#endif /* _RDSIB_IB_H */