1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 #define NFE_IFQ_MAXLEN 64
20
21 struct nfe_tx_data {
22 bus_dmamap_t map;
23 bus_dmamap_t active;
24 struct mbuf *m;
25 };
26
27 struct nfe_tx_ring {
28 bus_dmamap_t map;
29 bus_dma_segment_t seg;
30 bus_addr_t physaddr;
31 struct nfe_desc32 *desc32;
32 struct nfe_desc64 *desc64;
33 struct nfe_tx_data data[NFE_TX_RING_COUNT];
34 int queued;
35 int cur;
36 int next;
37 };
38
39 struct nfe_jbuf {
40 caddr_t buf;
41 bus_addr_t physaddr;
42 SLIST_ENTRY(nfe_jbuf) jnext;
43 };
44
45 struct nfe_rx_data {
46 bus_dmamap_t map;
47 struct mbuf *m;
48 };
49
50 struct nfe_rx_ring {
51 bus_dmamap_t map;
52 bus_dma_segment_t seg;
53 bus_dmamap_t jmap;
54 bus_dma_segment_t jseg;
55 bus_addr_t physaddr;
56 struct nfe_desc32 *desc32;
57 struct nfe_desc64 *desc64;
58 caddr_t jpool;
59 struct nfe_rx_data data[NFE_RX_RING_COUNT];
60 struct nfe_jbuf jbuf[NFE_JPOOL_COUNT];
61 SLIST_HEAD(, nfe_jbuf) jfreelist;
62 int bufsz;
63 int cur;
64 int next;
65 };
66
67 struct nfe_softc {
68 struct device sc_dev;
69 struct arpcom sc_arpcom;
70 bus_space_handle_t sc_memh;
71 bus_space_tag_t sc_memt;
72 void *sc_ih;
73 bus_dma_tag_t sc_dmat;
74 struct mii_data sc_mii;
75 struct timeout sc_tick_ch;
76 void *sc_powerhook;
77
78 int sc_if_flags;
79 u_int sc_flags;
80 #define NFE_JUMBO_SUP 0x01
81 #define NFE_40BIT_ADDR 0x02
82 #define NFE_HW_CSUM 0x04
83 #define NFE_HW_VLAN 0x08
84 #define NFE_USE_JUMBO 0x10
85
86 uint32_t rxtxctl;
87 uint8_t mii_phyaddr;
88
89 struct nfe_tx_ring txq;
90 struct nfe_rx_ring rxq;
91 };