root / hw / net / vmxnet3.h @ a8aec295
History | View | Annotate | Download (23.9 kB)
1 | 786fd2b0 | Dmitry Fleytman | /*
|
---|---|---|---|
2 | 786fd2b0 | Dmitry Fleytman | * QEMU VMWARE VMXNET3 paravirtual NIC interface definitions
|
3 | 786fd2b0 | Dmitry Fleytman | *
|
4 | 786fd2b0 | Dmitry Fleytman | * Copyright (c) 2012 Ravello Systems LTD (http://ravellosystems.com)
|
5 | 786fd2b0 | Dmitry Fleytman | *
|
6 | 786fd2b0 | Dmitry Fleytman | * Developed by Daynix Computing LTD (http://www.daynix.com)
|
7 | 786fd2b0 | Dmitry Fleytman | *
|
8 | 786fd2b0 | Dmitry Fleytman | * Authors:
|
9 | 786fd2b0 | Dmitry Fleytman | * Dmitry Fleytman <dmitry@daynix.com>
|
10 | 786fd2b0 | Dmitry Fleytman | * Tamir Shomer <tamirs@daynix.com>
|
11 | 786fd2b0 | Dmitry Fleytman | * Yan Vugenfirer <yan@daynix.com>
|
12 | 786fd2b0 | Dmitry Fleytman | *
|
13 | 786fd2b0 | Dmitry Fleytman | * This work is licensed under the terms of the GNU GPL, version 2.
|
14 | 786fd2b0 | Dmitry Fleytman | * See the COPYING file in the top-level directory.
|
15 | 786fd2b0 | Dmitry Fleytman | *
|
16 | 786fd2b0 | Dmitry Fleytman | */
|
17 | 786fd2b0 | Dmitry Fleytman | |
18 | 786fd2b0 | Dmitry Fleytman | #ifndef _QEMU_VMXNET3_H
|
19 | 786fd2b0 | Dmitry Fleytman | #define _QEMU_VMXNET3_H
|
20 | 786fd2b0 | Dmitry Fleytman | |
21 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_DEVICE_MAX_TX_QUEUES 8 |
22 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_DEVICE_MAX_RX_QUEUES 8 /* Keep this value as a power of 2 */ |
23 | 786fd2b0 | Dmitry Fleytman | |
24 | 786fd2b0 | Dmitry Fleytman | /*
|
25 | 786fd2b0 | Dmitry Fleytman | * VMWARE headers we got from Linux kernel do not fully comply QEMU coding
|
26 | 786fd2b0 | Dmitry Fleytman | * standards in sense of types and defines used.
|
27 | 786fd2b0 | Dmitry Fleytman | * Since we didn't want to change VMWARE code, following set of typedefs
|
28 | 786fd2b0 | Dmitry Fleytman | * and defines needed to compile these headers with QEMU introduced.
|
29 | 786fd2b0 | Dmitry Fleytman | */
|
30 | 786fd2b0 | Dmitry Fleytman | #define u64 uint64_t
|
31 | 786fd2b0 | Dmitry Fleytman | #define u32 uint32_t
|
32 | 786fd2b0 | Dmitry Fleytman | #define u16 uint16_t
|
33 | 786fd2b0 | Dmitry Fleytman | #define u8 uint8_t
|
34 | 786fd2b0 | Dmitry Fleytman | #define __le16 uint16_t
|
35 | 786fd2b0 | Dmitry Fleytman | #define __le32 uint32_t
|
36 | 786fd2b0 | Dmitry Fleytman | #define __le64 uint64_t
|
37 | 786fd2b0 | Dmitry Fleytman | #define __packed QEMU_PACKED
|
38 | 786fd2b0 | Dmitry Fleytman | |
39 | 786fd2b0 | Dmitry Fleytman | #if defined(HOST_WORDS_BIGENDIAN)
|
40 | 786fd2b0 | Dmitry Fleytman | #define __BIG_ENDIAN_BITFIELD
|
41 | 786fd2b0 | Dmitry Fleytman | #else
|
42 | 786fd2b0 | Dmitry Fleytman | #endif
|
43 | 786fd2b0 | Dmitry Fleytman | |
44 | 786fd2b0 | Dmitry Fleytman | /*
|
45 | 786fd2b0 | Dmitry Fleytman | * Following is an interface definition for
|
46 | 786fd2b0 | Dmitry Fleytman | * VMXNET3 device as provided by VMWARE
|
47 | 786fd2b0 | Dmitry Fleytman | * See original copyright from Linux kernel v3.2.8
|
48 | 786fd2b0 | Dmitry Fleytman | * header file drivers/net/vmxnet3/vmxnet3_defs.h below.
|
49 | 786fd2b0 | Dmitry Fleytman | */
|
50 | 786fd2b0 | Dmitry Fleytman | |
51 | 786fd2b0 | Dmitry Fleytman | /*
|
52 | 786fd2b0 | Dmitry Fleytman | * Linux driver for VMware's vmxnet3 ethernet NIC.
|
53 | 786fd2b0 | Dmitry Fleytman | *
|
54 | 786fd2b0 | Dmitry Fleytman | * Copyright (C) 2008-2009, VMware, Inc. All Rights Reserved.
|
55 | 786fd2b0 | Dmitry Fleytman | *
|
56 | 786fd2b0 | Dmitry Fleytman | * This program is free software; you can redistribute it and/or modify it
|
57 | 786fd2b0 | Dmitry Fleytman | * under the terms of the GNU General Public License as published by the
|
58 | 786fd2b0 | Dmitry Fleytman | * Free Software Foundation; version 2 of the License and no later version.
|
59 | 786fd2b0 | Dmitry Fleytman | *
|
60 | 786fd2b0 | Dmitry Fleytman | * This program is distributed in the hope that it will be useful, but
|
61 | 786fd2b0 | Dmitry Fleytman | * WITHOUT ANY WARRANTY; without even the implied warranty of
|
62 | 786fd2b0 | Dmitry Fleytman | * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
63 | 786fd2b0 | Dmitry Fleytman | * NON INFRINGEMENT. See the GNU General Public License for more
|
64 | 786fd2b0 | Dmitry Fleytman | * details.
|
65 | 786fd2b0 | Dmitry Fleytman | *
|
66 | 786fd2b0 | Dmitry Fleytman | * You should have received a copy of the GNU General Public License
|
67 | 786fd2b0 | Dmitry Fleytman | * along with this program; if not, write to the Free Software
|
68 | 786fd2b0 | Dmitry Fleytman | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
69 | 786fd2b0 | Dmitry Fleytman | *
|
70 | 786fd2b0 | Dmitry Fleytman | * The full GNU General Public License is included in this distribution in
|
71 | 786fd2b0 | Dmitry Fleytman | * the file called "COPYING".
|
72 | 786fd2b0 | Dmitry Fleytman | *
|
73 | 786fd2b0 | Dmitry Fleytman | * Maintained by: Shreyas Bhatewara <pv-drivers@vmware.com>
|
74 | 786fd2b0 | Dmitry Fleytman | *
|
75 | 786fd2b0 | Dmitry Fleytman | */
|
76 | 786fd2b0 | Dmitry Fleytman | |
77 | 786fd2b0 | Dmitry Fleytman | struct UPT1_TxStats {
|
78 | 786fd2b0 | Dmitry Fleytman | u64 TSOPktsTxOK; /* TSO pkts post-segmentation */
|
79 | 786fd2b0 | Dmitry Fleytman | u64 TSOBytesTxOK; |
80 | 786fd2b0 | Dmitry Fleytman | u64 ucastPktsTxOK; |
81 | 786fd2b0 | Dmitry Fleytman | u64 ucastBytesTxOK; |
82 | 786fd2b0 | Dmitry Fleytman | u64 mcastPktsTxOK; |
83 | 786fd2b0 | Dmitry Fleytman | u64 mcastBytesTxOK; |
84 | 786fd2b0 | Dmitry Fleytman | u64 bcastPktsTxOK; |
85 | 786fd2b0 | Dmitry Fleytman | u64 bcastBytesTxOK; |
86 | 786fd2b0 | Dmitry Fleytman | u64 pktsTxError; |
87 | 786fd2b0 | Dmitry Fleytman | u64 pktsTxDiscard; |
88 | 786fd2b0 | Dmitry Fleytman | }; |
89 | 786fd2b0 | Dmitry Fleytman | |
90 | 786fd2b0 | Dmitry Fleytman | struct UPT1_RxStats {
|
91 | 786fd2b0 | Dmitry Fleytman | u64 LROPktsRxOK; /* LRO pkts */
|
92 | 786fd2b0 | Dmitry Fleytman | u64 LROBytesRxOK; /* bytes from LRO pkts */
|
93 | 786fd2b0 | Dmitry Fleytman | /* the following counters are for pkts from the wire, i.e., pre-LRO */
|
94 | 786fd2b0 | Dmitry Fleytman | u64 ucastPktsRxOK; |
95 | 786fd2b0 | Dmitry Fleytman | u64 ucastBytesRxOK; |
96 | 786fd2b0 | Dmitry Fleytman | u64 mcastPktsRxOK; |
97 | 786fd2b0 | Dmitry Fleytman | u64 mcastBytesRxOK; |
98 | 786fd2b0 | Dmitry Fleytman | u64 bcastPktsRxOK; |
99 | 786fd2b0 | Dmitry Fleytman | u64 bcastBytesRxOK; |
100 | 786fd2b0 | Dmitry Fleytman | u64 pktsRxOutOfBuf; |
101 | 786fd2b0 | Dmitry Fleytman | u64 pktsRxError; |
102 | 786fd2b0 | Dmitry Fleytman | }; |
103 | 786fd2b0 | Dmitry Fleytman | |
104 | 786fd2b0 | Dmitry Fleytman | /* interrupt moderation level */
|
105 | 786fd2b0 | Dmitry Fleytman | enum {
|
106 | 786fd2b0 | Dmitry Fleytman | UPT1_IML_NONE = 0, /* no interrupt moderation */ |
107 | 786fd2b0 | Dmitry Fleytman | UPT1_IML_HIGHEST = 7, /* least intr generated */ |
108 | 786fd2b0 | Dmitry Fleytman | UPT1_IML_ADAPTIVE = 8, /* adpative intr moderation */ |
109 | 786fd2b0 | Dmitry Fleytman | }; |
110 | 786fd2b0 | Dmitry Fleytman | /* values for UPT1_RSSConf.hashFunc */
|
111 | 786fd2b0 | Dmitry Fleytman | enum {
|
112 | 786fd2b0 | Dmitry Fleytman | UPT1_RSS_HASH_TYPE_NONE = 0x0,
|
113 | 786fd2b0 | Dmitry Fleytman | UPT1_RSS_HASH_TYPE_IPV4 = 0x01,
|
114 | 786fd2b0 | Dmitry Fleytman | UPT1_RSS_HASH_TYPE_TCP_IPV4 = 0x02,
|
115 | 786fd2b0 | Dmitry Fleytman | UPT1_RSS_HASH_TYPE_IPV6 = 0x04,
|
116 | 786fd2b0 | Dmitry Fleytman | UPT1_RSS_HASH_TYPE_TCP_IPV6 = 0x08,
|
117 | 786fd2b0 | Dmitry Fleytman | }; |
118 | 786fd2b0 | Dmitry Fleytman | |
119 | 786fd2b0 | Dmitry Fleytman | enum {
|
120 | 786fd2b0 | Dmitry Fleytman | UPT1_RSS_HASH_FUNC_NONE = 0x0,
|
121 | 786fd2b0 | Dmitry Fleytman | UPT1_RSS_HASH_FUNC_TOEPLITZ = 0x01,
|
122 | 786fd2b0 | Dmitry Fleytman | }; |
123 | 786fd2b0 | Dmitry Fleytman | |
124 | 786fd2b0 | Dmitry Fleytman | #define UPT1_RSS_MAX_KEY_SIZE 40 |
125 | 786fd2b0 | Dmitry Fleytman | #define UPT1_RSS_MAX_IND_TABLE_SIZE 128 |
126 | 786fd2b0 | Dmitry Fleytman | |
127 | 786fd2b0 | Dmitry Fleytman | struct UPT1_RSSConf {
|
128 | 786fd2b0 | Dmitry Fleytman | u16 hashType; |
129 | 786fd2b0 | Dmitry Fleytman | u16 hashFunc; |
130 | 786fd2b0 | Dmitry Fleytman | u16 hashKeySize; |
131 | 786fd2b0 | Dmitry Fleytman | u16 indTableSize; |
132 | 786fd2b0 | Dmitry Fleytman | u8 hashKey[UPT1_RSS_MAX_KEY_SIZE]; |
133 | 786fd2b0 | Dmitry Fleytman | u8 indTable[UPT1_RSS_MAX_IND_TABLE_SIZE]; |
134 | 786fd2b0 | Dmitry Fleytman | }; |
135 | 786fd2b0 | Dmitry Fleytman | |
136 | 786fd2b0 | Dmitry Fleytman | /* features */
|
137 | 786fd2b0 | Dmitry Fleytman | enum {
|
138 | 389dd807 | Dmitry Fleytman | UPT1_F_RXCSUM = 0x0001, /* rx csum verification */ |
139 | 389dd807 | Dmitry Fleytman | UPT1_F_RSS = 0x0002,
|
140 | 389dd807 | Dmitry Fleytman | UPT1_F_RXVLAN = 0x0004, /* VLAN tag stripping */ |
141 | 389dd807 | Dmitry Fleytman | UPT1_F_LRO = 0x0008,
|
142 | 786fd2b0 | Dmitry Fleytman | }; |
143 | 786fd2b0 | Dmitry Fleytman | |
144 | 786fd2b0 | Dmitry Fleytman | /* all registers are 32 bit wide */
|
145 | 786fd2b0 | Dmitry Fleytman | /* BAR 1 */
|
146 | 786fd2b0 | Dmitry Fleytman | enum {
|
147 | 786fd2b0 | Dmitry Fleytman | VMXNET3_REG_VRRS = 0x0, /* Vmxnet3 Revision Report Selection */ |
148 | 786fd2b0 | Dmitry Fleytman | VMXNET3_REG_UVRS = 0x8, /* UPT Version Report Selection */ |
149 | 786fd2b0 | Dmitry Fleytman | VMXNET3_REG_DSAL = 0x10, /* Driver Shared Address Low */ |
150 | 786fd2b0 | Dmitry Fleytman | VMXNET3_REG_DSAH = 0x18, /* Driver Shared Address High */ |
151 | 786fd2b0 | Dmitry Fleytman | VMXNET3_REG_CMD = 0x20, /* Command */ |
152 | 786fd2b0 | Dmitry Fleytman | VMXNET3_REG_MACL = 0x28, /* MAC Address Low */ |
153 | 786fd2b0 | Dmitry Fleytman | VMXNET3_REG_MACH = 0x30, /* MAC Address High */ |
154 | 786fd2b0 | Dmitry Fleytman | VMXNET3_REG_ICR = 0x38, /* Interrupt Cause Register */ |
155 | 786fd2b0 | Dmitry Fleytman | VMXNET3_REG_ECR = 0x40 /* Event Cause Register */ |
156 | 786fd2b0 | Dmitry Fleytman | }; |
157 | 786fd2b0 | Dmitry Fleytman | |
158 | 786fd2b0 | Dmitry Fleytman | /* BAR 0 */
|
159 | 786fd2b0 | Dmitry Fleytman | enum {
|
160 | 786fd2b0 | Dmitry Fleytman | VMXNET3_REG_IMR = 0x0, /* Interrupt Mask Register */ |
161 | 786fd2b0 | Dmitry Fleytman | VMXNET3_REG_TXPROD = 0x600, /* Tx Producer Index */ |
162 | 786fd2b0 | Dmitry Fleytman | VMXNET3_REG_RXPROD = 0x800, /* Rx Producer Index for ring 1 */ |
163 | 786fd2b0 | Dmitry Fleytman | VMXNET3_REG_RXPROD2 = 0xA00 /* Rx Producer Index for ring 2 */ |
164 | 786fd2b0 | Dmitry Fleytman | }; |
165 | 786fd2b0 | Dmitry Fleytman | |
166 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_PT_REG_SIZE 4096 /* BAR 0 */ |
167 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_VD_REG_SIZE 4096 /* BAR 1 */ |
168 | 786fd2b0 | Dmitry Fleytman | |
169 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_REG_ALIGN 8 /* All registers are 8-byte aligned. */ |
170 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_REG_ALIGN_MASK 0x7 |
171 | 786fd2b0 | Dmitry Fleytman | |
172 | 786fd2b0 | Dmitry Fleytman | /* I/O Mapped access to registers */
|
173 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_IO_TYPE_PT 0 |
174 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_IO_TYPE_VD 1 |
175 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_IO_ADDR(type, reg) (((type) << 24) | ((reg) & 0xFFFFFF)) |
176 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_IO_TYPE(addr) ((addr) >> 24) |
177 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_IO_REG(addr) ((addr) & 0xFFFFFF) |
178 | 786fd2b0 | Dmitry Fleytman | |
179 | 786fd2b0 | Dmitry Fleytman | enum {
|
180 | 786fd2b0 | Dmitry Fleytman | VMXNET3_CMD_FIRST_SET = 0xCAFE0000,
|
181 | 786fd2b0 | Dmitry Fleytman | VMXNET3_CMD_ACTIVATE_DEV = VMXNET3_CMD_FIRST_SET, /* 0xCAFE0000 */
|
182 | 786fd2b0 | Dmitry Fleytman | VMXNET3_CMD_QUIESCE_DEV, /* 0xCAFE0001 */
|
183 | 786fd2b0 | Dmitry Fleytman | VMXNET3_CMD_RESET_DEV, /* 0xCAFE0002 */
|
184 | 786fd2b0 | Dmitry Fleytman | VMXNET3_CMD_UPDATE_RX_MODE, /* 0xCAFE0003 */
|
185 | 786fd2b0 | Dmitry Fleytman | VMXNET3_CMD_UPDATE_MAC_FILTERS, /* 0xCAFE0004 */
|
186 | 786fd2b0 | Dmitry Fleytman | VMXNET3_CMD_UPDATE_VLAN_FILTERS, /* 0xCAFE0005 */
|
187 | 786fd2b0 | Dmitry Fleytman | VMXNET3_CMD_UPDATE_RSSIDT, /* 0xCAFE0006 */
|
188 | 786fd2b0 | Dmitry Fleytman | VMXNET3_CMD_UPDATE_IML, /* 0xCAFE0007 */
|
189 | 786fd2b0 | Dmitry Fleytman | VMXNET3_CMD_UPDATE_PMCFG, /* 0xCAFE0008 */
|
190 | 786fd2b0 | Dmitry Fleytman | VMXNET3_CMD_UPDATE_FEATURE, /* 0xCAFE0009 */
|
191 | 786fd2b0 | Dmitry Fleytman | VMXNET3_CMD_LOAD_PLUGIN, /* 0xCAFE000A */
|
192 | 786fd2b0 | Dmitry Fleytman | |
193 | 786fd2b0 | Dmitry Fleytman | VMXNET3_CMD_FIRST_GET = 0xF00D0000,
|
194 | 786fd2b0 | Dmitry Fleytman | VMXNET3_CMD_GET_QUEUE_STATUS = VMXNET3_CMD_FIRST_GET, /* 0xF00D0000 */
|
195 | 786fd2b0 | Dmitry Fleytman | VMXNET3_CMD_GET_STATS, /* 0xF00D0001 */
|
196 | 786fd2b0 | Dmitry Fleytman | VMXNET3_CMD_GET_LINK, /* 0xF00D0002 */
|
197 | 786fd2b0 | Dmitry Fleytman | VMXNET3_CMD_GET_PERM_MAC_LO, /* 0xF00D0003 */
|
198 | 786fd2b0 | Dmitry Fleytman | VMXNET3_CMD_GET_PERM_MAC_HI, /* 0xF00D0004 */
|
199 | 786fd2b0 | Dmitry Fleytman | VMXNET3_CMD_GET_DID_LO, /* 0xF00D0005 */
|
200 | 786fd2b0 | Dmitry Fleytman | VMXNET3_CMD_GET_DID_HI, /* 0xF00D0006 */
|
201 | 786fd2b0 | Dmitry Fleytman | VMXNET3_CMD_GET_DEV_EXTRA_INFO, /* 0xF00D0007 */
|
202 | 786fd2b0 | Dmitry Fleytman | VMXNET3_CMD_GET_CONF_INTR /* 0xF00D0008 */
|
203 | 786fd2b0 | Dmitry Fleytman | }; |
204 | 786fd2b0 | Dmitry Fleytman | |
205 | 786fd2b0 | Dmitry Fleytman | /*
|
206 | 786fd2b0 | Dmitry Fleytman | * Little Endian layout of bitfields -
|
207 | 786fd2b0 | Dmitry Fleytman | * Byte 0 : 7.....len.....0
|
208 | 786fd2b0 | Dmitry Fleytman | * Byte 1 : rsvd gen 13.len.8
|
209 | 786fd2b0 | Dmitry Fleytman | * Byte 2 : 5.msscof.0 ext1 dtype
|
210 | 786fd2b0 | Dmitry Fleytman | * Byte 3 : 13...msscof...6
|
211 | 786fd2b0 | Dmitry Fleytman | *
|
212 | 786fd2b0 | Dmitry Fleytman | * Big Endian layout of bitfields -
|
213 | 786fd2b0 | Dmitry Fleytman | * Byte 0: 13...msscof...6
|
214 | 786fd2b0 | Dmitry Fleytman | * Byte 1 : 5.msscof.0 ext1 dtype
|
215 | 786fd2b0 | Dmitry Fleytman | * Byte 2 : rsvd gen 13.len.8
|
216 | 786fd2b0 | Dmitry Fleytman | * Byte 3 : 7.....len.....0
|
217 | 786fd2b0 | Dmitry Fleytman | *
|
218 | 786fd2b0 | Dmitry Fleytman | * Thus, le32_to_cpu on the dword will allow the big endian driver to read
|
219 | 786fd2b0 | Dmitry Fleytman | * the bit fields correctly. And cpu_to_le32 will convert bitfields
|
220 | 786fd2b0 | Dmitry Fleytman | * bit fields written by big endian driver to format required by device.
|
221 | 786fd2b0 | Dmitry Fleytman | */
|
222 | 786fd2b0 | Dmitry Fleytman | |
223 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_TxDesc {
|
224 | 786fd2b0 | Dmitry Fleytman | __le64 addr; |
225 | 786fd2b0 | Dmitry Fleytman | |
226 | 786fd2b0 | Dmitry Fleytman | #ifdef __BIG_ENDIAN_BITFIELD
|
227 | 786fd2b0 | Dmitry Fleytman | u32 msscof:14; /* MSS, checksum offset, flags */ |
228 | 786fd2b0 | Dmitry Fleytman | u32 ext1:1;
|
229 | 786fd2b0 | Dmitry Fleytman | u32 dtype:1; /* descriptor type */ |
230 | 786fd2b0 | Dmitry Fleytman | u32 rsvd:1;
|
231 | 786fd2b0 | Dmitry Fleytman | u32 gen:1; /* generation bit */ |
232 | 786fd2b0 | Dmitry Fleytman | u32 len:14;
|
233 | 786fd2b0 | Dmitry Fleytman | #else
|
234 | 786fd2b0 | Dmitry Fleytman | u32 len:14;
|
235 | 786fd2b0 | Dmitry Fleytman | u32 gen:1; /* generation bit */ |
236 | 786fd2b0 | Dmitry Fleytman | u32 rsvd:1;
|
237 | 786fd2b0 | Dmitry Fleytman | u32 dtype:1; /* descriptor type */ |
238 | 786fd2b0 | Dmitry Fleytman | u32 ext1:1;
|
239 | 786fd2b0 | Dmitry Fleytman | u32 msscof:14; /* MSS, checksum offset, flags */ |
240 | 786fd2b0 | Dmitry Fleytman | #endif /* __BIG_ENDIAN_BITFIELD */ |
241 | 786fd2b0 | Dmitry Fleytman | |
242 | 786fd2b0 | Dmitry Fleytman | #ifdef __BIG_ENDIAN_BITFIELD
|
243 | 786fd2b0 | Dmitry Fleytman | u32 tci:16; /* Tag to Insert */ |
244 | 786fd2b0 | Dmitry Fleytman | u32 ti:1; /* VLAN Tag Insertion */ |
245 | 786fd2b0 | Dmitry Fleytman | u32 ext2:1;
|
246 | 786fd2b0 | Dmitry Fleytman | u32 cq:1; /* completion request */ |
247 | 786fd2b0 | Dmitry Fleytman | u32 eop:1; /* End Of Packet */ |
248 | 786fd2b0 | Dmitry Fleytman | u32 om:2; /* offload mode */ |
249 | 786fd2b0 | Dmitry Fleytman | u32 hlen:10; /* header len */ |
250 | 786fd2b0 | Dmitry Fleytman | #else
|
251 | 786fd2b0 | Dmitry Fleytman | u32 hlen:10; /* header len */ |
252 | 786fd2b0 | Dmitry Fleytman | u32 om:2; /* offload mode */ |
253 | 786fd2b0 | Dmitry Fleytman | u32 eop:1; /* End Of Packet */ |
254 | 786fd2b0 | Dmitry Fleytman | u32 cq:1; /* completion request */ |
255 | 786fd2b0 | Dmitry Fleytman | u32 ext2:1;
|
256 | 786fd2b0 | Dmitry Fleytman | u32 ti:1; /* VLAN Tag Insertion */ |
257 | 786fd2b0 | Dmitry Fleytman | u32 tci:16; /* Tag to Insert */ |
258 | 786fd2b0 | Dmitry Fleytman | #endif /* __BIG_ENDIAN_BITFIELD */ |
259 | 786fd2b0 | Dmitry Fleytman | }; |
260 | 786fd2b0 | Dmitry Fleytman | |
261 | 786fd2b0 | Dmitry Fleytman | /* TxDesc.OM values */
|
262 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_OM_NONE 0 |
263 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_OM_CSUM 2 |
264 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_OM_TSO 3 |
265 | 786fd2b0 | Dmitry Fleytman | |
266 | 786fd2b0 | Dmitry Fleytman | /* fields in TxDesc we access w/o using bit fields */
|
267 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_TXD_EOP_SHIFT 12 |
268 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_TXD_CQ_SHIFT 13 |
269 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_TXD_GEN_SHIFT 14 |
270 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_TXD_EOP_DWORD_SHIFT 3 |
271 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_TXD_GEN_DWORD_SHIFT 2 |
272 | 786fd2b0 | Dmitry Fleytman | |
273 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_TXD_CQ (1 << VMXNET3_TXD_CQ_SHIFT) |
274 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_TXD_EOP (1 << VMXNET3_TXD_EOP_SHIFT) |
275 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_TXD_GEN (1 << VMXNET3_TXD_GEN_SHIFT) |
276 | 786fd2b0 | Dmitry Fleytman | |
277 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_HDR_COPY_SIZE 128 |
278 | 786fd2b0 | Dmitry Fleytman | |
279 | 786fd2b0 | Dmitry Fleytman | |
280 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_TxDataDesc {
|
281 | 786fd2b0 | Dmitry Fleytman | u8 data[VMXNET3_HDR_COPY_SIZE]; |
282 | 786fd2b0 | Dmitry Fleytman | }; |
283 | 786fd2b0 | Dmitry Fleytman | |
284 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_TCD_GEN_SHIFT 31 |
285 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_TCD_GEN_SIZE 1 |
286 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_TCD_TXIDX_SHIFT 0 |
287 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_TCD_TXIDX_SIZE 12 |
288 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_TCD_GEN_DWORD_SHIFT 3 |
289 | 786fd2b0 | Dmitry Fleytman | |
290 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_TxCompDesc {
|
291 | 786fd2b0 | Dmitry Fleytman | u32 txdIdx:12; /* Index of the EOP TxDesc */ |
292 | 786fd2b0 | Dmitry Fleytman | u32 ext1:20;
|
293 | 786fd2b0 | Dmitry Fleytman | |
294 | 786fd2b0 | Dmitry Fleytman | __le32 ext2; |
295 | 786fd2b0 | Dmitry Fleytman | __le32 ext3; |
296 | 786fd2b0 | Dmitry Fleytman | |
297 | 786fd2b0 | Dmitry Fleytman | u32 rsvd:24;
|
298 | 786fd2b0 | Dmitry Fleytman | u32 type:7; /* completion type */ |
299 | 786fd2b0 | Dmitry Fleytman | u32 gen:1; /* generation bit */ |
300 | 786fd2b0 | Dmitry Fleytman | }; |
301 | 786fd2b0 | Dmitry Fleytman | |
302 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_RxDesc {
|
303 | 786fd2b0 | Dmitry Fleytman | __le64 addr; |
304 | 786fd2b0 | Dmitry Fleytman | |
305 | 786fd2b0 | Dmitry Fleytman | #ifdef __BIG_ENDIAN_BITFIELD
|
306 | 786fd2b0 | Dmitry Fleytman | u32 gen:1; /* Generation bit */ |
307 | 786fd2b0 | Dmitry Fleytman | u32 rsvd:15;
|
308 | 786fd2b0 | Dmitry Fleytman | u32 dtype:1; /* Descriptor type */ |
309 | 786fd2b0 | Dmitry Fleytman | u32 btype:1; /* Buffer Type */ |
310 | 786fd2b0 | Dmitry Fleytman | u32 len:14;
|
311 | 786fd2b0 | Dmitry Fleytman | #else
|
312 | 786fd2b0 | Dmitry Fleytman | u32 len:14;
|
313 | 786fd2b0 | Dmitry Fleytman | u32 btype:1; /* Buffer Type */ |
314 | 786fd2b0 | Dmitry Fleytman | u32 dtype:1; /* Descriptor type */ |
315 | 786fd2b0 | Dmitry Fleytman | u32 rsvd:15;
|
316 | 786fd2b0 | Dmitry Fleytman | u32 gen:1; /* Generation bit */ |
317 | 786fd2b0 | Dmitry Fleytman | #endif
|
318 | 786fd2b0 | Dmitry Fleytman | u32 ext1; |
319 | 786fd2b0 | Dmitry Fleytman | }; |
320 | 786fd2b0 | Dmitry Fleytman | |
321 | 786fd2b0 | Dmitry Fleytman | /* values of RXD.BTYPE */
|
322 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_RXD_BTYPE_HEAD 0 /* head only */ |
323 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_RXD_BTYPE_BODY 1 /* body only */ |
324 | 786fd2b0 | Dmitry Fleytman | |
325 | 786fd2b0 | Dmitry Fleytman | /* fields in RxDesc we access w/o using bit fields */
|
326 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_RXD_BTYPE_SHIFT 14 |
327 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_RXD_GEN_SHIFT 31 |
328 | 786fd2b0 | Dmitry Fleytman | |
329 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_RxCompDesc {
|
330 | 786fd2b0 | Dmitry Fleytman | #ifdef __BIG_ENDIAN_BITFIELD
|
331 | 786fd2b0 | Dmitry Fleytman | u32 ext2:1;
|
332 | 786fd2b0 | Dmitry Fleytman | u32 cnc:1; /* Checksum Not Calculated */ |
333 | 786fd2b0 | Dmitry Fleytman | u32 rssType:4; /* RSS hash type used */ |
334 | 786fd2b0 | Dmitry Fleytman | u32 rqID:10; /* rx queue/ring ID */ |
335 | 786fd2b0 | Dmitry Fleytman | u32 sop:1; /* Start of Packet */ |
336 | 786fd2b0 | Dmitry Fleytman | u32 eop:1; /* End of Packet */ |
337 | 786fd2b0 | Dmitry Fleytman | u32 ext1:2;
|
338 | 786fd2b0 | Dmitry Fleytman | u32 rxdIdx:12; /* Index of the RxDesc */ |
339 | 786fd2b0 | Dmitry Fleytman | #else
|
340 | 786fd2b0 | Dmitry Fleytman | u32 rxdIdx:12; /* Index of the RxDesc */ |
341 | 786fd2b0 | Dmitry Fleytman | u32 ext1:2;
|
342 | 786fd2b0 | Dmitry Fleytman | u32 eop:1; /* End of Packet */ |
343 | 786fd2b0 | Dmitry Fleytman | u32 sop:1; /* Start of Packet */ |
344 | 786fd2b0 | Dmitry Fleytman | u32 rqID:10; /* rx queue/ring ID */ |
345 | 786fd2b0 | Dmitry Fleytman | u32 rssType:4; /* RSS hash type used */ |
346 | 786fd2b0 | Dmitry Fleytman | u32 cnc:1; /* Checksum Not Calculated */ |
347 | 786fd2b0 | Dmitry Fleytman | u32 ext2:1;
|
348 | 786fd2b0 | Dmitry Fleytman | #endif /* __BIG_ENDIAN_BITFIELD */ |
349 | 786fd2b0 | Dmitry Fleytman | |
350 | 786fd2b0 | Dmitry Fleytman | __le32 rssHash; /* RSS hash value */
|
351 | 786fd2b0 | Dmitry Fleytman | |
352 | 786fd2b0 | Dmitry Fleytman | #ifdef __BIG_ENDIAN_BITFIELD
|
353 | 786fd2b0 | Dmitry Fleytman | u32 tci:16; /* Tag stripped */ |
354 | 786fd2b0 | Dmitry Fleytman | u32 ts:1; /* Tag is stripped */ |
355 | 786fd2b0 | Dmitry Fleytman | u32 err:1; /* Error */ |
356 | 786fd2b0 | Dmitry Fleytman | u32 len:14; /* data length */ |
357 | 786fd2b0 | Dmitry Fleytman | #else
|
358 | 786fd2b0 | Dmitry Fleytman | u32 len:14; /* data length */ |
359 | 786fd2b0 | Dmitry Fleytman | u32 err:1; /* Error */ |
360 | 786fd2b0 | Dmitry Fleytman | u32 ts:1; /* Tag is stripped */ |
361 | 786fd2b0 | Dmitry Fleytman | u32 tci:16; /* Tag stripped */ |
362 | 786fd2b0 | Dmitry Fleytman | #endif /* __BIG_ENDIAN_BITFIELD */ |
363 | 786fd2b0 | Dmitry Fleytman | |
364 | 786fd2b0 | Dmitry Fleytman | |
365 | 786fd2b0 | Dmitry Fleytman | #ifdef __BIG_ENDIAN_BITFIELD
|
366 | 786fd2b0 | Dmitry Fleytman | u32 gen:1; /* generation bit */ |
367 | 786fd2b0 | Dmitry Fleytman | u32 type:7; /* completion type */ |
368 | 786fd2b0 | Dmitry Fleytman | u32 fcs:1; /* Frame CRC correct */ |
369 | 786fd2b0 | Dmitry Fleytman | u32 frg:1; /* IP Fragment */ |
370 | 786fd2b0 | Dmitry Fleytman | u32 v4:1; /* IPv4 */ |
371 | 786fd2b0 | Dmitry Fleytman | u32 v6:1; /* IPv6 */ |
372 | 786fd2b0 | Dmitry Fleytman | u32 ipc:1; /* IP Checksum Correct */ |
373 | 786fd2b0 | Dmitry Fleytman | u32 tcp:1; /* TCP packet */ |
374 | 786fd2b0 | Dmitry Fleytman | u32 udp:1; /* UDP packet */ |
375 | 786fd2b0 | Dmitry Fleytman | u32 tuc:1; /* TCP/UDP Checksum Correct */ |
376 | 786fd2b0 | Dmitry Fleytman | u32 csum:16;
|
377 | 786fd2b0 | Dmitry Fleytman | #else
|
378 | 786fd2b0 | Dmitry Fleytman | u32 csum:16;
|
379 | 786fd2b0 | Dmitry Fleytman | u32 tuc:1; /* TCP/UDP Checksum Correct */ |
380 | 786fd2b0 | Dmitry Fleytman | u32 udp:1; /* UDP packet */ |
381 | 786fd2b0 | Dmitry Fleytman | u32 tcp:1; /* TCP packet */ |
382 | 786fd2b0 | Dmitry Fleytman | u32 ipc:1; /* IP Checksum Correct */ |
383 | 786fd2b0 | Dmitry Fleytman | u32 v6:1; /* IPv6 */ |
384 | 786fd2b0 | Dmitry Fleytman | u32 v4:1; /* IPv4 */ |
385 | 786fd2b0 | Dmitry Fleytman | u32 frg:1; /* IP Fragment */ |
386 | 786fd2b0 | Dmitry Fleytman | u32 fcs:1; /* Frame CRC correct */ |
387 | 786fd2b0 | Dmitry Fleytman | u32 type:7; /* completion type */ |
388 | 786fd2b0 | Dmitry Fleytman | u32 gen:1; /* generation bit */ |
389 | 786fd2b0 | Dmitry Fleytman | #endif /* __BIG_ENDIAN_BITFIELD */ |
390 | 786fd2b0 | Dmitry Fleytman | }; |
391 | 786fd2b0 | Dmitry Fleytman | |
392 | 786fd2b0 | Dmitry Fleytman | /* fields in RxCompDesc we access via Vmxnet3_GenericDesc.dword[3] */
|
393 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_RCD_TUC_SHIFT 16 |
394 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_RCD_IPC_SHIFT 19 |
395 | 786fd2b0 | Dmitry Fleytman | |
396 | 786fd2b0 | Dmitry Fleytman | /* fields in RxCompDesc we access via Vmxnet3_GenericDesc.qword[1] */
|
397 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_RCD_TYPE_SHIFT 56 |
398 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_RCD_GEN_SHIFT 63 |
399 | 786fd2b0 | Dmitry Fleytman | |
400 | 786fd2b0 | Dmitry Fleytman | /* csum OK for TCP/UDP pkts over IP */
|
401 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_RCD_CSUM_OK (1 << VMXNET3_RCD_TUC_SHIFT | \ |
402 | 786fd2b0 | Dmitry Fleytman | 1 << VMXNET3_RCD_IPC_SHIFT)
|
403 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_TXD_GEN_SIZE 1 |
404 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_TXD_EOP_SIZE 1 |
405 | 786fd2b0 | Dmitry Fleytman | |
406 | 786fd2b0 | Dmitry Fleytman | /* value of RxCompDesc.rssType */
|
407 | 786fd2b0 | Dmitry Fleytman | enum {
|
408 | 786fd2b0 | Dmitry Fleytman | VMXNET3_RCD_RSS_TYPE_NONE = 0,
|
409 | 786fd2b0 | Dmitry Fleytman | VMXNET3_RCD_RSS_TYPE_IPV4 = 1,
|
410 | 786fd2b0 | Dmitry Fleytman | VMXNET3_RCD_RSS_TYPE_TCPIPV4 = 2,
|
411 | 786fd2b0 | Dmitry Fleytman | VMXNET3_RCD_RSS_TYPE_IPV6 = 3,
|
412 | 786fd2b0 | Dmitry Fleytman | VMXNET3_RCD_RSS_TYPE_TCPIPV6 = 4,
|
413 | 786fd2b0 | Dmitry Fleytman | }; |
414 | 786fd2b0 | Dmitry Fleytman | |
415 | 786fd2b0 | Dmitry Fleytman | |
416 | 786fd2b0 | Dmitry Fleytman | /* a union for accessing all cmd/completion descriptors */
|
417 | 786fd2b0 | Dmitry Fleytman | union Vmxnet3_GenericDesc {
|
418 | 786fd2b0 | Dmitry Fleytman | __le64 qword[2];
|
419 | 786fd2b0 | Dmitry Fleytman | __le32 dword[4];
|
420 | 786fd2b0 | Dmitry Fleytman | __le16 word[8];
|
421 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_TxDesc txd;
|
422 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_RxDesc rxd;
|
423 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_TxCompDesc tcd;
|
424 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_RxCompDesc rcd;
|
425 | 786fd2b0 | Dmitry Fleytman | }; |
426 | 786fd2b0 | Dmitry Fleytman | |
427 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_INIT_GEN 1 |
428 | 786fd2b0 | Dmitry Fleytman | |
429 | 786fd2b0 | Dmitry Fleytman | /* Max size of a single tx buffer */
|
430 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_MAX_TX_BUF_SIZE (1 << 14) |
431 | 786fd2b0 | Dmitry Fleytman | |
432 | 786fd2b0 | Dmitry Fleytman | /* # of tx desc needed for a tx buffer size */
|
433 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_TXD_NEEDED(size) (((size) + VMXNET3_MAX_TX_BUF_SIZE - 1) / \ |
434 | 786fd2b0 | Dmitry Fleytman | VMXNET3_MAX_TX_BUF_SIZE) |
435 | 786fd2b0 | Dmitry Fleytman | |
436 | 786fd2b0 | Dmitry Fleytman | /* max # of tx descs for a non-tso pkt */
|
437 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_MAX_TXD_PER_PKT 16 |
438 | 786fd2b0 | Dmitry Fleytman | |
439 | 786fd2b0 | Dmitry Fleytman | /* Max size of a single rx buffer */
|
440 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_MAX_RX_BUF_SIZE ((1 << 14) - 1) |
441 | 786fd2b0 | Dmitry Fleytman | /* Minimum size of a type 0 buffer */
|
442 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_MIN_T0_BUF_SIZE 128 |
443 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_MAX_CSUM_OFFSET 1024 |
444 | 786fd2b0 | Dmitry Fleytman | |
445 | 786fd2b0 | Dmitry Fleytman | /* Ring base address alignment */
|
446 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_RING_BA_ALIGN 512 |
447 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_RING_BA_MASK (VMXNET3_RING_BA_ALIGN - 1) |
448 | 786fd2b0 | Dmitry Fleytman | |
449 | 786fd2b0 | Dmitry Fleytman | /* Ring size must be a multiple of 32 */
|
450 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_RING_SIZE_ALIGN 32 |
451 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_RING_SIZE_MASK (VMXNET3_RING_SIZE_ALIGN - 1) |
452 | 786fd2b0 | Dmitry Fleytman | |
453 | 786fd2b0 | Dmitry Fleytman | /* Max ring size */
|
454 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_TX_RING_MAX_SIZE 4096 |
455 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_TC_RING_MAX_SIZE 4096 |
456 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_RX_RING_MAX_SIZE 4096 |
457 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_RC_RING_MAX_SIZE 8192 |
458 | 786fd2b0 | Dmitry Fleytman | |
459 | 786fd2b0 | Dmitry Fleytman | /* a list of reasons for queue stop */
|
460 | 786fd2b0 | Dmitry Fleytman | |
461 | 786fd2b0 | Dmitry Fleytman | enum {
|
462 | 786fd2b0 | Dmitry Fleytman | VMXNET3_ERR_NOEOP = 0x80000000, /* cannot find the EOP desc of a pkt */ |
463 | 786fd2b0 | Dmitry Fleytman | VMXNET3_ERR_TXD_REUSE = 0x80000001, /* reuse TxDesc before tx completion */ |
464 | 786fd2b0 | Dmitry Fleytman | VMXNET3_ERR_BIG_PKT = 0x80000002, /* too many TxDesc for a pkt */ |
465 | 786fd2b0 | Dmitry Fleytman | VMXNET3_ERR_DESC_NOT_SPT = 0x80000003, /* descriptor type not supported */ |
466 | 786fd2b0 | Dmitry Fleytman | VMXNET3_ERR_SMALL_BUF = 0x80000004, /* type 0 buffer too small */ |
467 | 786fd2b0 | Dmitry Fleytman | VMXNET3_ERR_STRESS = 0x80000005, /* stress option firing in vmkernel */ |
468 | 786fd2b0 | Dmitry Fleytman | VMXNET3_ERR_SWITCH = 0x80000006, /* mode switch failure */ |
469 | 786fd2b0 | Dmitry Fleytman | VMXNET3_ERR_TXD_INVALID = 0x80000007, /* invalid TxDesc */ |
470 | 786fd2b0 | Dmitry Fleytman | }; |
471 | 786fd2b0 | Dmitry Fleytman | |
472 | 786fd2b0 | Dmitry Fleytman | /* completion descriptor types */
|
473 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_CDTYPE_TXCOMP 0 /* Tx Completion Descriptor */ |
474 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_CDTYPE_RXCOMP 3 /* Rx Completion Descriptor */ |
475 | 786fd2b0 | Dmitry Fleytman | |
476 | 786fd2b0 | Dmitry Fleytman | enum {
|
477 | 786fd2b0 | Dmitry Fleytman | VMXNET3_GOS_BITS_UNK = 0, /* unknown */ |
478 | 786fd2b0 | Dmitry Fleytman | VMXNET3_GOS_BITS_32 = 1,
|
479 | 786fd2b0 | Dmitry Fleytman | VMXNET3_GOS_BITS_64 = 2,
|
480 | 786fd2b0 | Dmitry Fleytman | }; |
481 | 786fd2b0 | Dmitry Fleytman | |
482 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_GOS_TYPE_UNK 0 /* unknown */ |
483 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_GOS_TYPE_LINUX 1 |
484 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_GOS_TYPE_WIN 2 |
485 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_GOS_TYPE_SOLARIS 3 |
486 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_GOS_TYPE_FREEBSD 4 |
487 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_GOS_TYPE_PXE 5 |
488 | 786fd2b0 | Dmitry Fleytman | |
489 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_GOSInfo {
|
490 | 786fd2b0 | Dmitry Fleytman | #ifdef __BIG_ENDIAN_BITFIELD
|
491 | 786fd2b0 | Dmitry Fleytman | u32 gosMisc:10; /* other info about gos */ |
492 | 786fd2b0 | Dmitry Fleytman | u32 gosVer:16; /* gos version */ |
493 | 786fd2b0 | Dmitry Fleytman | u32 gosType:4; /* which guest */ |
494 | 786fd2b0 | Dmitry Fleytman | u32 gosBits:2; /* 32-bit or 64-bit? */ |
495 | 786fd2b0 | Dmitry Fleytman | #else
|
496 | 786fd2b0 | Dmitry Fleytman | u32 gosBits:2; /* 32-bit or 64-bit? */ |
497 | 786fd2b0 | Dmitry Fleytman | u32 gosType:4; /* which guest */ |
498 | 786fd2b0 | Dmitry Fleytman | u32 gosVer:16; /* gos version */ |
499 | 786fd2b0 | Dmitry Fleytman | u32 gosMisc:10; /* other info about gos */ |
500 | 786fd2b0 | Dmitry Fleytman | #endif /* __BIG_ENDIAN_BITFIELD */ |
501 | 786fd2b0 | Dmitry Fleytman | }; |
502 | 786fd2b0 | Dmitry Fleytman | |
503 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_DriverInfo {
|
504 | 786fd2b0 | Dmitry Fleytman | __le32 version; |
505 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_GOSInfo gos;
|
506 | 786fd2b0 | Dmitry Fleytman | __le32 vmxnet3RevSpt; |
507 | 786fd2b0 | Dmitry Fleytman | __le32 uptVerSpt; |
508 | 786fd2b0 | Dmitry Fleytman | }; |
509 | 786fd2b0 | Dmitry Fleytman | |
510 | 786fd2b0 | Dmitry Fleytman | |
511 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_REV1_MAGIC 0xbabefee1 |
512 | 786fd2b0 | Dmitry Fleytman | |
513 | 786fd2b0 | Dmitry Fleytman | /*
|
514 | 786fd2b0 | Dmitry Fleytman | * QueueDescPA must be 128 bytes aligned. It points to an array of
|
515 | 786fd2b0 | Dmitry Fleytman | * Vmxnet3_TxQueueDesc followed by an array of Vmxnet3_RxQueueDesc.
|
516 | 786fd2b0 | Dmitry Fleytman | * The number of Vmxnet3_TxQueueDesc/Vmxnet3_RxQueueDesc are specified by
|
517 | 786fd2b0 | Dmitry Fleytman | * Vmxnet3_MiscConf.numTxQueues/numRxQueues, respectively.
|
518 | 786fd2b0 | Dmitry Fleytman | */
|
519 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_QUEUE_DESC_ALIGN 128 |
520 | 786fd2b0 | Dmitry Fleytman | |
521 | 786fd2b0 | Dmitry Fleytman | |
522 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_MiscConf {
|
523 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_DriverInfo driverInfo;
|
524 | 786fd2b0 | Dmitry Fleytman | __le64 uptFeatures; |
525 | 786fd2b0 | Dmitry Fleytman | __le64 ddPA; /* driver data PA */
|
526 | 786fd2b0 | Dmitry Fleytman | __le64 queueDescPA; /* queue descriptor table PA */
|
527 | 786fd2b0 | Dmitry Fleytman | __le32 ddLen; /* driver data len */
|
528 | 786fd2b0 | Dmitry Fleytman | __le32 queueDescLen; /* queue desc. table len in bytes */
|
529 | 786fd2b0 | Dmitry Fleytman | __le32 mtu; |
530 | 786fd2b0 | Dmitry Fleytman | __le16 maxNumRxSG; |
531 | 786fd2b0 | Dmitry Fleytman | u8 numTxQueues; |
532 | 786fd2b0 | Dmitry Fleytman | u8 numRxQueues; |
533 | 786fd2b0 | Dmitry Fleytman | __le32 reserved[4];
|
534 | 786fd2b0 | Dmitry Fleytman | }; |
535 | 786fd2b0 | Dmitry Fleytman | |
536 | 786fd2b0 | Dmitry Fleytman | |
537 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_TxQueueConf {
|
538 | 786fd2b0 | Dmitry Fleytman | __le64 txRingBasePA; |
539 | 786fd2b0 | Dmitry Fleytman | __le64 dataRingBasePA; |
540 | 786fd2b0 | Dmitry Fleytman | __le64 compRingBasePA; |
541 | 786fd2b0 | Dmitry Fleytman | __le64 ddPA; /* driver data */
|
542 | 786fd2b0 | Dmitry Fleytman | __le64 reserved; |
543 | 786fd2b0 | Dmitry Fleytman | __le32 txRingSize; /* # of tx desc */
|
544 | 786fd2b0 | Dmitry Fleytman | __le32 dataRingSize; /* # of data desc */
|
545 | 786fd2b0 | Dmitry Fleytman | __le32 compRingSize; /* # of comp desc */
|
546 | 786fd2b0 | Dmitry Fleytman | __le32 ddLen; /* size of driver data */
|
547 | 786fd2b0 | Dmitry Fleytman | u8 intrIdx; |
548 | 786fd2b0 | Dmitry Fleytman | u8 _pad[7];
|
549 | 786fd2b0 | Dmitry Fleytman | }; |
550 | 786fd2b0 | Dmitry Fleytman | |
551 | 786fd2b0 | Dmitry Fleytman | |
552 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_RxQueueConf {
|
553 | 786fd2b0 | Dmitry Fleytman | __le64 rxRingBasePA[2];
|
554 | 786fd2b0 | Dmitry Fleytman | __le64 compRingBasePA; |
555 | 786fd2b0 | Dmitry Fleytman | __le64 ddPA; /* driver data */
|
556 | 786fd2b0 | Dmitry Fleytman | __le64 reserved; |
557 | 786fd2b0 | Dmitry Fleytman | __le32 rxRingSize[2]; /* # of rx desc */ |
558 | 786fd2b0 | Dmitry Fleytman | __le32 compRingSize; /* # of rx comp desc */
|
559 | 786fd2b0 | Dmitry Fleytman | __le32 ddLen; /* size of driver data */
|
560 | 786fd2b0 | Dmitry Fleytman | u8 intrIdx; |
561 | 786fd2b0 | Dmitry Fleytman | u8 _pad[7];
|
562 | 786fd2b0 | Dmitry Fleytman | }; |
563 | 786fd2b0 | Dmitry Fleytman | |
564 | 786fd2b0 | Dmitry Fleytman | |
565 | 786fd2b0 | Dmitry Fleytman | enum vmxnet3_intr_mask_mode {
|
566 | 786fd2b0 | Dmitry Fleytman | VMXNET3_IMM_AUTO = 0,
|
567 | 786fd2b0 | Dmitry Fleytman | VMXNET3_IMM_ACTIVE = 1,
|
568 | 786fd2b0 | Dmitry Fleytman | VMXNET3_IMM_LAZY = 2
|
569 | 786fd2b0 | Dmitry Fleytman | }; |
570 | 786fd2b0 | Dmitry Fleytman | |
571 | 786fd2b0 | Dmitry Fleytman | enum vmxnet3_intr_type {
|
572 | 786fd2b0 | Dmitry Fleytman | VMXNET3_IT_AUTO = 0,
|
573 | 786fd2b0 | Dmitry Fleytman | VMXNET3_IT_INTX = 1,
|
574 | 786fd2b0 | Dmitry Fleytman | VMXNET3_IT_MSI = 2,
|
575 | 786fd2b0 | Dmitry Fleytman | VMXNET3_IT_MSIX = 3
|
576 | 786fd2b0 | Dmitry Fleytman | }; |
577 | 786fd2b0 | Dmitry Fleytman | |
578 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_MAX_TX_QUEUES 8 |
579 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_MAX_RX_QUEUES 16 |
580 | 786fd2b0 | Dmitry Fleytman | /* addition 1 for events */
|
581 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_MAX_INTRS 25 |
582 | 786fd2b0 | Dmitry Fleytman | |
583 | 786fd2b0 | Dmitry Fleytman | /* value of intrCtrl */
|
584 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_IC_DISABLE_ALL 0x1 /* bit 0 */ |
585 | 786fd2b0 | Dmitry Fleytman | |
586 | 786fd2b0 | Dmitry Fleytman | |
587 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_IntrConf {
|
588 | 786fd2b0 | Dmitry Fleytman | bool autoMask;
|
589 | 786fd2b0 | Dmitry Fleytman | u8 numIntrs; /* # of interrupts */
|
590 | 786fd2b0 | Dmitry Fleytman | u8 eventIntrIdx; |
591 | 786fd2b0 | Dmitry Fleytman | u8 modLevels[VMXNET3_MAX_INTRS]; /* moderation level for
|
592 | 786fd2b0 | Dmitry Fleytman | * each intr */
|
593 | 786fd2b0 | Dmitry Fleytman | __le32 intrCtrl; |
594 | 786fd2b0 | Dmitry Fleytman | __le32 reserved[2];
|
595 | 786fd2b0 | Dmitry Fleytman | }; |
596 | 786fd2b0 | Dmitry Fleytman | |
597 | 786fd2b0 | Dmitry Fleytman | /* one bit per VLAN ID, the size is in the units of u32 */
|
598 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_VFT_SIZE (4096/(sizeof(uint32_t)*8)) |
599 | 786fd2b0 | Dmitry Fleytman | |
600 | 786fd2b0 | Dmitry Fleytman | |
601 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_QueueStatus {
|
602 | 786fd2b0 | Dmitry Fleytman | bool stopped;
|
603 | 786fd2b0 | Dmitry Fleytman | u8 _pad[3];
|
604 | 786fd2b0 | Dmitry Fleytman | __le32 error; |
605 | 786fd2b0 | Dmitry Fleytman | }; |
606 | 786fd2b0 | Dmitry Fleytman | |
607 | 786fd2b0 | Dmitry Fleytman | |
608 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_TxQueueCtrl {
|
609 | 786fd2b0 | Dmitry Fleytman | __le32 txNumDeferred; |
610 | 786fd2b0 | Dmitry Fleytman | __le32 txThreshold; |
611 | 786fd2b0 | Dmitry Fleytman | __le64 reserved; |
612 | 786fd2b0 | Dmitry Fleytman | }; |
613 | 786fd2b0 | Dmitry Fleytman | |
614 | 786fd2b0 | Dmitry Fleytman | |
615 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_RxQueueCtrl {
|
616 | 786fd2b0 | Dmitry Fleytman | bool updateRxProd;
|
617 | 786fd2b0 | Dmitry Fleytman | u8 _pad[7];
|
618 | 786fd2b0 | Dmitry Fleytman | __le64 reserved; |
619 | 786fd2b0 | Dmitry Fleytman | }; |
620 | 786fd2b0 | Dmitry Fleytman | |
621 | 786fd2b0 | Dmitry Fleytman | enum {
|
622 | 786fd2b0 | Dmitry Fleytman | VMXNET3_RXM_UCAST = 0x01, /* unicast only */ |
623 | 786fd2b0 | Dmitry Fleytman | VMXNET3_RXM_MCAST = 0x02, /* multicast passing the filters */ |
624 | 786fd2b0 | Dmitry Fleytman | VMXNET3_RXM_BCAST = 0x04, /* broadcast only */ |
625 | 786fd2b0 | Dmitry Fleytman | VMXNET3_RXM_ALL_MULTI = 0x08, /* all multicast */ |
626 | 786fd2b0 | Dmitry Fleytman | VMXNET3_RXM_PROMISC = 0x10 /* promiscuous */ |
627 | 786fd2b0 | Dmitry Fleytman | }; |
628 | 786fd2b0 | Dmitry Fleytman | |
629 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_RxFilterConf {
|
630 | 786fd2b0 | Dmitry Fleytman | __le32 rxMode; /* VMXNET3_RXM_xxx */
|
631 | 786fd2b0 | Dmitry Fleytman | __le16 mfTableLen; /* size of the multicast filter table */
|
632 | 786fd2b0 | Dmitry Fleytman | __le16 _pad1; |
633 | 786fd2b0 | Dmitry Fleytman | __le64 mfTablePA; /* PA of the multicast filters table */
|
634 | 786fd2b0 | Dmitry Fleytman | __le32 vfTable[VMXNET3_VFT_SIZE]; /* vlan filter */
|
635 | 786fd2b0 | Dmitry Fleytman | }; |
636 | 786fd2b0 | Dmitry Fleytman | |
637 | 786fd2b0 | Dmitry Fleytman | |
638 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_PM_MAX_FILTERS 6 |
639 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_PM_MAX_PATTERN_SIZE 128 |
640 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_PM_MAX_MASK_SIZE (VMXNET3_PM_MAX_PATTERN_SIZE / 8) |
641 | 786fd2b0 | Dmitry Fleytman | |
642 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_PM_WAKEUP_MAGIC cpu_to_le16(0x01) /* wake up on magic pkts */ |
643 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_PM_WAKEUP_FILTER cpu_to_le16(0x02) /* wake up on pkts matching |
644 | 786fd2b0 | Dmitry Fleytman | * filters */
|
645 | 786fd2b0 | Dmitry Fleytman | |
646 | 786fd2b0 | Dmitry Fleytman | |
647 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_PM_PktFilter {
|
648 | 786fd2b0 | Dmitry Fleytman | u8 maskSize; |
649 | 786fd2b0 | Dmitry Fleytman | u8 patternSize; |
650 | 786fd2b0 | Dmitry Fleytman | u8 mask[VMXNET3_PM_MAX_MASK_SIZE]; |
651 | 786fd2b0 | Dmitry Fleytman | u8 pattern[VMXNET3_PM_MAX_PATTERN_SIZE]; |
652 | 786fd2b0 | Dmitry Fleytman | u8 pad[6];
|
653 | 786fd2b0 | Dmitry Fleytman | }; |
654 | 786fd2b0 | Dmitry Fleytman | |
655 | 786fd2b0 | Dmitry Fleytman | |
656 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_PMConf {
|
657 | 786fd2b0 | Dmitry Fleytman | __le16 wakeUpEvents; /* VMXNET3_PM_WAKEUP_xxx */
|
658 | 786fd2b0 | Dmitry Fleytman | u8 numFilters; |
659 | 786fd2b0 | Dmitry Fleytman | u8 pad[5];
|
660 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_PM_PktFilter filters[VMXNET3_PM_MAX_FILTERS];
|
661 | 786fd2b0 | Dmitry Fleytman | }; |
662 | 786fd2b0 | Dmitry Fleytman | |
663 | 786fd2b0 | Dmitry Fleytman | |
664 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_VariableLenConfDesc {
|
665 | 786fd2b0 | Dmitry Fleytman | __le32 confVer; |
666 | 786fd2b0 | Dmitry Fleytman | __le32 confLen; |
667 | 786fd2b0 | Dmitry Fleytman | __le64 confPA; |
668 | 786fd2b0 | Dmitry Fleytman | }; |
669 | 786fd2b0 | Dmitry Fleytman | |
670 | 786fd2b0 | Dmitry Fleytman | |
671 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_TxQueueDesc {
|
672 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_TxQueueCtrl ctrl;
|
673 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_TxQueueConf conf;
|
674 | 786fd2b0 | Dmitry Fleytman | |
675 | 786fd2b0 | Dmitry Fleytman | /* Driver read after a GET command */
|
676 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_QueueStatus status;
|
677 | 786fd2b0 | Dmitry Fleytman | struct UPT1_TxStats stats;
|
678 | 786fd2b0 | Dmitry Fleytman | u8 _pad[88]; /* 128 aligned */ |
679 | 786fd2b0 | Dmitry Fleytman | }; |
680 | 786fd2b0 | Dmitry Fleytman | |
681 | 786fd2b0 | Dmitry Fleytman | |
682 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_RxQueueDesc {
|
683 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_RxQueueCtrl ctrl;
|
684 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_RxQueueConf conf;
|
685 | 786fd2b0 | Dmitry Fleytman | /* Driver read after a GET commad */
|
686 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_QueueStatus status;
|
687 | 786fd2b0 | Dmitry Fleytman | struct UPT1_RxStats stats;
|
688 | 786fd2b0 | Dmitry Fleytman | u8 __pad[88]; /* 128 aligned */ |
689 | 786fd2b0 | Dmitry Fleytman | }; |
690 | 786fd2b0 | Dmitry Fleytman | |
691 | 786fd2b0 | Dmitry Fleytman | |
692 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_DSDevRead {
|
693 | 786fd2b0 | Dmitry Fleytman | /* read-only region for device, read by dev in response to a SET cmd */
|
694 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_MiscConf misc;
|
695 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_IntrConf intrConf;
|
696 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_RxFilterConf rxFilterConf;
|
697 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_VariableLenConfDesc rssConfDesc;
|
698 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_VariableLenConfDesc pmConfDesc;
|
699 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_VariableLenConfDesc pluginConfDesc;
|
700 | 786fd2b0 | Dmitry Fleytman | }; |
701 | 786fd2b0 | Dmitry Fleytman | |
702 | 786fd2b0 | Dmitry Fleytman | /* All structures in DriverShared are padded to multiples of 8 bytes */
|
703 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_DriverShared {
|
704 | 786fd2b0 | Dmitry Fleytman | __le32 magic; |
705 | 786fd2b0 | Dmitry Fleytman | /* make devRead start at 64bit boundaries */
|
706 | 786fd2b0 | Dmitry Fleytman | __le32 pad; |
707 | 786fd2b0 | Dmitry Fleytman | struct Vmxnet3_DSDevRead devRead;
|
708 | 786fd2b0 | Dmitry Fleytman | __le32 ecr; |
709 | 786fd2b0 | Dmitry Fleytman | __le32 reserved[5];
|
710 | 786fd2b0 | Dmitry Fleytman | }; |
711 | 786fd2b0 | Dmitry Fleytman | |
712 | 786fd2b0 | Dmitry Fleytman | |
713 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_ECR_RQERR (1 << 0) |
714 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_ECR_TQERR (1 << 1) |
715 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_ECR_LINK (1 << 2) |
716 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_ECR_DIC (1 << 3) |
717 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_ECR_DEBUG (1 << 4) |
718 | 786fd2b0 | Dmitry Fleytman | |
719 | 786fd2b0 | Dmitry Fleytman | /* flip the gen bit of a ring */
|
720 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_FLIP_RING_GEN(gen) ((gen) = (gen) ^ 0x1) |
721 | 786fd2b0 | Dmitry Fleytman | |
722 | 786fd2b0 | Dmitry Fleytman | /* only use this if moving the idx won't affect the gen bit */
|
723 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_INC_RING_IDX_ONLY(idx, ring_size) \
|
724 | 786fd2b0 | Dmitry Fleytman | do {\
|
725 | 786fd2b0 | Dmitry Fleytman | (idx)++;\ |
726 | 786fd2b0 | Dmitry Fleytman | if (unlikely((idx) == (ring_size))) {\
|
727 | 786fd2b0 | Dmitry Fleytman | (idx) = 0;\
|
728 | 786fd2b0 | Dmitry Fleytman | } \ |
729 | 786fd2b0 | Dmitry Fleytman | } while (0) |
730 | 786fd2b0 | Dmitry Fleytman | |
731 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_SET_VFTABLE_ENTRY(vfTable, vid) \
|
732 | 786fd2b0 | Dmitry Fleytman | (vfTable[vid >> 5] |= (1 << (vid & 31))) |
733 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_CLEAR_VFTABLE_ENTRY(vfTable, vid) \
|
734 | 786fd2b0 | Dmitry Fleytman | (vfTable[vid >> 5] &= ~(1 << (vid & 31))) |
735 | 786fd2b0 | Dmitry Fleytman | |
736 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_VFTABLE_ENTRY_IS_SET(vfTable, vid) \
|
737 | 786fd2b0 | Dmitry Fleytman | ((vfTable[vid >> 5] & (1 << (vid & 31))) != 0) |
738 | 786fd2b0 | Dmitry Fleytman | |
739 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_MAX_MTU 9000 |
740 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_MIN_MTU 60 |
741 | 786fd2b0 | Dmitry Fleytman | |
742 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_LINK_UP (10000 << 16 | 1) /* 10 Gbps, up */ |
743 | 786fd2b0 | Dmitry Fleytman | #define VMXNET3_LINK_DOWN 0 |
744 | 786fd2b0 | Dmitry Fleytman | |
745 | 786fd2b0 | Dmitry Fleytman | #undef u64
|
746 | 786fd2b0 | Dmitry Fleytman | #undef u32
|
747 | 786fd2b0 | Dmitry Fleytman | #undef u16
|
748 | 786fd2b0 | Dmitry Fleytman | #undef u8
|
749 | 786fd2b0 | Dmitry Fleytman | #undef __le16
|
750 | 786fd2b0 | Dmitry Fleytman | #undef __le32
|
751 | 786fd2b0 | Dmitry Fleytman | #undef __le64
|
752 | 786fd2b0 | Dmitry Fleytman | #undef __packed
|
753 | 786fd2b0 | Dmitry Fleytman | #if defined(HOST_WORDS_BIGENDIAN)
|
754 | 786fd2b0 | Dmitry Fleytman | #undef __BIG_ENDIAN_BITFIELD
|
755 | 786fd2b0 | Dmitry Fleytman | #endif
|
756 | 786fd2b0 | Dmitry Fleytman | |
757 | 786fd2b0 | Dmitry Fleytman | #endif |