blob: 818540bb514642fa5766876f250b13f7b6b3d8a9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
|
/*
* 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
* or http://www.opensolaris.org/os/licensing.
* 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 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _SYS_HXGE_HXGE_COMMON_H
#define _SYS_HXGE_HXGE_COMMON_H
#include <sys/types.h>
#include <hxge_defs.h>
#include <hxge_pfc.h>
#include <hxge_common_impl.h>
#ifdef __cplusplus
extern "C" {
#endif
#define HXGE_DMA_START B_TRUE
#define HXGE_DMA_STOP B_FALSE
#define HXGE_TIMER_RESO 2
#define HXGE_TIMER_LDG 2
/*
* Receive and Transmit DMA definitions
*/
#ifdef _DMA_USES_VIRTADDR
#define HXGE_DMA_BLOCK 1
#else
#define HXGE_DMA_BLOCK (64 * 64)
#endif
#define HXGE_RBR_RBB_MIN 128
#define HXGE_RBR_RBB_MAX ((64 * 128) - 1)
#if defined(__sparc)
#define HXGE_RBR_RBB_DEFAULT 1536 /* Number of RBR Blocks */
#else
#define HXGE_RBR_RBB_DEFAULT 2048 /* Number of RBR Blocks */
#endif
#define HXGE_RCR_MIN (HXGE_RBR_RBB_MIN * 2)
#define HXGE_RCR_MAX 65504 /* 2^16 - 32 */
/*
* 4096/256 for x86 and 8192 / 256 for Sparc
* NOTE: RCR Ring Size should *not* enable bit 19 of the address.
*/
#if defined(__sparc)
#define HXGE_RCR_DEFAULT (HXGE_RBR_RBB_DEFAULT * 32)
#else
#define HXGE_RCR_DEFAULT (HXGE_RBR_RBB_DEFAULT * 16)
#endif
#define HXGE_TX_RING_DEFAULT 2048
#define HXGE_TX_RING_MAX ((64 * 128) - 1)
#define RBR_BKSIZE_4K 0
#define RBR_BKSIZE_8K 1
#define RBR_BKSIZE_4K_BYTES (4 * 1024)
#define RBR_BUFSZ2_2K 0
#define RBR_BUFSZ2_4K 1
#define RBR_BUFSZ2_2K_BYTES (2 * 1024)
#define RBR_BUFSZ2_4K_BYTES (4 * 1024)
#define RBR_BUFSZ1_1K 0
#define RBR_BUFSZ1_2K 1
#define RBR_BUFSZ1_1K_BYTES 1024
#define RBR_BUFSZ1_2K_BYTES (2 * 1024)
#define RBR_BUFSZ0_256B 0
#define RBR_BUFSZ0_512B 1
#define RBR_BUFSZ0_1K 2
#define RBR_BUFSZ0_256_BYTES 256
#define RBR_BUFSZ0_512_BYTES 512
#define RBR_BUFSZ0_1K_BYTES 1024
/*
* VLAN table configuration
*/
typedef struct hxge_mv_cfg {
uint8_t flag; /* 0:unconfigure 1:configured */
} hxge_mv_cfg_t, *p_hxge_mv_cfg_t;
typedef struct hxge_param_map {
#if defined(_BIG_ENDIAN)
uint32_t rsrvd2:2; /* [30:31] rsrvd */
uint32_t remove:1; /* [29] Remove */
uint32_t pref:1; /* [28] preference */
uint32_t rsrv:4; /* [27:24] preference */
uint32_t map_to:8; /* [23:16] map to resource */
uint32_t param_id:16; /* [15:0] Param ID */
#else
uint32_t param_id:16; /* [15:0] Param ID */
uint32_t map_to:8; /* [23:16] map to resource */
uint32_t rsrv:4; /* [27:24] preference */
uint32_t pref:1; /* [28] preference */
uint32_t remove:1; /* [29] Remove */
uint32_t rsrvd2:2; /* [30:31] rsrvd */
#endif
} hxge_param_map_t, *p_hxge_param_map_t;
typedef struct hxge_hw_pt_cfg {
uint32_t start_tdc; /* start TDC (0 - 3) */
uint32_t max_tdcs; /* max TDC in sequence */
uint32_t start_rdc; /* start RDC (0 - 3) */
uint32_t max_rdcs; /* max rdc in sequence */
uint32_t rx_full_header; /* select the header flag */
uint32_t start_ldg; /* starting logical group # */
uint32_t max_ldgs; /* max logical device group */
uint32_t max_ldvs; /* max logical devices */
} hxge_hw_pt_cfg_t, *p_hxge_hw_pt_cfg_t;
/* per port configuration */
typedef struct hxge_dma_pt_cfg {
hxge_hw_pt_cfg_t hw_config; /* hardware configuration */
uint32_t alloc_buf_size;
uint32_t rbr_size;
uint32_t rcr_size;
} hxge_dma_pt_cfg_t, *p_hxge_dma_pt_cfg_t;
/* classification configuration */
typedef struct hxge_class_pt_cfg {
/* VLAN table */
hxge_mv_cfg_t vlan_tbl[VLAN_ID_MAX + 1];
/* class config value */
uint32_t init_hash;
uint32_t class_cfg[TCAM_CLASS_MAX];
} hxge_class_pt_cfg_t, *p_hxge_class_pt_cfg_t;
typedef struct hxge_hw_list {
struct hxge_hw_list *next;
hxge_os_mutex_t hxge_cfg_lock;
hxge_os_mutex_t hxge_tcam_lock;
hxge_os_mutex_t hxge_vlan_lock;
hxge_dev_info_t *parent_devp;
struct _hxge_t *hxge_p;
uint32_t ndevs;
uint32_t flags;
uint32_t magic;
} hxge_hw_list_t, *p_hxge_hw_list_t;
#ifdef __cplusplus
}
#endif
#endif /* _SYS_HXGE_HXGE_COMMON_H */
|