vxge_cmn.h revision 331722
1/*-
2 * Copyright(c) 2002-2011 Exar Corp.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification are permitted provided the following conditions are met:
7 *
8 *    1. Redistributions of source code must retain the above copyright notice,
9 *       this list of conditions and the following disclaimer.
10 *
11 *    2. Redistributions in binary form must reproduce the above copyright
12 *       notice, this list of conditions and the following disclaimer in the
13 *       documentation and/or other materials provided with the distribution.
14 *
15 *    3. Neither the name of the Exar Corporation nor the names of its
16 *       contributors may be used to endorse or promote products derived from
17 *       this software without specific prior written permission.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
23 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 * POSSIBILITY OF SUCH DAMAGE.
30 */
31/*$FreeBSD: stable/11/tools/tools/vxge/vxge_cmn.h 331722 2018-03-29 02:50:57Z eadler $*/
32
33#ifndef	_VXGE_CMN_H_
34#define	_VXGE_CMN_H_
35
36#include <stdio.h>
37#include <stdlib.h>
38#include <string.h>
39#include <unistd.h>
40#include <errno.h>
41#include <sys/types.h>
42#include <sys/socket.h>
43#include <sys/ioctl.h>
44#include <net/if.h>
45#include <netinet/in.h>
46#include <arpa/inet.h>
47#include <fcntl.h>
48
49#if BYTE_ORDER == BIG_ENDIAN
50#define	VXGE_OS_HOST_BIG_ENDIAN
51#else
52#define	VXGE_OS_HOST_LITTLE_ENDIAN
53#endif
54
55#if defined(VXGE_OS_HOST_BIG_ENDIAN)
56
57#define	GET_OFFSET_STATS(index)		statsInfo[(index)].be_offset
58#define	GET_OFFSET_PCICONF(index)	pciconfInfo[(index)].be_offset
59
60#else
61
62#define	GET_OFFSET_STATS(index)		statsInfo[(index)].le_offset
63#define	GET_OFFSET_PCICONF(index)	pciconfInfo[(index)].le_offset
64
65#endif
66
67#define	vxge_mem_free(x)	\
68	if (NULL != x) { free(x); x = NULL; }
69
70typedef uint8_t u8;
71typedef uint16_t u16;
72typedef uint32_t u32;
73typedef unsigned long long u64;
74typedef u_long ulong_t;
75
76typedef enum _vxge_query_device_info_e {
77
78	VXGE_GET_PCI_CONF = 100,
79	VXGE_GET_MRPCIM_STATS = 101,
80	VXGE_GET_DEVICE_STATS = 102,
81	VXGE_GET_DEVICE_HWINFO = 103,
82	VXGE_GET_DRIVER_STATS = 104,
83	VXGE_GET_INTR_STATS = 105,
84	VXGE_GET_VERSION = 106,
85	VXGE_GET_TCODE = 107,
86	VXGE_GET_VPATH_COUNT = 108,
87	VXGE_GET_BANDWIDTH = 109,
88	VXGE_SET_BANDWIDTH = 110,
89	VXGE_GET_PORT_MODE = 111,
90	VXGE_SET_PORT_MODE = 112
91
92} vxge_query_device_info_e;
93
94/* Register type enumaration */
95typedef enum vxge_hal_mgmt_reg_type_e {
96
97	vxge_hal_mgmt_reg_type_legacy = 0,
98	vxge_hal_mgmt_reg_type_toc = 1,
99	vxge_hal_mgmt_reg_type_common = 2,
100	vxge_hal_mgmt_reg_type_memrepair = 3,
101	vxge_hal_mgmt_reg_type_pcicfgmgmt = 4,
102	vxge_hal_mgmt_reg_type_mrpcim = 5,
103	vxge_hal_mgmt_reg_type_srpcim = 6,
104	vxge_hal_mgmt_reg_type_vpmgmt = 7,
105	vxge_hal_mgmt_reg_type_vpath = 8
106
107} vxge_hal_mgmt_reg_type_e;
108
109typedef enum vxge_hal_xmac_nwif_dp_mode {
110
111	VXGE_HAL_DP_NP_MODE_DEFAULT,
112	VXGE_HAL_DP_NP_MODE_LINK_AGGR,
113	VXGE_HAL_DP_NP_MODE_ACTIVE_PASSIVE,
114	VXGE_HAL_DP_NP_MODE_SINGLE_PORT,
115	VXGE_HAL_DP_NP_MODE_DUAL_PORT,
116	VXGE_HAL_DP_NP_MODE_DISABLE_PORT_MGMT
117
118} vxge_hal_xmac_nwif_dp_mode;
119
120typedef enum vxge_hal_xmac_nwif_behavior_on_failure {
121
122	VXGE_HAL_XMAC_NWIF_OnFailure_NoMove,
123	VXGE_HAL_XMAC_NWIF_OnFailure_OtherPort,
124	VXGE_HAL_XMAC_NWIF_OnFailure_OtherPortBackOnRestore
125
126} vxge_hal_xmac_nwif_behavior_on_failure;
127
128#define	VXGE_HAL_MGMT_REG_COUNT_LEGACY		7
129#define	VXGE_HAL_MGMT_REG_COUNT_TOC		11
130#define	VXGE_HAL_MGMT_REG_COUNT_COMMON		65
131#define	VXGE_HAL_MGMT_REG_COUNT_PCICFGMGMT	3
132#define	VXGE_HAL_MGMT_REG_COUNT_MRPCIM		1370
133#define	VXGE_HAL_MGMT_REG_COUNT_SRPCIM		48
134#define	VXGE_HAL_MGMT_REG_COUNT_VPMGMT		29
135#define	VXGE_HAL_MGMT_REG_COUNT_VPATH		139
136#define	VXGE_HAL_MGMT_STATS_COUNT_DRIVER	17
137#define	VXGE_HAL_MGMT_STATS_COUNT		160
138#define	VXGE_HAL_MGMT_STATS_COUNT_SW		54
139#define	VXGE_HAL_MGMT_STATS_COUNT_EXTENDED	56
140#define	VXGE_MAX_BANDWIDTH			10000
141
142#define	VXGE_HAL_MAX_VIRTUAL_PATHS		17
143#define	ETH_LENGTH_OF_ADDRESS			6
144
145typedef char macaddr[ETH_LENGTH_OF_ADDRESS];
146
147#define	VXGE_PRINT(fd, fmt...) {	\
148	fprintf(fd, fmt);		\
149	fprintf(fd, "\n");		\
150	printf(fmt);			\
151	printf("\n");			\
152}
153
154/* Read	& Write	Register */
155typedef struct _vxge_register_info_t {
156
157	u64	value;
158	u64	offset;
159	char	option[2];
160
161} vxge_register_info_t;
162
163/* Register Dump */
164typedef struct _vxge_pci_bar0_t {
165	char	name[64];
166	u64	offset;
167	u32	size;
168
169} vxge_pci_bar0_t;
170
171typedef struct _vxge_stats_driver_info_t {
172
173	char	name[32];
174	u64	value;
175
176} vxge_stats_driver_info_t;
177
178typedef struct _vxge_hal_device_pmd_info_t {
179
180	u32	type;
181	u32	unused;
182	char	vendor[24];
183	char	part_num[24];
184	char	ser_num[24];
185
186} vxge_hal_device_pmd_info_t;
187
188typedef struct _vxge_hal_device_version_t {
189
190	u32	major;
191	u32	minor;
192	u32	build;
193	char	version[32];
194
195} vxge_hal_device_version_t;
196
197typedef struct _vxge_hal_device_date_t {
198
199	u32	day;
200	u32	month;
201	u32	year;
202	char	date[16];
203
204} vxge_hal_device_date_t;
205
206typedef struct _vxge_hal_device_hw_info_t {
207
208	u32	host_type;
209	u64	function_mode;
210	u32	func_id;
211	u64	vpath_mask;
212
213	vxge_hal_device_version_t fw_version;
214	vxge_hal_device_date_t fw_date;
215	vxge_hal_device_version_t flash_version;
216	vxge_hal_device_date_t flash_date;
217
218	char	serial_number[24];
219	char	part_number[24];
220	char	product_description[72];
221	u32	unused;
222	u32	ports;
223
224	vxge_hal_device_pmd_info_t pmd_port0;
225	vxge_hal_device_pmd_info_t pmd_port1;
226
227	macaddr	mac_addrs[VXGE_HAL_MAX_VIRTUAL_PATHS];
228	macaddr	mac_addr_masks[VXGE_HAL_MAX_VIRTUAL_PATHS];
229
230} vxge_hal_device_hw_info_t;
231
232typedef struct _vxge_device_hw_info_t {
233
234	vxge_hal_device_hw_info_t hw_info;
235	u32	port_mode;
236	u32	port_failure;
237
238} vxge_device_hw_info_t;
239
240typedef struct _vxge_bw_info_t {
241
242	char	query;
243	u64	func_id;
244	int	priority;
245	int	bandwidth;
246
247} vxge_bw_info_t;
248
249typedef struct _vxge_port_info_t {
250
251	char	query;
252	int	port_mode;
253	int	port_failure;
254
255} vxge_port_info_t;
256
257u32	vxge_get_num_vpath(void);
258void	vxge_null_terminate(char *, size_t);
259
260#endif	/* _VXGE_CMN_H_ */
261