0001
0002 #ifndef _RRUNNER_H_
0003 #define _RRUNNER_H_
0004
0005 #include <linux/interrupt.h>
0006
0007 #if ((BITS_PER_LONG != 32) && (BITS_PER_LONG != 64))
0008 #error "BITS_PER_LONG not defined or not valid"
0009 #endif
0010
0011
0012 struct rr_regs {
0013
0014 u32 pad0[16];
0015
0016 u32 HostCtrl;
0017 u32 LocalCtrl;
0018 u32 Pc;
0019 u32 BrkPt;
0020
0021
0022 u32 Timer_Hi;
0023 u32 Timer;
0024 u32 TimerRef;
0025 u32 PciState;
0026
0027 u32 Event;
0028 u32 MbEvent;
0029
0030 u32 WinBase;
0031 u32 WinData;
0032 u32 RX_state;
0033 u32 TX_state;
0034
0035 u32 Overhead;
0036 u32 ExtIo;
0037
0038 u32 DmaWriteHostHi;
0039 u32 DmaWriteHostLo;
0040
0041 u32 pad1[2];
0042
0043 u32 DmaReadHostHi;
0044 u32 DmaReadHostLo;
0045
0046 u32 pad2;
0047
0048 u32 DmaReadLen;
0049 u32 DmaWriteState;
0050
0051 u32 DmaWriteLcl;
0052 u32 DmaWriteIPchecksum;
0053 u32 DmaWriteLen;
0054 u32 DmaReadState;
0055 u32 DmaReadLcl;
0056 u32 DmaReadIPchecksum;
0057 u32 pad3;
0058
0059 u32 RxBase;
0060 u32 RxPrd;
0061 u32 RxCon;
0062
0063 u32 pad4;
0064
0065 u32 TxBase;
0066 u32 TxPrd;
0067 u32 TxCon;
0068
0069 u32 pad5;
0070
0071 u32 RxIndPro;
0072 u32 RxIndCon;
0073 u32 RxIndRef;
0074
0075 u32 pad6;
0076
0077 u32 TxIndPro;
0078 u32 TxIndCon;
0079 u32 TxIndRef;
0080
0081 u32 pad7[17];
0082
0083 u32 DrCmndPro;
0084 u32 DrCmndCon;
0085 u32 DrCmndRef;
0086
0087 u32 pad8;
0088
0089 u32 DwCmndPro;
0090 u32 DwCmndCon;
0091 u32 DwCmndRef;
0092
0093 u32 AssistState;
0094
0095 u32 DrDataPro;
0096 u32 DrDataCon;
0097 u32 DrDataRef;
0098
0099 u32 pad9;
0100
0101 u32 DwDataPro;
0102 u32 DwDataCon;
0103 u32 DwDataRef;
0104
0105 u32 pad10[33];
0106
0107 u32 EvtCon;
0108
0109 u32 pad11[5];
0110
0111 u32 TxPi;
0112 u32 IpRxPi;
0113
0114 u32 pad11a[8];
0115
0116 u32 CmdRing[16];
0117
0118
0119
0120
0121
0122
0123 u32 Ula0;
0124 u32 Ula1;
0125
0126 u32 RxRingHi;
0127 u32 RxRingLo;
0128
0129 u32 InfoPtrHi;
0130 u32 InfoPtrLo;
0131
0132 u32 Mode;
0133
0134 u32 ConRetry;
0135 u32 ConRetryTmr;
0136
0137 u32 ConTmout;
0138 u32 CtatTmr;
0139
0140 u32 MaxRxRng;
0141
0142 u32 IntrTmr;
0143 u32 TxDataMvTimeout;
0144 u32 RxDataMvTimeout;
0145
0146 u32 EvtPrd;
0147 u32 TraceIdx;
0148
0149 u32 Fail1;
0150 u32 Fail2;
0151
0152 u32 DrvPrm;
0153
0154 u32 FilterLA;
0155
0156 u32 FwRev;
0157 u32 FwRes1;
0158 u32 FwRes2;
0159 u32 FwRes3;
0160
0161 u32 WriteDmaThresh;
0162 u32 ReadDmaThresh;
0163
0164 u32 pad12[325];
0165 u32 Window[512];
0166 };
0167
0168
0169
0170
0171
0172 #define RR_INT 0x01
0173 #define RR_CLEAR_INT 0x02
0174 #define NO_SWAP 0x04000004
0175 #define NO_SWAP1 0x00000004
0176 #define PCI_RESET_NIC 0x08
0177 #define HALT_NIC 0x10
0178 #define SSTEP_NIC 0x20
0179 #define MEM_READ_MULTI 0x40
0180 #define NIC_HALTED 0x100
0181 #define HALT_INST 0x200
0182 #define PARITY_ERR 0x400
0183 #define INVALID_INST_B 0x800
0184 #define RR_REV_2 0x20000000
0185 #define RR_REV_MASK 0xf0000000
0186
0187
0188
0189
0190
0191 #define INTA_STATE 0x01
0192 #define CLEAR_INTA 0x02
0193 #define FAST_EEPROM_ACCESS 0x08
0194 #define ENABLE_EXTRA_SRAM 0x100
0195 #define ENABLE_EXTRA_DESC 0x200
0196 #define ENABLE_PARITY 0x400
0197 #define FORCE_DMA_PARITY_ERROR 0x800
0198 #define ENABLE_EEPROM_WRITE 0x1000
0199 #define ENABLE_DATA_CACHE 0x2000
0200 #define SRAM_LO_PARITY_ERR 0x4000
0201 #define SRAM_HI_PARITY_ERR 0x8000
0202
0203
0204
0205
0206
0207 #define FORCE_PCI_RESET 0x01
0208 #define PROVIDE_LENGTH 0x02
0209 #define MASK_DMA_READ_MAX 0x1C
0210 #define RBURST_DISABLE 0x00
0211 #define RBURST_4 0x04
0212 #define RBURST_16 0x08
0213 #define RBURST_32 0x0C
0214 #define RBURST_64 0x10
0215 #define RBURST_128 0x14
0216 #define RBURST_256 0x18
0217 #define RBURST_1024 0x1C
0218 #define MASK_DMA_WRITE_MAX 0xE0
0219 #define WBURST_DISABLE 0x00
0220 #define WBURST_4 0x20
0221 #define WBURST_16 0x40
0222 #define WBURST_32 0x60
0223 #define WBURST_64 0x80
0224 #define WBURST_128 0xa0
0225 #define WBURST_256 0xc0
0226 #define WBURST_1024 0xe0
0227 #define MASK_MIN_DMA 0xFF00
0228 #define FIFO_RETRY_ENABLE 0x10000
0229
0230
0231
0232
0233
0234 #define DMA_WRITE_DONE 0x10000
0235 #define DMA_READ_DONE 0x20000
0236 #define DMA_WRITE_ERR 0x40000
0237 #define DMA_READ_ERR 0x80000
0238
0239
0240
0241
0242
0243
0244
0245
0246
0247 #define ENABLE_NEW_CON 0x01
0248 #define RESET_RECV 0x02
0249 #define RECV_ALL 0x00
0250 #define RECV_1K 0x20
0251 #define RECV_2K 0x40
0252 #define RECV_4K 0x60
0253 #define RECV_8K 0x80
0254 #define RECV_16K 0xa0
0255 #define RECV_32K 0xc0
0256 #define RECV_64K 0xe0
0257
0258
0259
0260
0261
0262 #define ENA_XMIT 0x01
0263 #define PERM_CON 0x02
0264
0265
0266
0267
0268
0269 #define RESET_DMA 0x01
0270 #define NO_SWAP_DMA 0x02
0271 #define DMA_ACTIVE 0x04
0272 #define THRESH_MASK 0x1F
0273 #define DMA_ERROR_MASK 0xff000000
0274
0275
0276
0277
0278
0279 #define TRACE_ON_WHAT_BIT 0x00020000
0280 #define ONEM_BUF_WHAT_BIT 0x00040000
0281 #define CHAR_API_WHAT_BIT 0x00080000
0282 #define CMD_EVT_WHAT_BIT 0x00200000
0283 #define LONG_TX_WHAT_BIT 0x00400000
0284 #define LONG_RX_WHAT_BIT 0x00800000
0285 #define WHAT_BIT_MASK 0xFFFD0000
0286
0287
0288
0289
0290
0291 #define EVENT_OVFL 0x80000000
0292 #define FATAL_ERR 0x40000000
0293 #define LOOP_BACK 0x01
0294 #define MODE_PH 0x02
0295 #define MODE_FP 0x00
0296 #define PTR64BIT 0x04
0297 #define PTR32BIT 0x00
0298 #define PTR_WD_SWAP 0x08
0299 #define PTR_WD_NOSWAP 0x00
0300 #define POST_WARN_EVENT 0x10
0301 #define ERR_TERM 0x20
0302 #define DIRECT_CONN 0x40
0303 #define NO_NIC_WATCHDOG 0x80
0304 #define SWAP_DATA 0x100
0305 #define SWAP_CONTROL 0x200
0306 #define NIC_HALT_ON_ERR 0x400
0307 #define NIC_NO_RESTART 0x800
0308 #define HALF_DUP_TX 0x1000
0309 #define HALF_DUP_RX 0x2000
0310
0311
0312
0313
0314
0315
0316
0317 #define ERR_UNKNOWN_MBOX 0x1001
0318 #define ERR_UNKNOWN_CMD 0x1002
0319 #define ERR_MAX_RING 0x1003
0320 #define ERR_RING_CLOSED 0x1004
0321 #define ERR_RING_OPEN 0x1005
0322
0323 #define ERR_EVENT_RING_FULL 0x01
0324 #define ERR_DW_PEND_CMND_FULL 0x02
0325 #define ERR_DR_PEND_CMND_FULL 0x03
0326 #define ERR_DW_PEND_DATA_FULL 0x04
0327 #define ERR_DR_PEND_DATA_FULL 0x05
0328 #define ERR_ILLEGAL_JUMP 0x06
0329 #define ERR_UNIMPLEMENTED 0x07
0330 #define ERR_TX_INFO_FULL 0x08
0331 #define ERR_RX_INFO_FULL 0x09
0332 #define ERR_ILLEGAL_MODE 0x0A
0333 #define ERR_MAIN_TIMEOUT 0x0B
0334 #define ERR_EVENT_BITS 0x0C
0335 #define ERR_UNPEND_FULL 0x0D
0336 #define ERR_TIMER_QUEUE_FULL 0x0E
0337 #define ERR_TIMER_QUEUE_EMPTY 0x0F
0338 #define ERR_TIMER_NO_FREE 0x10
0339 #define ERR_INTR_START 0x11
0340 #define ERR_BAD_STARTUP 0x12
0341 #define ERR_NO_PKT_END 0x13
0342 #define ERR_HALTED_ON_ERR 0x14
0343
0344 #define ERR_WRITE_DMA 0x0101
0345 #define ERR_READ_DMA 0x0102
0346 #define ERR_EXT_SERIAL 0x0103
0347 #define ERR_TX_INT_PARITY 0x0104
0348
0349
0350
0351
0352
0353
0354 #define EVT_RING_ENTRIES 64
0355 #define EVT_RING_SIZE (EVT_RING_ENTRIES * sizeof(struct event))
0356
0357 struct event {
0358 #ifdef __LITTLE_ENDIAN
0359 u16 index;
0360 u8 ring;
0361 u8 code;
0362 #else
0363 u8 code;
0364 u8 ring;
0365 u16 index;
0366 #endif
0367 u32 timestamp;
0368 };
0369
0370
0371
0372
0373
0374 #define E_NIC_UP 0x01
0375 #define E_WATCHDOG 0x02
0376
0377 #define E_STAT_UPD 0x04
0378 #define E_INVAL_CMD 0x05
0379 #define E_SET_CMD_CONS 0x06
0380 #define E_LINK_ON 0x07
0381 #define E_LINK_OFF 0x08
0382 #define E_INTERN_ERR 0x09
0383 #define E_HOST_ERR 0x0A
0384 #define E_STATS_UPDATE 0x0B
0385 #define E_REJECTING 0x0C
0386
0387
0388
0389
0390 #define E_CON_REJ 0x13
0391 #define E_CON_TMOUT 0x14
0392 #define E_CON_NC_TMOUT 0x15
0393 #define E_DISC_ERR 0x16
0394 #define E_INT_PRTY 0x17
0395 #define E_TX_IDLE 0x18
0396 #define E_TX_LINK_DROP 0x19
0397 #define E_TX_INV_RNG 0x1A
0398 #define E_TX_INV_BUF 0x1B
0399 #define E_TX_INV_DSC 0x1C
0400
0401
0402
0403
0404
0405
0406
0407 #define E_VAL_RNG 0x20
0408 #define E_RX_RNG_ENER 0x21
0409 #define E_INV_RNG 0x22
0410 #define E_RX_RNG_SPC 0x23
0411 #define E_RX_RNG_OUT 0x24
0412 #define E_PKT_DISCARD 0x25
0413 #define E_INFO_EVT 0x27
0414
0415
0416
0417
0418 #define E_RX_PAR_ERR 0x2B
0419 #define E_RX_LLRC_ERR 0x2C
0420 #define E_IP_CKSM_ERR 0x2D
0421 #define E_DTA_CKSM_ERR 0x2E
0422 #define E_SHT_BST 0x2F
0423
0424
0425
0426
0427 #define E_LST_LNK_ERR 0x30
0428 #define E_FLG_SYN_ERR 0x31
0429 #define E_FRM_ERR 0x32
0430 #define E_RX_IDLE 0x33
0431 #define E_PKT_LN_ERR 0x34
0432 #define E_STATE_ERR 0x35
0433 #define E_UNEXP_DATA 0x3C
0434
0435
0436
0437
0438 #define E_RX_INV_BUF 0x36
0439 #define E_RX_INV_DSC 0x37
0440 #define E_RNG_BLK 0x38
0441
0442
0443
0444
0445 #define E_RX_TO 0x39
0446 #define E_BFR_SPC 0x3A
0447 #define E_INV_ULP 0x3B
0448
0449 #define E_NOT_IMPLEMENTED 0x40
0450
0451
0452
0453
0454
0455
0456 #define CMD_RING_ENTRIES 16
0457
0458 struct cmd {
0459 #ifdef __LITTLE_ENDIAN
0460 u16 index;
0461 u8 ring;
0462 u8 code;
0463 #else
0464 u8 code;
0465 u8 ring;
0466 u16 index;
0467 #endif
0468 };
0469
0470 #define C_START_FW 0x01
0471 #define C_UPD_STAT 0x02
0472 #define C_WATCHDOG 0x05
0473 #define C_DEL_RNG 0x09
0474 #define C_NEW_RNG 0x0A
0475 #define C_CONN 0x0D
0476
0477
0478
0479
0480
0481
0482 #define PACKET_BAD 0x01
0483 #define INTERRUPT 0x02
0484 #define TX_IP_CKSUM 0x04
0485 #define PACKET_END 0x08
0486 #define PACKET_START 0x10
0487 #define SAME_IFIELD 0x80
0488
0489
0490 typedef struct {
0491 #if (BITS_PER_LONG == 64)
0492 u64 addrlo;
0493 #else
0494 u32 addrhi;
0495 u32 addrlo;
0496 #endif
0497 } rraddr;
0498
0499
0500 static inline void set_rraddr(rraddr *ra, dma_addr_t addr)
0501 {
0502 unsigned long baddr = addr;
0503 #if (BITS_PER_LONG == 64)
0504 ra->addrlo = baddr;
0505 #else
0506
0507 ra->addrlo = baddr;
0508 #endif
0509 mb();
0510 }
0511
0512
0513 static inline void set_rxaddr(struct rr_regs __iomem *regs, volatile dma_addr_t addr)
0514 {
0515 unsigned long baddr = addr;
0516 #if (BITS_PER_LONG == 64) && defined(__LITTLE_ENDIAN)
0517 writel(baddr & 0xffffffff, ®s->RxRingHi);
0518 writel(baddr >> 32, ®s->RxRingLo);
0519 #elif (BITS_PER_LONG == 64)
0520 writel(baddr >> 32, ®s->RxRingHi);
0521 writel(baddr & 0xffffffff, ®s->RxRingLo);
0522 #else
0523 writel(0, ®s->RxRingHi);
0524 writel(baddr, ®s->RxRingLo);
0525 #endif
0526 mb();
0527 }
0528
0529
0530 static inline void set_infoaddr(struct rr_regs __iomem *regs, volatile dma_addr_t addr)
0531 {
0532 unsigned long baddr = addr;
0533 #if (BITS_PER_LONG == 64) && defined(__LITTLE_ENDIAN)
0534 writel(baddr & 0xffffffff, ®s->InfoPtrHi);
0535 writel(baddr >> 32, ®s->InfoPtrLo);
0536 #elif (BITS_PER_LONG == 64)
0537 writel(baddr >> 32, ®s->InfoPtrHi);
0538 writel(baddr & 0xffffffff, ®s->InfoPtrLo);
0539 #else
0540 writel(0, ®s->InfoPtrHi);
0541 writel(baddr, ®s->InfoPtrLo);
0542 #endif
0543 mb();
0544 }
0545
0546
0547
0548
0549
0550
0551 #ifdef CONFIG_ROADRUNNER_LARGE_RINGS
0552 #define TX_RING_ENTRIES 32
0553 #else
0554 #define TX_RING_ENTRIES 16
0555 #endif
0556 #define TX_TOTAL_SIZE (TX_RING_ENTRIES * sizeof(struct tx_desc))
0557
0558 struct tx_desc{
0559 rraddr addr;
0560 u32 res;
0561 #ifdef __LITTLE_ENDIAN
0562 u16 size;
0563 u8 pad;
0564 u8 mode;
0565 #else
0566 u8 mode;
0567 u8 pad;
0568 u16 size;
0569 #endif
0570 };
0571
0572
0573 #ifdef CONFIG_ROADRUNNER_LARGE_RINGS
0574 #define RX_RING_ENTRIES 32
0575 #else
0576 #define RX_RING_ENTRIES 16
0577 #endif
0578 #define RX_TOTAL_SIZE (RX_RING_ENTRIES * sizeof(struct rx_desc))
0579
0580 struct rx_desc{
0581 rraddr addr;
0582 u32 res;
0583 #ifdef __LITTLE_ENDIAN
0584 u16 size;
0585 u8 pad;
0586 u8 mode;
0587 #else
0588 u8 mode;
0589 u8 pad;
0590 u16 size;
0591 #endif
0592 };
0593
0594
0595
0596
0597
0598
0599 #define SIOCRRPFW SIOCDEVPRIVATE
0600 #define SIOCRRGFW SIOCDEVPRIVATE+1
0601 #define SIOCRRID SIOCDEVPRIVATE+2
0602
0603
0604 struct seg_hdr {
0605 u32 seg_start;
0606 u32 seg_len;
0607 u32 seg_eestart;
0608 };
0609
0610
0611 #define EEPROM_BASE 0x80000000
0612 #define EEPROM_WORDS 8192
0613 #define EEPROM_BYTES (EEPROM_WORDS * sizeof(u32))
0614
0615 struct eeprom_boot {
0616 u32 key1;
0617 u32 key2;
0618 u32 sram_size;
0619 struct seg_hdr loader;
0620 u32 init_chksum;
0621 u32 reserved1;
0622 };
0623
0624 struct eeprom_manf {
0625 u32 HeaderFmt;
0626 u32 Firmware;
0627 u32 BoardRevision;
0628 u32 RoadrunnerRev;
0629 char OpticsPart[8];
0630 u32 OpticsRev;
0631 u32 pad1;
0632 char SramPart[8];
0633 u32 SramRev;
0634 u32 pad2;
0635 char EepromPart[8];
0636 u32 EepromRev;
0637 u32 EepromSize;
0638 char PalPart[8];
0639 u32 PalRev;
0640 u32 pad3;
0641 char PalCodeFile[12];
0642 u32 PalCodeRev;
0643 char BoardULA[8];
0644 char SerialNo[8];
0645 char MfgDate[8];
0646 char MfgTime[8];
0647 char ModifyDate[8];
0648 u32 ModCount;
0649 u32 pad4[13];
0650 };
0651
0652
0653 struct eeprom_phase_info {
0654 char phase1File[12];
0655 u32 phase1Rev;
0656 char phase1Date[8];
0657 char phase2File[12];
0658 u32 phase2Rev;
0659 char phase2Date[8];
0660 u32 reserved7[4];
0661 };
0662
0663 struct eeprom_rncd_info {
0664 u32 FwStart;
0665 u32 FwRev;
0666 char FwDate[8];
0667 u32 AddrRunCodeSegs;
0668 u32 FileNames;
0669 char File[13][8];
0670 };
0671
0672
0673
0674 struct phase1_hdr{
0675 u32 jump;
0676 u32 noop;
0677 struct seg_hdr phase2Seg;
0678 };
0679
0680 struct eeprom {
0681 struct eeprom_boot boot;
0682 u32 pad1[8];
0683 struct eeprom_manf manf;
0684 struct eeprom_phase_info phase_info;
0685 struct eeprom_rncd_info rncd_info;
0686 u32 pad2[15];
0687 u32 hdr_checksum;
0688 struct phase1_hdr phase1;
0689 };
0690
0691
0692 struct rr_stats {
0693 u32 NicTimeStamp;
0694 u32 RngCreated;
0695 u32 RngDeleted;
0696 u32 IntrGen;
0697 u32 NEvtOvfl;
0698 u32 InvCmd;
0699 u32 DmaReadErrs;
0700 u32 DmaWriteErrs;
0701 u32 StatUpdtT;
0702 u32 StatUpdtC;
0703 u32 WatchDog;
0704 u32 Trace;
0705
0706
0707 u32 LnkRdyEst;
0708 u32 GLinkErr;
0709 u32 AltFlgErr;
0710 u32 OvhdBit8Sync;
0711 u32 RmtSerPrtyErr;
0712 u32 RmtParPrtyErr;
0713 u32 RmtLoopBk;
0714 u32 pad1;
0715
0716
0717 u32 ConEst;
0718 u32 ConRejS;
0719 u32 ConRetry;
0720 u32 ConTmOut;
0721 u32 SndConDiscon;
0722 u32 SndParErr;
0723 u32 PktSnt;
0724 u32 pad2[2];
0725 u32 ShFBstSnt;
0726 u64 BytSent;
0727 u32 TxTimeout;
0728 u32 pad3[3];
0729
0730
0731 u32 ConAcc;
0732 u32 ConRejdiPrty;
0733 u32 ConRejd64b;
0734 u32 ConRejdBuf;
0735 u32 RxConDiscon;
0736 u32 RxConNoData;
0737 u32 PktRx;
0738 u32 pad4[2];
0739 u32 ShFBstRx;
0740 u64 BytRx;
0741 u32 RxParErr;
0742 u32 RxLLRCerr;
0743 u32 RxBstSZerr;
0744 u32 RxStateErr;
0745 u32 RxRdyErr;
0746 u32 RxInvULP;
0747 u32 RxSpcBuf;
0748 u32 RxSpcDesc;
0749 u32 RxRngSpc;
0750 u32 RxRngFull;
0751 u32 RxPktLenErr;
0752 u32 RxCksmErr;
0753 u32 RxPktDrp;
0754 u32 RngLowSpc;
0755 u32 RngDataClose;
0756 u32 RxTimeout;
0757 u32 RxIdle;
0758 };
0759
0760
0761
0762
0763
0764 struct ring_ctrl {
0765 rraddr rngptr;
0766 #ifdef __LITTLE_ENDIAN
0767 u16 entries;
0768 u8 pad;
0769 u8 entry_size;
0770 u16 pi;
0771 u16 mode;
0772 #else
0773 u8 entry_size;
0774 u8 pad;
0775 u16 entries;
0776 u16 mode;
0777 u16 pi;
0778 #endif
0779 };
0780
0781 struct rr_info {
0782 union {
0783 struct rr_stats stats;
0784 u32 stati[128];
0785 } s;
0786 struct ring_ctrl evt_ctrl;
0787 struct ring_ctrl cmd_ctrl;
0788 struct ring_ctrl tx_ctrl;
0789 u8 pad[464];
0790 u8 trace[3072];
0791 };
0792
0793
0794
0795
0796
0797
0798
0799
0800 struct rr_private
0801 {
0802 struct rx_desc *rx_ring;
0803 struct tx_desc *tx_ring;
0804 struct event *evt_ring;
0805 dma_addr_t tx_ring_dma;
0806 dma_addr_t rx_ring_dma;
0807 dma_addr_t evt_ring_dma;
0808
0809 struct sk_buff *rx_skbuff[RX_RING_ENTRIES];
0810 struct sk_buff *tx_skbuff[TX_RING_ENTRIES];
0811 struct rr_regs __iomem *regs;
0812 struct ring_ctrl *rx_ctrl;
0813 struct rr_info *info;
0814 dma_addr_t rx_ctrl_dma;
0815 dma_addr_t info_dma;
0816 spinlock_t lock;
0817 struct timer_list timer;
0818 u32 cur_rx, cur_cmd, cur_evt;
0819 u32 dirty_rx, dirty_tx;
0820 u32 tx_full;
0821 u32 fw_rev;
0822 volatile short fw_running;
0823 struct pci_dev *pci_dev;
0824 };
0825
0826
0827
0828
0829
0830 static int rr_init(struct net_device *dev);
0831 static int rr_init1(struct net_device *dev);
0832 static irqreturn_t rr_interrupt(int irq, void *dev_id);
0833
0834 static int rr_open(struct net_device *dev);
0835 static netdev_tx_t rr_start_xmit(struct sk_buff *skb,
0836 struct net_device *dev);
0837 static int rr_close(struct net_device *dev);
0838 static int rr_siocdevprivate(struct net_device *dev, struct ifreq *rq,
0839 void __user *data, int cmd);
0840 static unsigned int rr_read_eeprom(struct rr_private *rrpriv,
0841 unsigned long offset,
0842 unsigned char *buf,
0843 unsigned long length);
0844 static u32 rr_read_eeprom_word(struct rr_private *rrpriv, size_t offset);
0845 static int rr_load_firmware(struct net_device *dev);
0846 static inline void rr_raz_tx(struct rr_private *, struct net_device *);
0847 static inline void rr_raz_rx(struct rr_private *, struct net_device *);
0848 #endif