]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - sys/dev/ie/if_ievar.h
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / sys / dev / ie / if_ievar.h
1 /*-
2  * $FreeBSD$
3  */
4
5 enum ie_hardware {
6         IE_NONE,
7         IE_STARLAN10,
8         IE_EN100,
9         IE_SLFIBER,
10         IE_3C507,
11         IE_NI5210,
12         IE_EE16,
13         IE_UNKNOWN
14 };
15
16 /*
17  * Ethernet status, per interface.
18  */
19 struct ie_softc {
20         struct   ifnet *ifp;
21         void     (*ie_reset_586) (struct ie_softc *);
22         void     (*ie_chan_attn) (struct ie_softc *);
23         enum     ie_hardware hard_type;
24         int      hard_vers;
25         u_char   enaddr[6];
26
27         device_t                dev;
28
29         struct resource *       io_res;
30         int                     io_rid;
31         bus_space_tag_t         io_bt;
32         bus_space_handle_t      io_bh;
33
34         struct resource *       irq_res;
35         int                     irq_rid;
36         void *                  irq_ih;
37
38         struct resource *       mem_res;
39         int                     mem_rid;
40         bus_space_tag_t         mem_bt;
41         bus_space_handle_t      mem_bh;
42
43         u_int    port;          /* i/o base address for this interface */
44         caddr_t  iomem;         /* memory size */
45         caddr_t  iomembot;      /* memory base address */
46         unsigned iosize;
47         int      bus_use;       /* 0 means 16bit, 1 means 8 bit adapter */
48
49         int      want_mcsetup;
50         int      promisc;
51         int      nframes;
52         int      nrxbufs;
53         int      ntxbufs;
54         volatile struct ie_int_sys_conf_ptr *iscp;
55         volatile struct ie_sys_ctl_block *scb;
56         volatile struct ie_recv_frame_desc **rframes;   /* nframes worth */
57         volatile struct ie_recv_buf_desc **rbuffs;      /* nrxbufs worth */
58         volatile u_char **cbuffs;                       /* nrxbufs worth */
59         int      rfhead, rftail, rbhead, rbtail;
60
61         volatile struct ie_xmit_cmd **xmit_cmds;        /* ntxbufs worth */
62         volatile struct ie_xmit_buf **xmit_buffs;       /* ntxbufs worth */
63         volatile u_char  **xmit_cbuffs;                 /* ntxbufs worth */
64         int      xmit_count;
65
66         struct   ie_en_addr mcast_addrs[MAXMCAST + 1];
67         int      mcast_count;
68
69         u_short  irq_encoded;   /* encoded interrupt on IEE16 */
70
71         struct mtx      lock;
72 };
73 #define PORT(sc)        sc->port
74 #define MEM(sc)         sc->iomem
75
76 #define IE_LOCK(sc)             mtx_lock(&(sc)->lock)
77 #define IE_UNLOCK(sc)           mtx_unlock(&(sc)->lock)
78 #define IE_ASSERT_LOCKED(sc)    mtx_assert(&(sc)->lock, MA_OWNED)
79
80 void            ie_intr                 (void *);
81 int             ie_alloc_resources      (device_t);
82 void            ie_release_resources    (device_t);
83 int             ie_attach               (device_t);
84 int             ie_detach               (device_t);
85
86 void            el_reset_586            (struct ie_softc *);
87 void            el_chan_attn            (struct ie_softc *);
88
89 void            sl_reset_586            (struct ie_softc *);
90 void            sl_chan_attn            (struct ie_softc *);
91
92 void            ee16_reset_586          (struct ie_softc *);
93 void            ee16_chan_attn          (struct ie_softc *);
94 void            ee16_shutdown           (struct ie_softc *);
95
96 void            sl_read_ether           (struct ie_softc *, unsigned char *);
97 int             check_ie_present        (struct ie_softc *);
98