1  /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License as
4  * published by the Free Software Foundation; either version 2, or (at
5  * your option) any later version.
6  */
7 
8 #ifndef	NIC_H
9 #define NIC_H
10 
11 #include "dev.h"
12 
13 typedef enum {
14 	DISABLE = 0,
15 	ENABLE,
16 	FORCE
17 } irq_action_t;
18 
19 /*
20  *	Structure returned from eth_probe and passed to other driver
21  *	functions.
22  */
23 struct nic
24 {
25 	struct dev	dev;  /* This must come first */
26 	int		(*poll)P((struct nic *, int retrieve));
27 	void		(*transmit)P((struct nic *, const char *d,
28 				unsigned int t, unsigned int s, const char *p));
29 	void		(*irq)P((struct nic *, irq_action_t));
30 	int		flags;	/* driver specific flags */
31 	struct rom_info	*rom_info;	/* -> rom_info from main */
32 	unsigned char	*node_addr;
33 	unsigned char	*packet;
34 	unsigned int	packetlen;
35 	unsigned int	ioaddr;
36 	unsigned char	irqno;
37 	void		*priv_data;	/* driver can hang private data here */
38 };
39 
40 extern int  eth_probe(struct dev *dev);
41 extern int  eth_poll(int retrieve);
42 extern void eth_transmit(const char *d, unsigned int t, unsigned int s, const void *p);
43 extern void eth_disable(void);
44 extern void eth_irq(irq_action_t action);
45 #endif	/* NIC_H */
46