if_aevar.h revision 1.2 1 /* $NetBSD: if_aevar.h,v 1.2 1997/02/24 07:34:21 scottr Exp $ */
2
3 /*
4 * Device driver for National Semiconductor DS8390/WD83C690 based ethernet
5 * adapters.
6 *
7 * Copyright (c) 1994, 1995 Charles M. Hannum. All rights reserved.
8 *
9 * Copyright (C) 1993, David Greenman. This software may be used, modified,
10 * copied, distributed, and sold, in both source and binary form provided that
11 * the above copyright and these terms are retained. Under no circumstances is
12 * the author responsible for the proper functioning of this software, nor does
13 * the author assume any responsibility for damages incurred with its use.
14 *
15 * Adapted for MacBSD by Brad Parker <brad (at) fcr.com>.
16 */
17
18 #define INTERFACE_NAME_LEN 32
19
20 /*
21 * ae_softc: per line info and status
22 */
23 struct ae_softc {
24 struct device sc_dev;
25 bus_space_tag_t sc_reg_tag; /* NIC register space tag */
26 bus_space_handle_t sc_reg_handle; /* NIC register space handle */
27 bus_space_tag_t sc_buf_tag; /* Buffer space tag */
28 bus_space_handle_t sc_buf_handle; /* Buffer space handle */
29
30 /* struct intrhand sc_ih; */
31
32 struct arpcom sc_arpcom;/* ethernet common */
33
34 char type_str[INTERFACE_NAME_LEN]; /* type string */
35 u_short type; /* interface type code */
36 u_char vendor; /* interface vendor */
37 u_char regs_rev; /* registers are reversed */
38 u_char use16bit; /* use word-width transfers */
39
40 u_char cr_proto; /* values always set in CR */
41
42 int mem_size; /* total shared memory size */
43 int mem_ring; /* start of RX ring-buffer (in smem) */
44
45 u_char txb_cnt; /* Number of transmit buffers */
46 u_char txb_inuse; /* number of transmit buffers active */
47
48 u_char txb_new; /* pointer to where new buffer will be added */
49 u_char txb_next_tx; /* pointer to next buffer ready to xmit */
50 u_short txb_len[8]; /* buffered xmit buffer lengths */
51 u_char tx_page_start; /* first page of TX buffer area */
52 u_char rec_page_start; /* first page of RX ring-buffer */
53 u_char rec_page_stop; /* last page of RX ring-buffer */
54 u_char next_packet; /* pointer to next unread RX packet */
55 };
56
57 int ae_size_card_memory __P((
58 bus_space_tag_t, bus_space_handle_t, int));
59
60 void aeintr __P((void *, int));
61 int aeioctl __P((struct ifnet *, u_long, caddr_t));
62 void aestart __P((struct ifnet *));
63 void aewatchdog __P((struct ifnet *));
64 void aereset __P((struct ae_softc *));
65 void aeinit __P((struct ae_softc *));
66 void aestop __P((struct ae_softc *));
67
68 void aeread __P((struct ae_softc *, int, int));
69 struct mbuf *aeget __P((struct ae_softc *, int, int));
70
71 int ae_put __P((struct ae_softc *, struct mbuf *, int));
72 void ae_getmcaf __P((struct arpcom *, u_char *));
73