if_nfevar.h revision 159967
1159952Sobrien/* $OpenBSD: if_nfevar.h,v 1.11 2006/02/19 13:57:02 damien Exp $ */ 2159952Sobrien 3159952Sobrien/*- 4159952Sobrien * Copyright (c) 2005 Jonathan Gray <jsg@openbsd.org> 5159952Sobrien * 6159952Sobrien * Permission to use, copy, modify, and distribute this software for any 7159952Sobrien * purpose with or without fee is hereby granted, provided that the above 8159952Sobrien * copyright notice and this permission notice appear in all copies. 9159952Sobrien * 10159952Sobrien * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11159952Sobrien * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12159952Sobrien * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13159952Sobrien * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14159952Sobrien * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15159952Sobrien * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16159952Sobrien * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17159967Sobrien * 18159967Sobrien * $FreeBSD: head/sys/dev/nfe/if_nfevar.h 159967 2006-06-26 23:41:07Z obrien $ 19159952Sobrien */ 20159952Sobrien 21159967Sobrien#define NFE_IFQ_MAXLEN 64 22159952Sobrien 23159952Sobrienstruct nfe_tx_data { 24159967Sobrien bus_dmamap_t tx_data_map; 25159952Sobrien bus_dmamap_t active; 26159967Sobrien int nsegs; 27159952Sobrien struct mbuf *m; 28159952Sobrien}; 29159952Sobrien 30159952Sobrienstruct nfe_tx_ring { 31159967Sobrien bus_dmamap_t tx_desc_map; 32159967Sobrien bus_dma_segment_t tx_desc_segs; 33159952Sobrien bus_addr_t physaddr; 34159952Sobrien struct nfe_desc32 *desc32; 35159952Sobrien struct nfe_desc64 *desc64; 36159952Sobrien struct nfe_tx_data data[NFE_TX_RING_COUNT]; 37159952Sobrien int queued; 38159952Sobrien int cur; 39159952Sobrien int next; 40159967Sobrien bus_addr_t tx_desc_addr; 41159967Sobrien bus_addr_t tx_data_addr; 42159967Sobrien bus_dma_tag_t tx_desc_tag; 43159967Sobrien bus_dma_tag_t tx_data_tag; 44159952Sobrien}; 45159952Sobrien 46159952Sobrienstruct nfe_jbuf { 47159952Sobrien caddr_t buf; 48159952Sobrien bus_addr_t physaddr; 49159952Sobrien SLIST_ENTRY(nfe_jbuf) jnext; 50159952Sobrien}; 51159952Sobrien 52159952Sobrienstruct nfe_rx_data { 53159967Sobrien bus_dmamap_t rx_data_map; 54159967Sobrien bus_dma_tag_t rx_data_tag; 55159967Sobrien bus_addr_t rx_data_addr; 56159967Sobrien bus_dma_segment_t rx_data_segs; 57159952Sobrien struct mbuf *m; 58159952Sobrien}; 59159952Sobrien 60159952Sobrienstruct nfe_rx_ring { 61159967Sobrien bus_dmamap_t rx_desc_map; 62159967Sobrien bus_dma_segment_t rx_desc_segs; 63159967Sobrien bus_dma_tag_t rx_desc_tag; 64159967Sobrien bus_addr_t rx_desc_addr; 65159967Sobrien#ifndef JMBUF 66159967Sobrien bus_dmamap_t rx_jumbo_map; 67159967Sobrien bus_dma_segment_t rx_jumbo_segs; 68159967Sobrien bus_dma_tag_t rx_jumbo_tag; 69159967Sobrien bus_addr_t rx_jumbo_addr; 70159967Sobrien caddr_t jpool; 71159967Sobrien struct nfe_jbuf jbuf[NFE_JPOOL_COUNT]; 72159967Sobrien SLIST_HEAD(, nfe_jbuf) jfreelist; 73159967Sobrien#endif 74159952Sobrien bus_addr_t physaddr; 75159952Sobrien struct nfe_desc32 *desc32; 76159952Sobrien struct nfe_desc64 *desc64; 77159952Sobrien struct nfe_rx_data data[NFE_RX_RING_COUNT]; 78159952Sobrien int bufsz; 79159952Sobrien int cur; 80159952Sobrien int next; 81159952Sobrien}; 82159952Sobrien 83159952Sobrienstruct nfe_softc { 84159967Sobrien struct ifnet *nfe_ifp; 85159967Sobrien device_t nfe_dev; 86159967Sobrien device_t nfe_miibus; 87159967Sobrien struct mtx nfe_mtx; 88159967Sobrien bus_space_handle_t nfe_memh; 89159967Sobrien bus_space_tag_t nfe_memt; 90159967Sobrien struct resource *nfe_res; 91159967Sobrien struct resource *nfe_irq; 92159967Sobrien void *nfe_intrhand; 93159967Sobrien struct mii_data nfe_mii; 94159967Sobrien u_int8_t nfe_unit; 95159967Sobrien struct callout nfe_stat_ch; 96159952Sobrien 97159967Sobrien struct arpcom nfe_arpcom; 98159967Sobrien bus_dma_tag_t nfe_parent_tag; 99159967Sobrien /* struct timeout nfe_tick_ch; */ 100159967Sobrien void *nfe_powerhook; 101159952Sobrien 102159967Sobrien int nfe_if_flags; 103159967Sobrien u_int nfe_flags; 104159967Sobrien#define NFE_JUMBO_SUP 0x01 105159967Sobrien#define NFE_40BIT_ADDR 0x02 106159967Sobrien#define NFE_HW_CSUM 0x04 107159967Sobrien#define NFE_HW_VLAN 0x08 108159967Sobrien#define NFE_USE_JUMBO 0x10 109159967Sobrien u_int32_t rxtxctl; 110159967Sobrien u_int8_t mii_phyaddr; 111159967Sobrien u_char eaddr[ETHER_ADDR_LEN]; 112159967Sobrien struct task nfe_txtask; 113159967Sobrien int nfe_link; 114159952Sobrien 115159952Sobrien struct nfe_tx_ring txq; 116159952Sobrien struct nfe_rx_ring rxq; 117159967Sobrien 118159967Sobrien#ifdef DEVICE_POLLING 119159967Sobrien int rxcycles; 120159967Sobrien#endif 121159952Sobrien}; 122159967Sobrien 123159967Sobrienstruct nfe_type { 124159967Sobrien u_int16_t vid_id; 125159967Sobrien u_int16_t dev_id; 126159967Sobrien char *name; 127159967Sobrien}; 128