aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/tulip/tulip.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/tulip/tulip.h')
-rw-r--r--drivers/net/tulip/tulip.h36
1 files changed, 27 insertions, 9 deletions
diff --git a/drivers/net/tulip/tulip.h b/drivers/net/tulip/tulip.h
index 3bcfbf3d23e..25668ddb1f7 100644
--- a/drivers/net/tulip/tulip.h
+++ b/drivers/net/tulip/tulip.h
@@ -30,11 +30,10 @@
30/* undefine, or define to various debugging levels (>4 == obscene levels) */ 30/* undefine, or define to various debugging levels (>4 == obscene levels) */
31#define TULIP_DEBUG 1 31#define TULIP_DEBUG 1
32 32
33/* undefine USE_IO_OPS for MMIO, define for PIO */
34#ifdef CONFIG_TULIP_MMIO 33#ifdef CONFIG_TULIP_MMIO
35# undef USE_IO_OPS 34#define TULIP_BAR 1 /* CBMA */
36#else 35#else
37# define USE_IO_OPS 1 36#define TULIP_BAR 0 /* CBIO */
38#endif 37#endif
39 38
40 39
@@ -44,7 +43,8 @@ struct tulip_chip_table {
44 int io_size; 43 int io_size;
45 int valid_intrs; /* CSR7 interrupt enable settings */ 44 int valid_intrs; /* CSR7 interrupt enable settings */
46 int flags; 45 int flags;
47 void (*media_timer) (unsigned long data); 46 void (*media_timer) (unsigned long);
47 void (*media_task) (void *);
48}; 48};
49 49
50 50
@@ -142,6 +142,7 @@ enum status_bits {
142 RxNoBuf = 0x80, 142 RxNoBuf = 0x80,
143 RxIntr = 0x40, 143 RxIntr = 0x40,
144 TxFIFOUnderflow = 0x20, 144 TxFIFOUnderflow = 0x20,
145 RxErrIntr = 0x10,
145 TxJabber = 0x08, 146 TxJabber = 0x08,
146 TxNoBuf = 0x04, 147 TxNoBuf = 0x04,
147 TxDied = 0x02, 148 TxDied = 0x02,
@@ -192,9 +193,14 @@ struct tulip_tx_desc {
192 193
193 194
194enum desc_status_bits { 195enum desc_status_bits {
195 DescOwned = 0x80000000, 196 DescOwned = 0x80000000,
196 RxDescFatalErr = 0x8000, 197 DescWholePkt = 0x60000000,
197 RxWholePkt = 0x0300, 198 DescEndPkt = 0x40000000,
199 DescStartPkt = 0x20000000,
200 DescEndRing = 0x02000000,
201 DescUseLink = 0x01000000,
202 RxDescFatalErr = 0x008000,
203 RxWholePkt = 0x00000300,
198}; 204};
199 205
200 206
@@ -366,6 +372,7 @@ struct tulip_private {
366 unsigned int medialock:1; /* Don't sense media type. */ 372 unsigned int medialock:1; /* Don't sense media type. */
367 unsigned int mediasense:1; /* Media sensing in progress. */ 373 unsigned int mediasense:1; /* Media sensing in progress. */
368 unsigned int nway:1, nwayset:1; /* 21143 internal NWay. */ 374 unsigned int nway:1, nwayset:1; /* 21143 internal NWay. */
375 unsigned int timeout_recovery:1;
369 unsigned int csr0; /* CSR0 setting. */ 376 unsigned int csr0; /* CSR0 setting. */
370 unsigned int csr6; /* Current CSR6 control settings. */ 377 unsigned int csr6; /* Current CSR6 control settings. */
371 unsigned char eeprom[EEPROM_SIZE]; /* Serial EEPROM contents. */ 378 unsigned char eeprom[EEPROM_SIZE]; /* Serial EEPROM contents. */
@@ -384,6 +391,7 @@ struct tulip_private {
384 void __iomem *base_addr; 391 void __iomem *base_addr;
385 int csr12_shadow; 392 int csr12_shadow;
386 int pad0; /* Used for 8-byte alignment */ 393 int pad0; /* Used for 8-byte alignment */
394 struct work_struct media_work;
387}; 395};
388 396
389 397
@@ -398,7 +406,7 @@ struct eeprom_fixup {
398 406
399/* 21142.c */ 407/* 21142.c */
400extern u16 t21142_csr14[]; 408extern u16 t21142_csr14[];
401void t21142_timer(unsigned long data); 409void t21142_media_task(void *data);
402void t21142_start_nway(struct net_device *dev); 410void t21142_start_nway(struct net_device *dev);
403void t21142_lnk_change(struct net_device *dev, int csr5); 411void t21142_lnk_change(struct net_device *dev, int csr5);
404 412
@@ -436,7 +444,7 @@ void pnic_lnk_change(struct net_device *dev, int csr5);
436void pnic_timer(unsigned long data); 444void pnic_timer(unsigned long data);
437 445
438/* timer.c */ 446/* timer.c */
439void tulip_timer(unsigned long data); 447void tulip_media_task(void *data);
440void mxic_timer(unsigned long data); 448void mxic_timer(unsigned long data);
441void comet_timer(unsigned long data); 449void comet_timer(unsigned long data);
442 450
@@ -485,4 +493,14 @@ static inline void tulip_restart_rxtx(struct tulip_private *tp)
485 tulip_start_rxtx(tp); 493 tulip_start_rxtx(tp);
486} 494}
487 495
496static inline void tulip_tx_timeout_complete(struct tulip_private *tp, void __iomem *ioaddr)
497{
498 /* Stop and restart the chip's Tx processes. */
499 tulip_restart_rxtx(tp);
500 /* Trigger an immediate transmit demand. */
501 iowrite32(0, ioaddr + CSR1);
502
503 tp->stats.tx_errors++;
504}
505
488#endif /* __NET_TULIP_H__ */ 506#endif /* __NET_TULIP_H__ */