source: rtems/c/src/libchip/network/i82586reg.h @ 6a9db57

4.104.114.84.95
Last change on this file since 6a9db57 was 6a9db57, checked in by Joel Sherrill <joel.sherrill@…>, on 09/19/01 at 17:38:01

2001-09-19 Chris Johns <ccj@…>

  • network/README.i82586, network/i82586.c, network/i82586reg.h, network/i82586var.h: New files. Network driver for Intel i82586.
  • Property mode set to 100644
File size: 16.8 KB
Line 
1/*      $NetBSD: i82586reg.h,v 1.7 1998/02/28 01:07:45 pk Exp $ */
2
3/*-
4 * Copyright (c) 1998 The NetBSD Foundation, Inc.
5 * All rights reserved.
6 *
7 * This code is derived from software contributed to The NetBSD Foundation
8 * by Paul Kranenburg.
9 *
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions
12 * are met:
13 * 1. Redistributions of source code must retain the above copyright
14 *    notice, this list of conditions and the following disclaimer.
15 * 2. Redistributions in binary form must reproduce the above copyright
16 *    notice, this list of conditions and the following disclaimer in the
17 *    documentation and/or other materials provided with the distribution.
18 * 3. All advertising materials mentioning features or use of this software
19 *    must display the following acknowledgement:
20 *        This product includes software developed by the NetBSD
21 *        Foundation, Inc. and its contributors.
22 * 4. Neither the name of The NetBSD Foundation nor the names of its
23 *    contributors may be used to endorse or promote products derived
24 *    from this software without specific prior written permission.
25 *
26 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
27 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
28 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
30 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
31 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
32 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
33 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
34 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
35 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
36 * POSSIBILITY OF SUCH DAMAGE.
37 */
38
39/*-
40 * Copyright (c) 1992, University of Vermont and State Agricultural College.
41 * Copyright (c) 1992, Garrett A. Wollman.
42 * All rights reserved.
43 *
44 * Redistribution and use in source and binary forms, with or without
45 * modification, are permitted provided that the following conditions
46 * are met:
47 * 1. Redistributions of source code must retain the above copyright
48 *    notice, this list of conditions and the following disclaimer.
49 * 2. Redistributions in binary form must reproduce the above copyright
50 *    notice, this list of conditions and the following disclaimer in the
51 *    documentation and/or other materials provided with the distribution.
52 * 3. All advertising materials mentioning features or use of this software
53 *    must display the following acknowledgement:
54 *      This product includes software developed by the University of
55 *      Vermont and State Agricultural College and Garrett A. Wollman.
56 * 4. Neither the name of the University nor the name of the author
57 *    may be used to endorse or promote products derived from this software
58 *    without specific prior written permission.
59 *
60 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
61 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
62 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
63 * ARE DISCLAIMED.  IN NO EVENT SHALL THE UNIVERSITY OR AUTHOR BE LIABLE
64 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
65 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
66 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
67 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
68 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
69 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
70 * SUCH DAMAGE.
71 */
72
73/*
74 * Intel 82586 Ethernet chip
75 * Register, bit, and structure definitions.
76 *
77 * Written by GAW with reference to the Clarkson Packet Driver code for this
78 * chip written by Russ Nelson and others.
79 */
80
81/*
82 * NOTE, the structure definitions in here are for reference only.
83 * We use integer offsets exclusively to access the i82586 data structures.
84 */
85
86
87/*
88 * This is the master configuration block.
89 * It tells the hardware where all the rest of the stuff is.
90 *-
91struct __ie_sys_conf_ptr {
92        u_int16_t       mbz;                    // must be zero
93        u_int8_t        ie_bus_use;             // true if 8-bit only
94        u_int8_t        mbz2[5];                // must be zero
95        u_int32_t       ie_iscp_ptr;            // 24-bit physaddr of ISCP
96};
97 */
98#define IE_SCP_SZ               12
99#define IE_SCP_BUS_USE(base)    ((base) + 2)
100#define IE_SCP_ISCP(base)       ((base) + 8)
101
102/*
103 * Note that this is wired in hardware; the SCP is always located here, no
104 * matter what.
105 */
106#define IE_SCP_ADDR 0xfffff4
107
108/*
109 * The tells the hardware where all the rest of the stuff is, too.
110 * FIXME: some of these should be re-commented after we figure out their
111 * REAL function.
112 *-
113struct __ie_int_sys_conf_ptr {
114        u_int8_t        ie_busy;        // zeroed after init
115        u_int8_t        mbz;
116        u_int16_t       ie_scb_offset;  // 16-bit physaddr of next struct
117        caddr_t         ie_base;        // 24-bit physaddr for all 16-bit vars
118};
119 */
120#define IE_ISCP_SZ              8
121#define IE_ISCP_BUSY(base)      ((base) + 0)
122#define IE_ISCP_SCB(base)       ((base) + 2)
123#define IE_ISCP_BASE(base)      ((base) + 4)
124
125/*
126 * This FINALLY tells the hardware what to do and where to put it.
127 *-
128struct __ie_sys_ctl_block {
129        u_int16_t ie_status;            // status word
130        u_int16_t ie_command;           // command word
131        u_int16_t ie_command_list;      // 16-pointer to command block list
132        u_int16_t ie_recv_list;         // 16-pointer to receive frame list
133        u_int16_t ie_err_crc;           // CRC errors
134        u_int16_t ie_err_align;         // Alignment errors
135        u_int16_t ie_err_resource;      // Resource errors
136        u_int16_t ie_err_overrun;       // Overrun errors
137};
138 */
139#define IE_SCB_SZ               16
140#define IE_SCB_STATUS(base)     ((base) + 0)
141#define IE_SCB_CMD(base)        ((base) + 2)
142#define IE_SCB_CMDLST(base)     ((base) + 4)
143#define IE_SCB_RCVLST(base)     ((base) + 6)
144#define IE_SCB_ERRCRC(base)     ((base) + 8)
145#define IE_SCB_ERRALN(base)     ((base) + 10)
146#define IE_SCB_ERRRES(base)     ((base) + 12)
147#define IE_SCB_ERROVR(base)     ((base) + 14)
148
149/* Command values */
150#define IE_RUC_MASK     0x0070  /* mask for RU command */
151#define IE_RUC_NOP      0       /* for completeness */
152#define IE_RUC_START    0x0010  /* start receive unit command */
153#define IE_RUC_RESUME   0x0020  /* resume a suspended receiver command */
154#define IE_RUC_SUSPEND  0x0030  /* suspend receiver command */
155#define IE_RUC_ABORT    0x0040  /* abort current receive operation */
156
157#define IE_CUC_MASK     0x0700  /* mask for CU command */
158#define IE_CUC_NOP      0       /* included for completeness */
159#define IE_CUC_START    0x0100  /* do-command command */
160#define IE_CUC_RESUME   0x0200  /* resume a suspended cmd list */
161#define IE_CUC_SUSPEND  0x0300  /* suspend current command */
162#define IE_CUC_ABORT    0x0400  /* abort current command */
163
164#define IE_ACK_COMMAND  0xf000  /* mask for ACK command */
165#define IE_ACK_CX       0x8000  /* ack IE_ST_CX */
166#define IE_ACK_FR       0x4000  /* ack IE_ST_FR */
167#define IE_ACK_CNA      0x2000  /* ack IE_ST_CNA */
168#define IE_ACK_RNR      0x1000  /* ack IE_ST_RNR */
169
170#define IE_ACTION_COMMAND(x) (((x) & IE_CUC_MASK) == IE_CUC_START)
171                                /* is this command an action command? */
172
173/* Status values */
174#define IE_ST_WHENCE    0xf000  /* mask for cause of interrupt */
175#define IE_ST_CX        0x8000  /* command with I bit completed */
176#define IE_ST_FR        0x4000  /* frame received */
177#define IE_ST_CNA       0x2000  /* all commands completed */
178#define IE_ST_RNR       0x1000  /* receive not ready */
179
180#define IE_CUS_MASK     0x0700  /* mask for command unit status */
181#define IE_CUS_ACTIVE   0x0200  /* command unit is active */
182#define IE_CUS_SUSPEND  0x0100  /* command unit is suspended */
183
184#define IE_RUS_MASK     0x0070  /* mask for receiver unit status */
185#define IE_RUS_SUSPEND  0x0010  /* receiver is suspended */
186#define IE_RUS_NOSPACE  0x0020  /* receiver has no resources */
187#define IE_RUS_READY    0x0040  /* receiver is ready */
188
189/*
190 * This is filled in partially by the chip, partially by us.
191 *-
192struct __ie_recv_frame_desc {
193        u_int16_t       ie_fd_status;   // status for this frame
194        u_int16_t       ie_fd_last;     // end of frame list flag
195        u_int16_t       ie_fd_next;     // 16-pointer to next RFD
196        u_int16_t       ie_fd_buf_desc; // 16-pointer to list of buffer descs
197        struct __ie_en_addr dest;       // destination ether
198        struct __ie_en_addr src;        // source ether
199        u_int16_t       ie_length;      // 802 length/Ether type
200        u_short         mbz;            // must be zero
201};
202 */
203#define IE_RFRAME_SZ                    24
204#define IE_RFRAME_ADDR(base,i)          ((base) + (i) * IE_RFRAME_SZ)
205#define IE_RFRAME_STATUS(b,i)           (IE_RFRAME_ADDR(b,i) + 0)
206#define IE_RFRAME_LAST(b,i)             (IE_RFRAME_ADDR(b,i) + 2)
207#define IE_RFRAME_NEXT(b,i)             (IE_RFRAME_ADDR(b,i) + 4)
208#define IE_RFRAME_BUFDESC(b,i)          (IE_RFRAME_ADDR(b,i) + 6)
209#define IE_RFRAME_EDST(b,i)             (IE_RFRAME_ADDR(b,i) + 8)
210#define IE_RFRAME_ESRC(b,i)             (IE_RFRAME_ADDR(b,i) + 14)
211#define IE_RFRAME_ELEN(b,i)             (IE_RFRAME_ADDR(b,i) + 20)
212
213/* "last" bits */
214#define IE_FD_EOL       0x8000  /* last rfd in list */
215#define IE_FD_SUSP      0x4000  /* suspend RU after receipt */
216
217/* status field bits */
218#define IE_FD_COMPLETE  0x8000  /* frame is complete */
219#define IE_FD_BUSY      0x4000  /* frame is busy */
220#define IE_FD_OK        0x2000  /* frame is ok */
221#define IE_FD_CRC       0x0800  /* CRC error */
222#define IE_FD_ALGN      0x0400  /* Alignment error */
223#define IE_FD_RNR       0x0200  /* receiver out of resources here */
224#define IE_FD_OVR       0x0100  /* DMA overrun */
225#define IE_FD_SHORT     0x0080  /* Short frame */
226#define IE_FD_NOEOF     0x0040  /* no EOF (?) */
227#define IE_FD_ERRMASK           /* all error bits */ \
228        (IE_FD_CRC|IE_FD_ALGN|IE_FD_RNR|IE_FD_OVR|IE_FD_SHORT|IE_FD_NOEOF)
229#define IE_FD_STATUSBITS        \
230        "\20\20COMPLT\17BUSY\16OK\14CRC\13ALGN\12RNR\11OVR\10SHORT\7NOEOF"
231
232/*
233 * linked list of buffers...
234 *-
235struct __ie_recv_buf_desc {
236        u_int16_t       ie_rbd_status;  // status for this buffer
237        u_int16_t       ie_rbd_next;    // 16-pointer to next RBD
238        caddr_t         ie_rbd_buffer;  // 24-pointer to buffer for this RBD
239        u_int16_t       ie_rbd_length;  // length of the buffer
240        u_int16_t       mbz;            // must be zero
241};
242 */
243#define IE_RBD_SZ                       12
244#define IE_RBD_ADDR(base,i)             ((base) + (i) * IE_RBD_SZ)
245#define IE_RBD_STATUS(b,i)              (IE_RBD_ADDR(b,i) + 0)
246#define IE_RBD_NEXT(b,i)                (IE_RBD_ADDR(b,i) + 2)
247#define IE_RBD_BUFADDR(b,i)             (IE_RBD_ADDR(b,i) + 4)
248#define IE_RBD_BUFLEN(b,i)              (IE_RBD_ADDR(b,i) + 8)
249
250/* RBD status fields */
251#define IE_RBD_LAST     0x8000          /* last buffer */
252#define IE_RBD_USED     0x4000          /* this buffer has data */
253#define IE_RBD_CNTMASK  0x3fff          /* byte count of buffer data */
254
255/* RDB `End Of List' flag; encoded in `buffer length' field */
256#define IE_RBD_EOL      0x8000          /* last buffer */
257
258
259/*
260 * All commands share this in common.
261 *-
262struct __ie_cmd_common {
263        u_int16_t ie_cmd_status;        // status of this command
264        u_int16_t ie_cmd_cmd;           // command word
265        u_int16_t ie_cmd_link;          // link to next command
266};
267 */
268#define IE_CMD_COMMON_SZ                6
269#define IE_CMD_COMMON_STATUS(base)      ((base) + 0)
270#define IE_CMD_COMMON_CMD(base)         ((base) + 2)
271#define IE_CMD_COMMON_LINK(base)        ((base) + 4)
272
273#define IE_STAT_COMPL   0x8000  /* command is completed */
274#define IE_STAT_BUSY    0x4000  /* command is running now */
275#define IE_STAT_OK      0x2000  /* command completed successfully */
276#define IE_STAT_ABORT   0x1000  /* command was aborted */
277
278#define IE_CMD_NOP      0x0000  /* NOP */
279#define IE_CMD_IASETUP  0x0001  /* initial address setup */
280#define IE_CMD_CONFIG   0x0002  /* configure command */
281#define IE_CMD_MCAST    0x0003  /* multicast setup command */
282#define IE_CMD_XMIT     0x0004  /* transmit command */
283#define IE_CMD_TDR      0x0005  /* time-domain reflectometer command */
284#define IE_CMD_DUMP     0x0006  /* dump command */
285#define IE_CMD_DIAGNOSE 0x0007  /* diagnostics command */
286
287#define IE_CMD_LAST     0x8000  /* this is the last command in the list */
288#define IE_CMD_SUSPEND  0x4000  /* suspend CU after this command */
289#define IE_CMD_INTR     0x2000  /* post an interrupt after completion */
290
291/*
292 * No-op commands; just like COMMON but "indexable"
293 */
294#define IE_CMD_NOP_SZ                   IE_CMD_COMMON_SZ
295#define IE_CMD_NOP_ADDR(base,i)         ((base) + (i) * IE_CMD_NOP_SZ)
296#define IE_CMD_NOP_STATUS(b,i)          (IE_CMD_NOP_ADDR(b,i) + 0)
297#define IE_CMD_NOP_CMD(b,i)             (IE_CMD_NOP_ADDR(b,i) + 2)
298#define IE_CMD_NOP_LINK(b,i)            (IE_CMD_NOP_ADDR(b,i) + 4)
299
300
301/*
302 * This is the command to transmit a frame.
303 *-
304struct __ie_xmit_cmd {
305        struct __ie_cmd_common  com;            // common part
306#define __ie_xmit_status        com.ie_cmd_status
307
308        u_int16_t       ie_xmit_desc;           // pointer to buffer descriptor
309        struct __ie_en_addr ie_xmit_addr;       // destination address
310        u_int16_t       ie_xmit_length;         // 802.3 length/Ether type field
311};
312 */
313#define IE_CMD_XMIT_SZ                  (IE_CMD_COMMON_SZ + 10)
314#define IE_CMD_XMIT_ADDR(base,i)        ((base) + (i) * IE_CMD_XMIT_SZ)
315#define IE_CMD_XMIT_STATUS(b,i)         \
316        (IE_CMD_XMIT_ADDR(b,i) + 0)     /* == CMD_COMMON_STATUS */
317#define IE_CMD_XMIT_CMD(b,i)            \
318        (IE_CMD_XMIT_ADDR(b,i) + 2)     /* == CMD_COMMON_CMD */
319#define IE_CMD_XMIT_LINK(b,i)           \
320        (IE_CMD_XMIT_ADDR(b,i) + 4)     /* == CMD_COMMON_LINK */
321#define IE_CMD_XMIT_DESC(b,i)           \
322        (IE_CMD_XMIT_ADDR(b,i) + IE_CMD_COMMON_SZ + 0)
323#define IE_CMD_XMIT_EADDR(b,i)          \
324        (IE_CMD_XMIT_ADDR(b,i) + IE_CMD_COMMON_SZ + 2)
325#define IE_CMD_XMIT_LEN(b,i)            \
326        (IE_CMD_XMIT_ADDR(b,i) + IE_CMD_COMMON_SZ + 8)
327
328#define IE_XS_MAXCOLL   0x000f  /* number of collisions during transmit */
329#define IE_XS_EXCMAX    0x0020  /* exceeded maximum number of collisions */
330#define IE_XS_SQE       0x0040  /* SQE positive */
331#define IE_XS_DEFERRED  0x0080  /* transmission deferred */
332#define IE_XS_UNDERRUN  0x0100  /* DMA underrun */
333#define IE_XS_LOSTCTS   0x0200  /* Lost CTS */
334#define IE_XS_NOCARRIER 0x0400  /* No Carrier */
335#define IE_XS_LATECOLL  0x0800  /* Late collision */
336
337/*
338 * This is a buffer descriptor for a frame to be transmitted.
339 *-
340struct __ie_xmit_buf {
341        u_int16_t ie_xmit_flags;        // see below
342        u_int16_t ie_xmit_next;         // 16-pointer to next desc
343        caddr_t ie_xmit_buf;            // 24-pointer to the actual buffer
344};
345 */
346#define IE_XBD_SZ                       8
347#define IE_XBD_ADDR(base,i)             ((base) + (i) * IE_XBD_SZ)
348#define IE_XBD_FLAGS(b,i)               (IE_XBD_ADDR(b,i) + 0)
349#define IE_XBD_NEXT(b,i)                (IE_XBD_ADDR(b,i) + 2)
350#define IE_XBD_BUF(b,i)                 (IE_XBD_ADDR(b,i) + 4)
351
352#define IE_TBD_EOL      0x8000          /* this TBD is the last one */
353#define IE_TBD_CNTMASK  0x3fff          /* The rest of the `flags' word
354                                           is actually the length. */
355
356
357/*
358 * Multicast setup command.
359 *-
360struct __ie_mcast_cmd {
361        struct __ie_cmd_common  com;    // common part
362#define ie_mcast_status         com.ie_cmd_status
363
364        // size (in bytes) of multicast addresses
365        u_short         ie_mcast_bytes;
366        struct __ie_en_addr ie_mcast_addrs[IE_MAXMCAST + 1];// space for them
367};
368 */
369#define IE_CMD_MCAST_SZ                 (IE_CMD_COMMON_SZ + 2 /* + XXX */)
370#define IE_CMD_MCAST_BYTES(base)        ((base) + IE_CMD_COMMON_SZ + 0)
371#define IE_CMD_MCAST_MADDR(base)        ((base) + IE_CMD_COMMON_SZ + 2)
372
373/*
374 * Time Domain Reflectometer command.
375 *-
376struct __ie_tdr_cmd {
377        struct __ie_cmd_common com;     // common part
378#define ie_tdr_status com.ie_cmd_status
379        u_short ie_tdr_time;            // error bits and time
380};
381 */
382#define IE_CMD_TDR_SZ           (IE_CMD_COMMON_SZ + 2)
383#define IE_CMD_TDR_TIME(base)   ((base) + IE_CMD_COMMON_SZ + 0)
384
385#define IE_TDR_SUCCESS  0x8000  /* TDR succeeded without error */
386#define IE_TDR_XCVR     0x4000  /* detected a transceiver problem */
387#define IE_TDR_OPEN     0x2000  /* detected an incorrect termination ("open") */
388#define IE_TDR_SHORT    0x1000  /* TDR detected a short circuit */
389#define IE_TDR_TIME     0x07ff  /* mask for reflection time */
390
391/*
392 * Initial Address Setup command
393 *-
394struct __ie_iasetup_cmd {
395        struct __ie_cmd_common com;
396#define ie_iasetup_status com.ie_cmd_status
397        struct __ie_en_addr ie_address;
398};
399 */
400#define IE_CMD_IAS_SZ           (IE_CMD_COMMON_SZ + 6)
401#define IE_CMD_IAS_EADDR(base)  ((base) + IE_CMD_COMMON_SZ + 0)
402
403/*
404 * Configuration command
405 *-
406struct __ie_config_cmd {
407        struct __ie_cmd_common com;     // common part
408#define ie_config_status com.ie_cmd_status
409
410        u_int8_t ie_config_count;       // byte count (0x0c)
411        u_int8_t ie_fifo;               // fifo (8)
412        u_int8_t ie_save_bad;           // save bad frames (0x40)
413        u_int8_t ie_addr_len;           // address length (0x2e) (AL-LOC == 1)
414        u_int8_t ie_priority;           // priority and backoff (0x0)
415        u_int8_t ie_ifs;                // inter-frame spacing (0x60)
416        u_int8_t ie_slot_low;           // slot time, LSB (0x0)
417        u_int8_t ie_slot_high;          // slot time, MSN, and retries (0xf2)
418        u_int8_t ie_promisc;            // 1 if promiscuous, else 0
419        u_int8_t ie_crs_cdt;            // CSMA/CD parameters (0x0)
420        u_int8_t ie_min_len;            // min frame length (0x40)
421        u_int8_t ie_junk;               // stuff for 82596 (0xff)
422};
423 */
424#define IE_CMD_CFG_SZ                   (IE_CMD_COMMON_SZ + 12)
425#define IE_CMD_CFG_CNT(base)            ((base) + IE_CMD_COMMON_SZ + 0)
426#define IE_CMD_CFG_FIFO(base)           ((base) + IE_CMD_COMMON_SZ + 1)
427#define IE_CMD_CFG_SAVEBAD(base)        ((base) + IE_CMD_COMMON_SZ + 2)
428#define IE_CMD_CFG_ADDRLEN(base)        ((base) + IE_CMD_COMMON_SZ + 3)
429#define IE_CMD_CFG_PRIORITY(base)       ((base) + IE_CMD_COMMON_SZ + 4)
430#define IE_CMD_CFG_IFS(base)            ((base) + IE_CMD_COMMON_SZ + 5)
431#define IE_CMD_CFG_SLOT_LOW(base)       ((base) + IE_CMD_COMMON_SZ + 6)
432#define IE_CMD_CFG_SLOT_HIGH(base)      ((base) + IE_CMD_COMMON_SZ + 7)
433#define IE_CMD_CFG_PROMISC(base)        ((base) + IE_CMD_COMMON_SZ + 8)
434#define IE_CMD_CFG_CRSCDT(base)         ((base) + IE_CMD_COMMON_SZ + 9)
435#define IE_CMD_CFG_MINLEN(base)         ((base) + IE_CMD_COMMON_SZ + 10)
436#define IE_CMD_CFG_JUNK(base)           ((base) + IE_CMD_COMMON_SZ + 11)
Note: See TracBrowser for help on using the repository browser.