1 /* $OpenBSD: if_nfevar.h,v 1.11 2006/02/19 13:57:02 damien Exp $ */
4 * Copyright (c) 2005 Jonathan Gray <jsg@openbsd.org>
6 * Permission to use, copy, modify, and distribute this software for any
7 * purpose with or without fee is hereby granted, provided that the above
8 * copyright notice and this permission notice appear in all copies.
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
22 bus_dmamap_t tx_data_map;
27 bus_dma_tag_t tx_desc_tag;
28 bus_dmamap_t tx_desc_map;
30 struct nfe_desc32 *desc32;
31 struct nfe_desc64 *desc64;
32 bus_dma_tag_t tx_data_tag;
33 struct nfe_tx_data data[NFE_TX_RING_COUNT];
40 bus_dmamap_t rx_data_map;
46 bus_dma_tag_t rx_desc_tag;
47 bus_dmamap_t rx_desc_map;
49 struct nfe_desc32 *desc32;
50 struct nfe_desc64 *desc64;
51 bus_dma_tag_t rx_data_tag;
52 bus_dmamap_t rx_spare_map;
53 struct nfe_rx_data data[NFE_RX_RING_COUNT];
59 bus_dma_tag_t jrx_desc_tag;
60 bus_dmamap_t jrx_desc_map;
61 bus_dma_tag_t jrx_jumbo_tag;
62 bus_dmamap_t jrx_jumbo_map;
64 struct nfe_desc32 *jdesc32;
65 struct nfe_desc64 *jdesc64;
66 bus_dma_tag_t jrx_data_tag;
67 bus_dmamap_t jrx_spare_map;
68 struct nfe_rx_data jdata[NFE_JUMBO_RX_RING_COUNT];
75 uint32_t rx_frame_errors;
76 uint32_t rx_extra_bytes;
77 uint32_t rx_late_cols;
80 uint32_t rx_fifo_overuns;
81 uint32_t rx_crc_errors;
83 uint32_t rx_len_errors;
85 uint32_t rx_multicast;
86 uint32_t rx_broadcast;
90 uint32_t tx_zero_rexmits;
91 uint32_t tx_one_rexmits;
92 uint32_t tx_multi_rexmits;
93 uint32_t tx_late_cols;
94 uint32_t tx_fifo_underuns;
95 uint32_t tx_carrier_losts;
96 uint32_t tx_excess_deferals;
97 uint32_t tx_retry_errors;
102 uint32_t tx_multicast;
103 uint32_t tx_broadcast;
107 struct ifnet *nfe_ifp;
113 struct resource *nfe_res[1];
114 struct resource *nfe_msix_res;
115 struct resource *nfe_msix_pba_res;
116 struct resource *nfe_irq[NFE_MSI_MESSAGES];
117 void *nfe_intrhand[NFE_MSI_MESSAGES];
118 struct callout nfe_stat_ch;
119 int nfe_watchdog_timer;
121 bus_dma_tag_t nfe_parent_tag;
125 #define NFE_JUMBO_SUP 0x0001
126 #define NFE_40BIT_ADDR 0x0002
127 #define NFE_HW_CSUM 0x0004
128 #define NFE_HW_VLAN 0x0008
129 #define NFE_PWR_MGMT 0x0010
130 #define NFE_CORRECT_MACADDR 0x0020
131 #define NFE_TX_FLOW_CTRL 0x0040
132 #define NFE_MIB_V1 0x0080
133 #define NFE_MIB_V2 0x0100
134 #define NFE_MIB_V3 0x0200
135 int nfe_jumbo_disable;
138 uint8_t eaddr[ETHER_ADDR_LEN];
139 struct nfe_hw_stats nfe_stats;
140 struct taskqueue *nfe_tq;
141 struct task nfe_int_task;
142 struct task nfe_tx_task;
143 struct task nfe_link_task;
147 int nfe_process_limit;
149 uint32_t nfe_irq_status;
150 uint32_t nfe_irq_mask;
152 uint32_t nfe_nointrs;
156 struct nfe_tx_ring txq;
157 struct nfe_rx_ring rxq;
158 struct nfe_jrx_ring jrxq;