1 /* 2 * Copyright (c) 2004, 2005 Voltaire, Inc. All rights reserved. 3 * Copyright (c) 2002-2007,2009 Mellanox Technologies LTD. All rights reserved. 4 * Copyright (c) 1996-2003 Intel Corporation. All rights reserved. 5 * 6 * This software is available to you under a choice of one of two 7 * licenses. You may choose to be licensed under the terms of the GNU 8 * General Public License (GPL) Version 2, available from the file 9 * COPYING in the main directory of this source tree, or the 10 * OpenIB.org BSD license below: 11 * 12 * Redistribution and use in source and binary forms, with or 13 * without modification, are permitted provided that the following 14 * conditions are met: 15 * 16 * - Redistributions of source code must retain the above 17 * copyright notice, this list of conditions and the following 18 * disclaimer. 19 * 20 * - Redistributions in binary form must reproduce the above 21 * copyright notice, this list of conditions and the following 22 * disclaimer in the documentation and/or other materials 23 * provided with the distribution. 24 * 25 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 26 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 27 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 28 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 29 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 30 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 31 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 32 * SOFTWARE. 33 * 34 */ 35 36 #ifndef _OSMV_H_ 37 #define _OSMV_H_ 38 39 #include <sys/types.h> 40 #include <opensm/osm_log.h> 41 #include <complib/cl_qlist.h> 42 43 #ifdef __cplusplus 44 # define BEGIN_C_DECLS extern "C" { 45 # define END_C_DECLS } 46 #else /* !__cplusplus */ 47 # define BEGIN_C_DECLS 48 # define END_C_DECLS 49 #endif /* __cplusplus */ 50 51 BEGIN_C_DECLS 52 /* 53 Forward reference 54 */ 55 struct _osm_pkt_randomizer; 56 57 /* The structure behind the OSM Vendor handle */ 58 59 typedef struct _osm_vendor { 60 61 /* for holding common transport info - useful at ibmgt transport */ 62 void *p_transport_info; 63 64 osm_log_t *p_log; 65 66 /* Uniform timeout for every ACK/single MAD */ 67 uint32_t resp_timeout; 68 69 /* Uniform timeout for every rmpp transaction */ 70 uint32_t ttime_timeout; 71 72 /* All the bind handles associated with the vendor */ 73 cl_qlist_t bind_handles; 74 75 /* run randomizer flag */ 76 boolean_t run_randomizer; 77 78 /* Packet Randomizer object */ 79 struct _osm_pkt_randomizer *p_pkt_randomizer; 80 81 } osm_vendor_t; 82 83 /* Repeating the definitions in osm_vendor_api.h */ 84 85 typedef void *osm_bind_handle_t; 86 87 typedef struct _osm_vend_wrap { 88 ib_mad_t *p_mad; 89 } osm_vend_wrap_t; 90 91 #ifndef OSM_BIND_INVALID_HANDLE 92 #define OSM_BIND_INVALID_HANDLE NULL 93 #endif 94 95 /* The maximum number of retransmissions of the same MAD */ 96 #define OSM_DEFAULT_RETRY_COUNT 3 97 98 END_C_DECLS 99 #endif 100