• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/net/
1#ifndef _RRUNNER_H_
2#define _RRUNNER_H_
3
4#include <linux/interrupt.h>
5
6#if ((BITS_PER_LONG != 32) && (BITS_PER_LONG != 64))
7#error "BITS_PER_LONG not defined or not valid"
8#endif
9
10
11struct rr_regs {
12
13	u32	pad0[16];
14
15	u32	HostCtrl;
16	u32	LocalCtrl;
17	u32	Pc;
18	u32	BrkPt;
19
20/* Timer increments every 0.97 micro-seconds (unsigned int) */
21	u32	Timer_Hi;
22	u32	Timer;
23	u32	TimerRef;
24	u32	PciState;
25
26	u32	Event;
27	u32	MbEvent;
28
29	u32	WinBase;
30	u32	WinData;
31	u32	RX_state;
32	u32	TX_state;
33
34	u32	Overhead;
35	u32	ExtIo;
36
37	u32	DmaWriteHostHi;
38	u32	DmaWriteHostLo;
39
40	u32	pad1[2];
41
42	u32	DmaReadHostHi;
43	u32	DmaReadHostLo;
44
45	u32	pad2;
46
47	u32	DmaReadLen;
48	u32	DmaWriteState;
49
50	u32	DmaWriteLcl;
51	u32	DmaWriteIPchecksum;
52	u32	DmaWriteLen;
53	u32	DmaReadState;
54	u32	DmaReadLcl;
55	u32	DmaReadIPchecksum;
56	u32	pad3;
57
58	u32	RxBase;
59	u32	RxPrd;
60	u32	RxCon;
61
62	u32	pad4;
63
64	u32	TxBase;
65	u32	TxPrd;
66	u32	TxCon;
67
68	u32	pad5;
69
70	u32	RxIndPro;
71	u32	RxIndCon;
72	u32	RxIndRef;
73
74	u32	pad6;
75
76	u32	TxIndPro;
77	u32	TxIndCon;
78	u32	TxIndRef;
79
80	u32	pad7[17];
81
82	u32	DrCmndPro;
83	u32	DrCmndCon;
84	u32	DrCmndRef;
85
86	u32	pad8;
87
88	u32	DwCmndPro;
89	u32	DwCmndCon;
90	u32	DwCmndRef;
91
92	u32	AssistState;
93
94	u32	DrDataPro;
95	u32	DrDataCon;
96	u32	DrDataRef;
97
98	u32	pad9;
99
100	u32	DwDataPro;
101	u32	DwDataCon;
102	u32	DwDataRef;
103
104	u32	pad10[33];
105
106	u32	EvtCon;
107
108	u32	pad11[5];
109
110	u32	TxPi;
111	u32	IpRxPi;
112
113	u32	pad11a[8];
114
115	u32	CmdRing[16];
116
117/* The ULA is in two registers the high order two bytes of the first
118 * word contain the RunCode features.
119 * ula0		res	res	byte0	byte1
120 * ula1		byte2	byte3	byte4	byte5
121 */
122	u32	Ula0;
123	u32	Ula1;
124
125	u32	RxRingHi;
126	u32	RxRingLo;
127
128	u32	InfoPtrHi;
129	u32	InfoPtrLo;
130
131	u32	Mode;
132
133	u32	ConRetry;
134	u32	ConRetryTmr;
135
136	u32	ConTmout;
137	u32	CtatTmr;
138
139	u32	MaxRxRng;
140
141	u32	IntrTmr;
142	u32	TxDataMvTimeout;
143	u32	RxDataMvTimeout;
144
145	u32	EvtPrd;
146	u32	TraceIdx;
147
148	u32	Fail1;
149	u32	Fail2;
150
151	u32	DrvPrm;
152
153	u32	FilterLA;
154
155	u32	FwRev;
156	u32	FwRes1;
157	u32	FwRes2;
158	u32	FwRes3;
159
160	u32	WriteDmaThresh;
161	u32	ReadDmaThresh;
162
163	u32	pad12[325];
164	u32	Window[512];
165};
166
167/*
168 * Host control register bits.
169 */
170
171#define RR_INT		0x01
172#define RR_CLEAR_INT	0x02
173#define NO_SWAP		0x04000004
174#define NO_SWAP1	0x00000004
175#define PCI_RESET_NIC	0x08
176#define HALT_NIC	0x10
177#define SSTEP_NIC	0x20
178#define MEM_READ_MULTI	0x40
179#define NIC_HALTED	0x100
180#define HALT_INST	0x200
181#define PARITY_ERR	0x400
182#define INVALID_INST_B	0x800
183#define RR_REV_2	0x20000000
184#define RR_REV_MASK	0xf0000000
185
186/*
187 * Local control register bits.
188 */
189
190#define INTA_STATE		0x01
191#define CLEAR_INTA		0x02
192#define FAST_EEPROM_ACCESS	0x08
193#define ENABLE_EXTRA_SRAM	0x100
194#define ENABLE_EXTRA_DESC	0x200
195#define ENABLE_PARITY		0x400
196#define FORCE_DMA_PARITY_ERROR	0x800
197#define ENABLE_EEPROM_WRITE	0x1000
198#define ENABLE_DATA_CACHE	0x2000
199#define SRAM_LO_PARITY_ERR	0x4000
200#define SRAM_HI_PARITY_ERR	0x8000
201
202/*
203 * PCI state bits.
204 */
205
206#define FORCE_PCI_RESET		0x01
207#define PROVIDE_LENGTH		0x02
208#define MASK_DMA_READ_MAX	0x1C
209#define RBURST_DISABLE		0x00
210#define RBURST_4		0x04
211#define RBURST_16		0x08
212#define RBURST_32		0x0C
213#define RBURST_64		0x10
214#define RBURST_128		0x14
215#define RBURST_256		0x18
216#define RBURST_1024		0x1C
217#define MASK_DMA_WRITE_MAX	0xE0
218#define WBURST_DISABLE		0x00
219#define WBURST_4		0x20
220#define WBURST_16		0x40
221#define WBURST_32		0x60
222#define WBURST_64		0x80
223#define WBURST_128		0xa0
224#define WBURST_256		0xc0
225#define WBURST_1024		0xe0
226#define MASK_MIN_DMA		0xFF00
227#define FIFO_RETRY_ENABLE	0x10000
228
229/*
230 * Event register
231 */
232
233#define DMA_WRITE_DONE		0x10000
234#define DMA_READ_DONE		0x20000
235#define DMA_WRITE_ERR		0x40000
236#define DMA_READ_ERR		0x80000
237
238/*
239 * Receive state
240 *
241 * RoadRunner HIPPI Receive State Register controls and monitors the
242 * HIPPI receive interface in the NIC. Look at err bits when a HIPPI
243 * receive Error Event occurs.
244 */
245
246#define ENABLE_NEW_CON		0x01
247#define RESET_RECV		0x02
248#define RECV_ALL		0x00
249#define RECV_1K			0x20
250#define RECV_2K			0x40
251#define RECV_4K			0x60
252#define RECV_8K			0x80
253#define RECV_16K		0xa0
254#define RECV_32K		0xc0
255#define RECV_64K		0xe0
256
257/*
258 * Transmit status.
259 */
260
261#define ENA_XMIT		0x01
262#define PERM_CON		0x02
263
264/*
265 * DMA write state
266 */
267
268#define RESET_DMA		0x01
269#define NO_SWAP_DMA		0x02
270#define DMA_ACTIVE		0x04
271#define THRESH_MASK		0x1F
272#define DMA_ERROR_MASK		0xff000000
273
274/*
275 * Gooddies stored in the ULA registers.
276 */
277
278#define TRACE_ON_WHAT_BIT	0x00020000    /* Traces on */
279#define ONEM_BUF_WHAT_BIT	0x00040000    /* 1Meg vs 256K */
280#define CHAR_API_WHAT_BIT	0x00080000    /* Char API vs network only */
281#define CMD_EVT_WHAT_BIT	0x00200000    /* Command event */
282#define LONG_TX_WHAT_BIT	0x00400000
283#define LONG_RX_WHAT_BIT	0x00800000
284#define WHAT_BIT_MASK		0xFFFD0000    /* Feature bit mask */
285
286/*
287 * Mode status
288 */
289
290#define EVENT_OVFL		0x80000000
291#define FATAL_ERR		0x40000000
292#define LOOP_BACK		0x01
293#define MODE_PH			0x02
294#define MODE_FP			0x00
295#define PTR64BIT		0x04
296#define PTR32BIT		0x00
297#define PTR_WD_SWAP		0x08
298#define PTR_WD_NOSWAP		0x00
299#define POST_WARN_EVENT		0x10
300#define ERR_TERM		0x20
301#define DIRECT_CONN		0x40
302#define NO_NIC_WATCHDOG		0x80
303#define SWAP_DATA		0x100
304#define SWAP_CONTROL		0x200
305#define NIC_HALT_ON_ERR		0x400
306#define NIC_NO_RESTART		0x800
307#define HALF_DUP_TX		0x1000
308#define HALF_DUP_RX		0x2000
309
310
311/*
312 * Error codes
313 */
314
315/* Host Error Codes - values of fail1 */
316#define ERR_UNKNOWN_MBOX	0x1001
317#define ERR_UNKNOWN_CMD		0x1002
318#define ERR_MAX_RING		0x1003
319#define ERR_RING_CLOSED		0x1004
320#define ERR_RING_OPEN		0x1005
321/* Firmware internal errors */
322#define ERR_EVENT_RING_FULL	0x01
323#define ERR_DW_PEND_CMND_FULL	0x02
324#define ERR_DR_PEND_CMND_FULL	0x03
325#define ERR_DW_PEND_DATA_FULL	0x04
326#define ERR_DR_PEND_DATA_FULL	0x05
327#define ERR_ILLEGAL_JUMP	0x06
328#define ERR_UNIMPLEMENTED	0x07
329#define ERR_TX_INFO_FULL	0x08
330#define ERR_RX_INFO_FULL	0x09
331#define ERR_ILLEGAL_MODE	0x0A
332#define ERR_MAIN_TIMEOUT	0x0B
333#define ERR_EVENT_BITS		0x0C
334#define ERR_UNPEND_FULL		0x0D
335#define ERR_TIMER_QUEUE_FULL	0x0E
336#define ERR_TIMER_QUEUE_EMPTY	0x0F
337#define ERR_TIMER_NO_FREE	0x10
338#define ERR_INTR_START		0x11
339#define ERR_BAD_STARTUP		0x12
340#define ERR_NO_PKT_END		0x13
341#define ERR_HALTED_ON_ERR	0x14
342/* Hardware NIC Errors */
343#define ERR_WRITE_DMA		0x0101
344#define ERR_READ_DMA		0x0102
345#define ERR_EXT_SERIAL		0x0103
346#define ERR_TX_INT_PARITY	0x0104
347
348
349/*
350 * Event definitions
351 */
352
353#define EVT_RING_ENTRIES	64
354#define EVT_RING_SIZE		(EVT_RING_ENTRIES * sizeof(struct event))
355
356struct event {
357#ifdef __LITTLE_ENDIAN
358	u16     index;
359	u8      ring;
360	u8      code;
361#else
362	u8      code;
363	u8      ring;
364	u16     index;
365#endif
366	u32     timestamp;
367};
368
369/*
370 * General Events
371 */
372
373#define E_NIC_UP	0x01
374#define E_WATCHDOG	0x02
375
376#define E_STAT_UPD	0x04
377#define E_INVAL_CMD	0x05
378#define E_SET_CMD_CONS	0x06
379#define E_LINK_ON	0x07
380#define E_LINK_OFF	0x08
381#define E_INTERN_ERR	0x09
382#define E_HOST_ERR	0x0A
383#define E_STATS_UPDATE	0x0B
384#define E_REJECTING	0x0C
385
386/*
387 * Send  Events
388 */
389#define E_CON_REJ	0x13
390#define E_CON_TMOUT	0x14
391#define E_CON_NC_TMOUT	0x15	/* I  , Connection No Campon Timeout */
392#define E_DISC_ERR	0x16
393#define E_INT_PRTY	0x17
394#define E_TX_IDLE	0x18
395#define E_TX_LINK_DROP	0x19
396#define E_TX_INV_RNG	0x1A
397#define E_TX_INV_BUF	0x1B
398#define E_TX_INV_DSC	0x1C
399
400/*
401 * Destination Events
402 */
403/*
404 * General Receive events
405 */
406#define E_VAL_RNG	0x20
407#define E_RX_RNG_ENER	0x21
408#define E_INV_RNG	0x22
409#define E_RX_RNG_SPC	0x23
410#define E_RX_RNG_OUT	0x24
411#define E_PKT_DISCARD	0x25
412#define E_INFO_EVT	0x27
413
414/*
415 * Data corrupted events
416 */
417#define E_RX_PAR_ERR	0x2B
418#define E_RX_LLRC_ERR	0x2C
419#define E_IP_CKSM_ERR	0x2D
420#define E_DTA_CKSM_ERR	0x2E
421#define E_SHT_BST	0x2F
422
423/*
424 * Data lost events
425 */
426#define E_LST_LNK_ERR	0x30
427#define E_FLG_SYN_ERR	0x31
428#define E_FRM_ERR	0x32
429#define E_RX_IDLE	0x33
430#define E_PKT_LN_ERR	0x34
431#define E_STATE_ERR	0x35
432#define E_UNEXP_DATA	0x3C
433
434/*
435 * Fatal events
436 */
437#define E_RX_INV_BUF	0x36
438#define E_RX_INV_DSC	0x37
439#define E_RNG_BLK	0x38
440
441/*
442 * Warning events
443 */
444#define E_RX_TO		0x39
445#define E_BFR_SPC	0x3A
446#define E_INV_ULP	0x3B
447
448#define E_NOT_IMPLEMENTED 0x40
449
450
451/*
452 * Commands
453 */
454
455#define CMD_RING_ENTRIES	16
456
457struct cmd {
458#ifdef __LITTLE_ENDIAN
459	u16     index;
460	u8      ring;
461	u8      code;
462#else
463	u8      code;
464	u8      ring;
465	u16     index;
466#endif
467};
468
469#define C_START_FW	0x01
470#define C_UPD_STAT	0x02
471#define C_WATCHDOG	0x05
472#define C_DEL_RNG	0x09
473#define C_NEW_RNG	0x0A
474#define C_CONN		0x0D
475
476
477/*
478 * Mode bits
479 */
480
481#define  PACKET_BAD		0x01 /* Packet had link-layer error */
482#define  INTERRUPT		0x02
483#define  TX_IP_CKSUM		0x04
484#define  PACKET_END		0x08
485#define  PACKET_START		0x10
486#define  SAME_IFIELD		0x80
487
488
489typedef struct {
490#if (BITS_PER_LONG == 64)
491	u64 addrlo;
492#else
493	u32 addrhi;
494	u32 addrlo;
495#endif
496} rraddr;
497
498
499static inline void set_rraddr(rraddr *ra, dma_addr_t addr)
500{
501	unsigned long baddr = addr;
502#if (BITS_PER_LONG == 64)
503	ra->addrlo = baddr;
504#else
505    /* Don't bother setting zero every time */
506	ra->addrlo = baddr;
507#endif
508	mb();
509}
510
511
512static inline void set_rxaddr(struct rr_regs __iomem *regs, volatile dma_addr_t addr)
513{
514	unsigned long baddr = addr;
515#if (BITS_PER_LONG == 64) && defined(__LITTLE_ENDIAN)
516	writel(baddr & 0xffffffff, &regs->RxRingHi);
517	writel(baddr >> 32, &regs->RxRingLo);
518#elif (BITS_PER_LONG == 64)
519	writel(baddr >> 32, &regs->RxRingHi);
520	writel(baddr & 0xffffffff, &regs->RxRingLo);
521#else
522	writel(0, &regs->RxRingHi);
523	writel(baddr, &regs->RxRingLo);
524#endif
525	mb();
526}
527
528
529static inline void set_infoaddr(struct rr_regs __iomem *regs, volatile dma_addr_t addr)
530{
531	unsigned long baddr = addr;
532#if (BITS_PER_LONG == 64) && defined(__LITTLE_ENDIAN)
533	writel(baddr & 0xffffffff, &regs->InfoPtrHi);
534	writel(baddr >> 32, &regs->InfoPtrLo);
535#elif (BITS_PER_LONG == 64)
536	writel(baddr >> 32, &regs->InfoPtrHi);
537	writel(baddr & 0xffffffff, &regs->InfoPtrLo);
538#else
539	writel(0, &regs->InfoPtrHi);
540	writel(baddr, &regs->InfoPtrLo);
541#endif
542	mb();
543}
544
545
546/*
547 * TX ring
548 */
549
550#ifdef CONFIG_ROADRUNNER_LARGE_RINGS
551#define TX_RING_ENTRIES	32
552#else
553#define TX_RING_ENTRIES	16
554#endif
555#define TX_TOTAL_SIZE	(TX_RING_ENTRIES * sizeof(struct tx_desc))
556
557struct tx_desc{
558	rraddr	addr;
559	u32	res;
560#ifdef __LITTLE_ENDIAN
561	u16	size;
562	u8	pad;
563	u8	mode;
564#else
565	u8	mode;
566	u8	pad;
567	u16	size;
568#endif
569};
570
571
572#ifdef CONFIG_ROADRUNNER_LARGE_RINGS
573#define RX_RING_ENTRIES	32
574#else
575#define RX_RING_ENTRIES 16
576#endif
577#define RX_TOTAL_SIZE	(RX_RING_ENTRIES * sizeof(struct rx_desc))
578
579struct rx_desc{
580	rraddr	addr;
581	u32	res;
582#ifdef __LITTLE_ENDIAN
583	u16	size;
584	u8	pad;
585	u8	mode;
586#else
587	u8	mode;
588	u8	pad;
589	u16	size;
590#endif
591};
592
593
594/*
595 * ioctl's
596 */
597
598#define SIOCRRPFW	SIOCDEVPRIVATE		/* put firmware */
599#define SIOCRRGFW	SIOCDEVPRIVATE+1	/* get firmware */
600#define SIOCRRID	SIOCDEVPRIVATE+2	/* identify */
601
602
603struct seg_hdr {
604	u32	seg_start;
605	u32	seg_len;
606	u32	seg_eestart;
607};
608
609
610#define EEPROM_BASE 0x80000000
611#define EEPROM_WORDS 8192
612#define EEPROM_BYTES (EEPROM_WORDS * sizeof(u32))
613
614struct eeprom_boot {
615	u32	key1;
616	u32	key2;
617	u32	sram_size;
618	struct	seg_hdr loader;
619	u32	init_chksum;
620	u32	reserved1;
621};
622
623struct eeprom_manf {
624	u32	HeaderFmt;
625	u32	Firmware;
626	u32	BoardRevision;
627	u32	RoadrunnerRev;
628	char	OpticsPart[8];
629	u32	OpticsRev;
630	u32	pad1;
631	char	SramPart[8];
632	u32	SramRev;
633	u32	pad2;
634	char	EepromPart[8];
635	u32	EepromRev;
636	u32	EepromSize;
637	char	PalPart[8];
638	u32	PalRev;
639	u32	pad3;
640	char	PalCodeFile[12];
641	u32	PalCodeRev;
642	char	BoardULA[8];
643	char	SerialNo[8];
644	char	MfgDate[8];
645	char	MfgTime[8];
646	char	ModifyDate[8];
647	u32	ModCount;
648	u32	pad4[13];
649};
650
651
652struct eeprom_phase_info {
653	char	phase1File[12];
654	u32	phase1Rev;
655	char	phase1Date[8];
656	char	phase2File[12];
657	u32	phase2Rev;
658	char	phase2Date[8];
659	u32	reserved7[4];
660};
661
662struct eeprom_rncd_info {
663	u32	FwStart;
664	u32	FwRev;
665	char	FwDate[8];
666	u32	AddrRunCodeSegs;
667	u32	FileNames;
668	char	File[13][8];
669};
670
671
672/* Phase 1 region (starts are word offset 0x80) */
673struct phase1_hdr{
674	u32	jump;
675	u32	noop;
676	struct seg_hdr phase2Seg;
677};
678
679struct eeprom {
680	struct eeprom_boot	boot;
681	u32			pad1[8];
682	struct eeprom_manf	manf;
683	struct eeprom_phase_info phase_info;
684	struct eeprom_rncd_info	rncd_info;
685	u32			pad2[15];
686	u32			hdr_checksum;
687	struct phase1_hdr	phase1;
688};
689
690
691struct rr_stats {
692	u32	NicTimeStamp;
693	u32	RngCreated;
694	u32	RngDeleted;
695	u32	IntrGen;
696	u32	NEvtOvfl;
697	u32	InvCmd;
698	u32	DmaReadErrs;
699	u32	DmaWriteErrs;
700	u32	StatUpdtT;
701	u32	StatUpdtC;
702	u32	WatchDog;
703	u32	Trace;
704
705	/* Serial HIPPI */
706	u32	LnkRdyEst;
707	u32	GLinkErr;
708	u32	AltFlgErr;
709	u32	OvhdBit8Sync;
710	u32	RmtSerPrtyErr;
711	u32	RmtParPrtyErr;
712	u32	RmtLoopBk;
713	u32	pad1;
714
715	/* HIPPI tx */
716	u32	ConEst;
717	u32	ConRejS;
718	u32	ConRetry;
719	u32	ConTmOut;
720	u32	SndConDiscon;
721	u32	SndParErr;
722	u32	PktSnt;
723	u32	pad2[2];
724	u32	ShFBstSnt;
725	u64	BytSent;
726	u32	TxTimeout;
727	u32	pad3[3];
728
729	/* HIPPI rx */
730	u32	ConAcc;
731	u32	ConRejdiPrty;
732	u32	ConRejd64b;
733	u32	ConRejdBuf;
734	u32	RxConDiscon;
735	u32	RxConNoData;
736	u32	PktRx;
737	u32	pad4[2];
738	u32	ShFBstRx;
739	u64	BytRx;
740	u32	RxParErr;
741	u32	RxLLRCerr;
742	u32	RxBstSZerr;
743	u32	RxStateErr;
744	u32	RxRdyErr;
745	u32	RxInvULP;
746	u32	RxSpcBuf;
747	u32	RxSpcDesc;
748	u32	RxRngSpc;
749	u32	RxRngFull;
750	u32	RxPktLenErr;
751	u32	RxCksmErr;
752	u32	RxPktDrp;
753	u32	RngLowSpc;
754	u32	RngDataClose;
755	u32	RxTimeout;
756	u32	RxIdle;
757};
758
759
760/*
761 * This struct is shared with the NIC firmware.
762 */
763struct ring_ctrl {
764	rraddr	rngptr;
765#ifdef __LITTLE_ENDIAN
766	u16	entries;
767	u8	pad;
768	u8	entry_size;
769	u16	pi;
770	u16	mode;
771#else
772	u8	entry_size;
773	u8	pad;
774	u16	entries;
775	u16	mode;
776	u16	pi;
777#endif
778};
779
780struct rr_info {
781	union {
782		struct rr_stats stats;
783		u32 stati[128];
784	} s;
785	struct ring_ctrl	evt_ctrl;
786	struct ring_ctrl	cmd_ctrl;
787	struct ring_ctrl	tx_ctrl;
788	u8			pad[464];
789	u8			trace[3072];
790};
791
792/*
793 * The linux structure for the RoadRunner.
794 *
795 * RX/TX descriptors are put first to make sure they are properly
796 * aligned and do not cross cache-line boundaries.
797 */
798
799struct rr_private
800{
801	struct rx_desc		*rx_ring;
802	struct tx_desc		*tx_ring;
803	struct event		*evt_ring;
804	dma_addr_t 		tx_ring_dma;
805	dma_addr_t 		rx_ring_dma;
806	dma_addr_t 		evt_ring_dma;
807	/* Alignment ok ? */
808	struct sk_buff		*rx_skbuff[RX_RING_ENTRIES];
809	struct sk_buff		*tx_skbuff[TX_RING_ENTRIES];
810	struct rr_regs		__iomem *regs;		/* Register base */
811	struct ring_ctrl	*rx_ctrl;	/* Receive ring control */
812	struct rr_info		*info;		/* Shared info page */
813	dma_addr_t 		rx_ctrl_dma;
814	dma_addr_t 		info_dma;
815	spinlock_t		lock;
816	struct timer_list	timer;
817	u32			cur_rx, cur_cmd, cur_evt;
818	u32			dirty_rx, dirty_tx;
819	u32			tx_full;
820	u32			fw_rev;
821	volatile short		fw_running;
822	struct pci_dev		*pci_dev;
823};
824
825
826/*
827 * Prototypes
828 */
829static int rr_init(struct net_device *dev);
830static int rr_init1(struct net_device *dev);
831static irqreturn_t rr_interrupt(int irq, void *dev_id);
832
833static int rr_open(struct net_device *dev);
834static netdev_tx_t rr_start_xmit(struct sk_buff *skb,
835				 struct net_device *dev);
836static int rr_close(struct net_device *dev);
837static int rr_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
838static unsigned int rr_read_eeprom(struct rr_private *rrpriv,
839				   unsigned long offset,
840				   unsigned char *buf,
841				   unsigned long length);
842static u32 rr_read_eeprom_word(struct rr_private *rrpriv, size_t offset);
843static int rr_load_firmware(struct net_device *dev);
844static inline void rr_raz_tx(struct rr_private *, struct net_device *);
845static inline void rr_raz_rx(struct rr_private *, struct net_device *);
846#endif /* _RRUNNER_H_ */
847