diff options
Diffstat (limited to 'drivers/net/eexpress.c')
-rw-r--r-- | drivers/net/eexpress.c | 98 |
1 files changed, 49 insertions, 49 deletions
diff --git a/drivers/net/eexpress.c b/drivers/net/eexpress.c index 0701c1d810ca..9cb05d99ee1b 100644 --- a/drivers/net/eexpress.c +++ b/drivers/net/eexpress.c | |||
@@ -77,7 +77,7 @@ | |||
77 | * CU before submitting a packet for transmission, and then restarts it as soon | 77 | * CU before submitting a packet for transmission, and then restarts it as soon |
78 | * as the process of handing the packet is complete. This is definitely an | 78 | * as the process of handing the packet is complete. This is definitely an |
79 | * unnecessary slowdown if the card is running in 16-bit mode; therefore one | 79 | * unnecessary slowdown if the card is running in 16-bit mode; therefore one |
80 | * should detect 16-bit vs 8-bit mode from the EEPROM settings and act | 80 | * should detect 16-bit vs 8-bit mode from the EEPROM settings and act |
81 | * accordingly. In 8-bit mode with this bugfix I'm getting about 150 K/s for | 81 | * accordingly. In 8-bit mode with this bugfix I'm getting about 150 K/s for |
82 | * ftp's, which is significantly better than I get in DOS, so the overhead of | 82 | * ftp's, which is significantly better than I get in DOS, so the overhead of |
83 | * stopping and restarting the CU with each transmit is not prohibitive in | 83 | * stopping and restarting the CU with each transmit is not prohibitive in |
@@ -96,7 +96,7 @@ | |||
96 | #ifndef LOCKUP16 | 96 | #ifndef LOCKUP16 |
97 | #define LOCKUP16 0 | 97 | #define LOCKUP16 0 |
98 | #endif | 98 | #endif |
99 | 99 | ||
100 | #include <linux/module.h> | 100 | #include <linux/module.h> |
101 | #include <linux/kernel.h> | 101 | #include <linux/kernel.h> |
102 | #include <linux/types.h> | 102 | #include <linux/types.h> |
@@ -177,7 +177,7 @@ static unsigned short start_code[] = { | |||
177 | 177 | ||
178 | /* 0x20 -- start of 82586 CU program */ | 178 | /* 0x20 -- start of 82586 CU program */ |
179 | #define CONF_LINK 0x20 | 179 | #define CONF_LINK 0x20 |
180 | 0x0000,Cmd_Config, | 180 | 0x0000,Cmd_Config, |
181 | 0x0032, /* link to next command */ | 181 | 0x0032, /* link to next command */ |
182 | 0x080c, /* 12 bytes follow : fifo threshold=8 */ | 182 | 0x080c, /* 12 bytes follow : fifo threshold=8 */ |
183 | 0x2e40, /* don't rx bad frames | 183 | 0x2e40, /* don't rx bad frames |
@@ -187,10 +187,10 @@ static unsigned short start_code[] = { | |||
187 | */ | 187 | */ |
188 | 0x6000, /* default backoff method & priority | 188 | 0x6000, /* default backoff method & priority |
189 | * interframe spacing = 0x60 */ | 189 | * interframe spacing = 0x60 */ |
190 | 0xf200, /* slot time=0x200 | 190 | 0xf200, /* slot time=0x200 |
191 | * max collision retry = 0xf */ | 191 | * max collision retry = 0xf */ |
192 | #define CONF_PROMISC 0x2e | 192 | #define CONF_PROMISC 0x2e |
193 | 0x0000, /* no HDLC : normal CRC : enable broadcast | 193 | 0x0000, /* no HDLC : normal CRC : enable broadcast |
194 | * disable promiscuous/multicast modes */ | 194 | * disable promiscuous/multicast modes */ |
195 | 0x003c, /* minimum frame length = 60 octets) */ | 195 | 0x003c, /* minimum frame length = 60 octets) */ |
196 | 196 | ||
@@ -237,7 +237,7 @@ static unsigned short mca_iomap[] = { | |||
237 | }; | 237 | }; |
238 | /* bits 5-7 of the second POS register */ | 238 | /* bits 5-7 of the second POS register */ |
239 | static char mca_irqmap[] = { 12, 9, 3, 4, 5, 10, 11, 15 }; | 239 | static char mca_irqmap[] = { 12, 9, 3, 4, 5, 10, 11, 15 }; |
240 | #endif | 240 | #endif |
241 | 241 | ||
242 | /* | 242 | /* |
243 | * Prototypes for Linux interface | 243 | * Prototypes for Linux interface |
@@ -356,7 +356,7 @@ static int __init do_express_probe(struct net_device *dev) | |||
356 | */ | 356 | */ |
357 | while (slot != MCA_NOTFOUND) { | 357 | while (slot != MCA_NOTFOUND) { |
358 | int pos0, pos1; | 358 | int pos0, pos1; |
359 | 359 | ||
360 | slot = mca_find_unused_adapter(0x628B, slot); | 360 | slot = mca_find_unused_adapter(0x628B, slot); |
361 | if (slot == MCA_NOTFOUND) | 361 | if (slot == MCA_NOTFOUND) |
362 | break; | 362 | break; |
@@ -366,10 +366,10 @@ static int __init do_express_probe(struct net_device *dev) | |||
366 | ioaddr = mca_iomap[pos1&0xf]; | 366 | ioaddr = mca_iomap[pos1&0xf]; |
367 | 367 | ||
368 | dev->irq = mca_irqmap[(pos1>>4)&0x7]; | 368 | dev->irq = mca_irqmap[(pos1>>4)&0x7]; |
369 | 369 | ||
370 | /* | 370 | /* |
371 | * XXX: Transciever selection is done | 371 | * XXX: Transciever selection is done |
372 | * differently on the MCA version. | 372 | * differently on the MCA version. |
373 | * How to get it to select something | 373 | * How to get it to select something |
374 | * other than external/AUI is currently | 374 | * other than external/AUI is currently |
375 | * unknown. This code is just for looks. -- ASF | 375 | * unknown. This code is just for looks. -- ASF |
@@ -482,7 +482,7 @@ static int eexp_open(struct net_device *dev) | |||
482 | , ioaddr+0xc000); | 482 | , ioaddr+0xc000); |
483 | goto err_out4; | 483 | goto err_out4; |
484 | } | 484 | } |
485 | 485 | ||
486 | if (lp->width) { | 486 | if (lp->width) { |
487 | printk("%s: forcing ASIC to 8-bit mode\n", dev->name); | 487 | printk("%s: forcing ASIC to 8-bit mode\n", dev->name); |
488 | outb(inb(dev->base_addr+Config)&~4, dev->base_addr+Config); | 488 | outb(inb(dev->base_addr+Config)&~4, dev->base_addr+Config); |
@@ -518,7 +518,7 @@ static int eexp_close(struct net_device *dev) | |||
518 | int irq = dev->irq; | 518 | int irq = dev->irq; |
519 | 519 | ||
520 | netif_stop_queue(dev); | 520 | netif_stop_queue(dev); |
521 | 521 | ||
522 | outb(SIRQ_dis|irqrmap[irq],ioaddr+SET_IRQ); | 522 | outb(SIRQ_dis|irqrmap[irq],ioaddr+SET_IRQ); |
523 | lp->started = 0; | 523 | lp->started = 0; |
524 | scb_command(dev, SCB_CUsuspend|SCB_RUsuspend); | 524 | scb_command(dev, SCB_CUsuspend|SCB_RUsuspend); |
@@ -630,14 +630,14 @@ static void eexp_timeout(struct net_device *dev) | |||
630 | unsigned long flags; | 630 | unsigned long flags; |
631 | #endif | 631 | #endif |
632 | int status; | 632 | int status; |
633 | 633 | ||
634 | disable_irq(dev->irq); | 634 | disable_irq(dev->irq); |
635 | 635 | ||
636 | /* | 636 | /* |
637 | * Best would be to use synchronize_irq(); spin_lock() here | 637 | * Best would be to use synchronize_irq(); spin_lock() here |
638 | * lets make it work first.. | 638 | * lets make it work first.. |
639 | */ | 639 | */ |
640 | 640 | ||
641 | #ifdef CONFIG_SMP | 641 | #ifdef CONFIG_SMP |
642 | spin_lock_irqsave(&lp->lock, flags); | 642 | spin_lock_irqsave(&lp->lock, flags); |
643 | #endif | 643 | #endif |
@@ -653,7 +653,7 @@ static void eexp_timeout(struct net_device *dev) | |||
653 | scb_command(dev, SCB_CUabort); | 653 | scb_command(dev, SCB_CUabort); |
654 | outb(0,dev->base_addr+SIGNAL_CA); | 654 | outb(0,dev->base_addr+SIGNAL_CA); |
655 | } | 655 | } |
656 | netif_wake_queue(dev); | 656 | netif_wake_queue(dev); |
657 | #ifdef CONFIG_SMP | 657 | #ifdef CONFIG_SMP |
658 | spin_unlock_irqrestore(&lp->lock, flags); | 658 | spin_unlock_irqrestore(&lp->lock, flags); |
659 | #endif | 659 | #endif |
@@ -687,11 +687,11 @@ static int eexp_xmit(struct sk_buff *buf, struct net_device *dev) | |||
687 | * Best would be to use synchronize_irq(); spin_lock() here | 687 | * Best would be to use synchronize_irq(); spin_lock() here |
688 | * lets make it work first.. | 688 | * lets make it work first.. |
689 | */ | 689 | */ |
690 | 690 | ||
691 | #ifdef CONFIG_SMP | 691 | #ifdef CONFIG_SMP |
692 | spin_lock_irqsave(&lp->lock, flags); | 692 | spin_lock_irqsave(&lp->lock, flags); |
693 | #endif | 693 | #endif |
694 | 694 | ||
695 | { | 695 | { |
696 | unsigned short *data = (unsigned short *)buf->data; | 696 | unsigned short *data = (unsigned short *)buf->data; |
697 | 697 | ||
@@ -739,7 +739,7 @@ static unsigned short eexp_start_irq(struct net_device *dev, | |||
739 | outw(CONF_DIAG_RESULT & ~31, ioaddr + SM_PTR); | 739 | outw(CONF_DIAG_RESULT & ~31, ioaddr + SM_PTR); |
740 | diag_status = inw(ioaddr + SHADOW(CONF_DIAG_RESULT)); | 740 | diag_status = inw(ioaddr + SHADOW(CONF_DIAG_RESULT)); |
741 | if (diag_status & 1<<11) { | 741 | if (diag_status & 1<<11) { |
742 | printk(KERN_WARNING "%s: 82586 failed self-test\n", | 742 | printk(KERN_WARNING "%s: 82586 failed self-test\n", |
743 | dev->name); | 743 | dev->name); |
744 | } else if (!(diag_status & 1<<13)) { | 744 | } else if (!(diag_status & 1<<13)) { |
745 | printk(KERN_WARNING "%s: 82586 self-test failed to complete\n", dev->name); | 745 | printk(KERN_WARNING "%s: 82586 self-test failed to complete\n", dev->name); |
@@ -749,7 +749,7 @@ static unsigned short eexp_start_irq(struct net_device *dev, | |||
749 | tdr_status = inw(ioaddr + SHADOW(CONF_TDR_RESULT)); | 749 | tdr_status = inw(ioaddr + SHADOW(CONF_TDR_RESULT)); |
750 | if (tdr_status & (TDR_SHORT|TDR_OPEN)) { | 750 | if (tdr_status & (TDR_SHORT|TDR_OPEN)) { |
751 | printk(KERN_WARNING "%s: TDR reports cable %s at %d tick%s\n", dev->name, (tdr_status & TDR_SHORT)?"short":"broken", tdr_status & TDR_TIME, ((tdr_status & TDR_TIME) != 1) ? "s" : ""); | 751 | printk(KERN_WARNING "%s: TDR reports cable %s at %d tick%s\n", dev->name, (tdr_status & TDR_SHORT)?"short":"broken", tdr_status & TDR_TIME, ((tdr_status & TDR_TIME) != 1) ? "s" : ""); |
752 | } | 752 | } |
753 | else if (tdr_status & TDR_XCVRPROBLEM) { | 753 | else if (tdr_status & TDR_XCVRPROBLEM) { |
754 | printk(KERN_WARNING "%s: TDR reports transceiver problem\n", dev->name); | 754 | printk(KERN_WARNING "%s: TDR reports transceiver problem\n", dev->name); |
755 | } | 755 | } |
@@ -761,7 +761,7 @@ static unsigned short eexp_start_irq(struct net_device *dev, | |||
761 | printk("%s: TDR is ga-ga (status %04x)\n", dev->name, | 761 | printk("%s: TDR is ga-ga (status %04x)\n", dev->name, |
762 | tdr_status); | 762 | tdr_status); |
763 | } | 763 | } |
764 | 764 | ||
765 | lp->started |= STARTED_CU; | 765 | lp->started |= STARTED_CU; |
766 | scb_wrcbl(dev, lp->tx_link); | 766 | scb_wrcbl(dev, lp->tx_link); |
767 | /* if the RU isn't running, start it now */ | 767 | /* if the RU isn't running, start it now */ |
@@ -774,7 +774,7 @@ static unsigned short eexp_start_irq(struct net_device *dev, | |||
774 | ack_cmd |= SCB_CUstart | 0x2000; | 774 | ack_cmd |= SCB_CUstart | 0x2000; |
775 | } | 775 | } |
776 | 776 | ||
777 | if ((dev->flags & IFF_UP) && !(lp->started & STARTED_RU) && SCB_RUstat(status)==4) | 777 | if ((dev->flags & IFF_UP) && !(lp->started & STARTED_RU) && SCB_RUstat(status)==4) |
778 | lp->started|=STARTED_RU; | 778 | lp->started|=STARTED_RU; |
779 | 779 | ||
780 | return ack_cmd; | 780 | return ack_cmd; |
@@ -788,7 +788,7 @@ static void eexp_cmd_clear(struct net_device *dev) | |||
788 | printk("%s: command didn't clear\n", dev->name); | 788 | printk("%s: command didn't clear\n", dev->name); |
789 | } | 789 | } |
790 | } | 790 | } |
791 | 791 | ||
792 | static irqreturn_t eexp_irq(int irq, void *dev_info, struct pt_regs *regs) | 792 | static irqreturn_t eexp_irq(int irq, void *dev_info, struct pt_regs *regs) |
793 | { | 793 | { |
794 | struct net_device *dev = dev_info; | 794 | struct net_device *dev = dev_info; |
@@ -813,7 +813,7 @@ static irqreturn_t eexp_irq(int irq, void *dev_info, struct pt_regs *regs) | |||
813 | 813 | ||
814 | outb(SIRQ_dis|irqrmap[irq],ioaddr+SET_IRQ); | 814 | outb(SIRQ_dis|irqrmap[irq],ioaddr+SET_IRQ); |
815 | 815 | ||
816 | 816 | ||
817 | status = scb_status(dev); | 817 | status = scb_status(dev); |
818 | 818 | ||
819 | #if NET_DEBUG > 4 | 819 | #if NET_DEBUG > 4 |
@@ -836,14 +836,14 @@ static irqreturn_t eexp_irq(int irq, void *dev_info, struct pt_regs *regs) | |||
836 | printk("%s: tx interrupt but no status\n", dev->name); | 836 | printk("%s: tx interrupt but no status\n", dev->name); |
837 | } | 837 | } |
838 | } | 838 | } |
839 | 839 | ||
840 | if (SCB_rxdframe(status)) | 840 | if (SCB_rxdframe(status)) |
841 | eexp_hw_rx_pio(dev); | 841 | eexp_hw_rx_pio(dev); |
842 | 842 | ||
843 | status = scb_status(dev); | 843 | status = scb_status(dev); |
844 | } while (status & 0xc000); | 844 | } while (status & 0xc000); |
845 | 845 | ||
846 | if (SCB_RUdead(status)) | 846 | if (SCB_RUdead(status)) |
847 | { | 847 | { |
848 | printk(KERN_WARNING "%s: RU stopped: status %04x\n", | 848 | printk(KERN_WARNING "%s: RU stopped: status %04x\n", |
849 | dev->name,status); | 849 | dev->name,status); |
@@ -867,9 +867,9 @@ static irqreturn_t eexp_irq(int irq, void *dev_info, struct pt_regs *regs) | |||
867 | scb_wrrfa(dev, lp->rx_buf_start); | 867 | scb_wrrfa(dev, lp->rx_buf_start); |
868 | scb_command(dev, SCB_RUstart); | 868 | scb_command(dev, SCB_RUstart); |
869 | outb(0,ioaddr+SIGNAL_CA); | 869 | outb(0,ioaddr+SIGNAL_CA); |
870 | } | 870 | } |
871 | } else { | 871 | } else { |
872 | if (status & 0x8000) | 872 | if (status & 0x8000) |
873 | ack_cmd = eexp_start_irq(dev, status); | 873 | ack_cmd = eexp_start_irq(dev, status); |
874 | else | 874 | else |
875 | ack_cmd = SCB_ack(status); | 875 | ack_cmd = SCB_ack(status); |
@@ -879,14 +879,14 @@ static irqreturn_t eexp_irq(int irq, void *dev_info, struct pt_regs *regs) | |||
879 | 879 | ||
880 | eexp_cmd_clear(dev); | 880 | eexp_cmd_clear(dev); |
881 | 881 | ||
882 | outb(SIRQ_en|irqrmap[irq],ioaddr+SET_IRQ); | 882 | outb(SIRQ_en|irqrmap[irq],ioaddr+SET_IRQ); |
883 | 883 | ||
884 | #if NET_DEBUG > 6 | 884 | #if NET_DEBUG > 6 |
885 | printk("%s: leaving eexp_irq()\n", dev->name); | 885 | printk("%s: leaving eexp_irq()\n", dev->name); |
886 | #endif | 886 | #endif |
887 | outw(old_read_ptr, ioaddr+READ_PTR); | 887 | outw(old_read_ptr, ioaddr+READ_PTR); |
888 | outw(old_write_ptr, ioaddr+WRITE_PTR); | 888 | outw(old_write_ptr, ioaddr+WRITE_PTR); |
889 | 889 | ||
890 | spin_unlock(&lp->lock); | 890 | spin_unlock(&lp->lock); |
891 | return IRQ_HANDLED; | 891 | return IRQ_HANDLED; |
892 | } | 892 | } |
@@ -934,7 +934,7 @@ static void eexp_hw_rx_pio(struct net_device *dev) | |||
934 | 934 | ||
935 | do { | 935 | do { |
936 | unsigned short rfd_cmd, rx_next, pbuf, pkt_len; | 936 | unsigned short rfd_cmd, rx_next, pbuf, pkt_len; |
937 | 937 | ||
938 | outw(rx_block, ioaddr + READ_PTR); | 938 | outw(rx_block, ioaddr + READ_PTR); |
939 | status = inw(ioaddr + DATAPORT); | 939 | status = inw(ioaddr + DATAPORT); |
940 | 940 | ||
@@ -943,7 +943,7 @@ static void eexp_hw_rx_pio(struct net_device *dev) | |||
943 | rfd_cmd = inw(ioaddr + DATAPORT); | 943 | rfd_cmd = inw(ioaddr + DATAPORT); |
944 | rx_next = inw(ioaddr + DATAPORT); | 944 | rx_next = inw(ioaddr + DATAPORT); |
945 | pbuf = inw(ioaddr + DATAPORT); | 945 | pbuf = inw(ioaddr + DATAPORT); |
946 | 946 | ||
947 | outw(pbuf, ioaddr + READ_PTR); | 947 | outw(pbuf, ioaddr + READ_PTR); |
948 | pkt_len = inw(ioaddr + DATAPORT); | 948 | pkt_len = inw(ioaddr + DATAPORT); |
949 | 949 | ||
@@ -955,17 +955,17 @@ static void eexp_hw_rx_pio(struct net_device *dev) | |||
955 | } | 955 | } |
956 | else if (pbuf!=rx_block+0x16) | 956 | else if (pbuf!=rx_block+0x16) |
957 | { | 957 | { |
958 | printk(KERN_WARNING "%s: rfd and rbd out of sync 0x%04x 0x%04x\n", | 958 | printk(KERN_WARNING "%s: rfd and rbd out of sync 0x%04x 0x%04x\n", |
959 | dev->name, rx_block+0x16, pbuf); | 959 | dev->name, rx_block+0x16, pbuf); |
960 | continue; | 960 | continue; |
961 | } | 961 | } |
962 | else if ((pkt_len & 0xc000)!=0xc000) | 962 | else if ((pkt_len & 0xc000)!=0xc000) |
963 | { | 963 | { |
964 | printk(KERN_WARNING "%s: EOF or F not set on received buffer (%04x)\n", | 964 | printk(KERN_WARNING "%s: EOF or F not set on received buffer (%04x)\n", |
965 | dev->name, pkt_len & 0xc000); | 965 | dev->name, pkt_len & 0xc000); |
966 | continue; | 966 | continue; |
967 | } | 967 | } |
968 | else if (!FD_OK(status)) | 968 | else if (!FD_OK(status)) |
969 | { | 969 | { |
970 | lp->stats.rx_errors++; | 970 | lp->stats.rx_errors++; |
971 | if (FD_CRC(status)) | 971 | if (FD_CRC(status)) |
@@ -1025,9 +1025,9 @@ static void eexp_hw_tx_pio(struct net_device *dev, unsigned short *buf, | |||
1025 | if (LOCKUP16 || lp->width) { | 1025 | if (LOCKUP16 || lp->width) { |
1026 | /* Stop the CU so that there is no chance that it | 1026 | /* Stop the CU so that there is no chance that it |
1027 | jumps off to a bogus address while we are writing the | 1027 | jumps off to a bogus address while we are writing the |
1028 | pointer to the next transmit packet in 8-bit mode -- | 1028 | pointer to the next transmit packet in 8-bit mode -- |
1029 | this eliminates the "CU wedged" errors in 8-bit mode. | 1029 | this eliminates the "CU wedged" errors in 8-bit mode. |
1030 | (Zoltan Szilagyi 10-12-96) */ | 1030 | (Zoltan Szilagyi 10-12-96) */ |
1031 | scb_command(dev, SCB_CUsuspend); | 1031 | scb_command(dev, SCB_CUsuspend); |
1032 | outw(0xFFFF, ioaddr+SIGNAL_CA); | 1032 | outw(0xFFFF, ioaddr+SIGNAL_CA); |
1033 | } | 1033 | } |
@@ -1061,7 +1061,7 @@ static void eexp_hw_tx_pio(struct net_device *dev, unsigned short *buf, | |||
1061 | lp->tx_head += TX_BUF_SIZE; | 1061 | lp->tx_head += TX_BUF_SIZE; |
1062 | if (lp->tx_head != lp->tx_reap) | 1062 | if (lp->tx_head != lp->tx_reap) |
1063 | netif_wake_queue(dev); | 1063 | netif_wake_queue(dev); |
1064 | 1064 | ||
1065 | if (LOCKUP16 || lp->width) { | 1065 | if (LOCKUP16 || lp->width) { |
1066 | /* Restart the CU so that the packet can actually | 1066 | /* Restart the CU so that the packet can actually |
1067 | be transmitted. (Zoltan Szilagyi 10-12-96) */ | 1067 | be transmitted. (Zoltan Szilagyi 10-12-96) */ |
@@ -1102,7 +1102,7 @@ static int __init eexp_hw_probe(struct net_device *dev, unsigned short ioaddr) | |||
1102 | 1102 | ||
1103 | /* Standard Address or Compaq LTE Address */ | 1103 | /* Standard Address or Compaq LTE Address */ |
1104 | if (!((hw_addr[2]==0x00aa && ((hw_addr[1] & 0xff00)==0x0000)) || | 1104 | if (!((hw_addr[2]==0x00aa && ((hw_addr[1] & 0xff00)==0x0000)) || |
1105 | (hw_addr[2]==0x0080 && ((hw_addr[1] & 0xff00)==0x5F00)))) | 1105 | (hw_addr[2]==0x0080 && ((hw_addr[1] & 0xff00)==0x5F00)))) |
1106 | { | 1106 | { |
1107 | printk(" rejected: invalid address %04x%04x%04x\n", | 1107 | printk(" rejected: invalid address %04x%04x%04x\n", |
1108 | hw_addr[2],hw_addr[1],hw_addr[0]); | 1108 | hw_addr[2],hw_addr[1],hw_addr[0]); |
@@ -1140,16 +1140,16 @@ static int __init eexp_hw_probe(struct net_device *dev, unsigned short ioaddr) | |||
1140 | memset(lp, 0, sizeof(struct net_local)); | 1140 | memset(lp, 0, sizeof(struct net_local)); |
1141 | spin_lock_init(&lp->lock); | 1141 | spin_lock_init(&lp->lock); |
1142 | 1142 | ||
1143 | printk("(IRQ %d, %s connector, %d-bit bus", dev->irq, | 1143 | printk("(IRQ %d, %s connector, %d-bit bus", dev->irq, |
1144 | eexp_ifmap[dev->if_port], buswidth?8:16); | 1144 | eexp_ifmap[dev->if_port], buswidth?8:16); |
1145 | 1145 | ||
1146 | if (!request_region(dev->base_addr + 0x300e, 1, "EtherExpress")) | 1146 | if (!request_region(dev->base_addr + 0x300e, 1, "EtherExpress")) |
1147 | return -EBUSY; | 1147 | return -EBUSY; |
1148 | 1148 | ||
1149 | eexp_hw_set_interface(dev); | 1149 | eexp_hw_set_interface(dev); |
1150 | 1150 | ||
1151 | release_region(dev->base_addr + 0x300e, 1); | 1151 | release_region(dev->base_addr + 0x300e, 1); |
1152 | 1152 | ||
1153 | /* Find out how much RAM we have on the card */ | 1153 | /* Find out how much RAM we have on the card */ |
1154 | outw(0, dev->base_addr + WRITE_PTR); | 1154 | outw(0, dev->base_addr + WRITE_PTR); |
1155 | for (i = 0; i < 32768; i++) | 1155 | for (i = 0; i < 32768; i++) |
@@ -1284,7 +1284,7 @@ static unsigned short eexp_hw_lasttxstat(struct net_device *dev) | |||
1284 | { | 1284 | { |
1285 | char *whatsup = NULL; | 1285 | char *whatsup = NULL; |
1286 | lp->stats.tx_errors++; | 1286 | lp->stats.tx_errors++; |
1287 | if (Stat_Abort(status)) | 1287 | if (Stat_Abort(status)) |
1288 | lp->stats.tx_aborted_errors++; | 1288 | lp->stats.tx_aborted_errors++; |
1289 | if (Stat_TNoCar(status)) { | 1289 | if (Stat_TNoCar(status)) { |
1290 | whatsup = "aborted, no carrier"; | 1290 | whatsup = "aborted, no carrier"; |
@@ -1460,11 +1460,11 @@ static void eexp_hw_rxinit(struct net_device *dev) | |||
1460 | /* Close Rx frame descriptor ring */ | 1460 | /* Close Rx frame descriptor ring */ |
1461 | outw(lp->rx_last + 4, ioaddr+WRITE_PTR); | 1461 | outw(lp->rx_last + 4, ioaddr+WRITE_PTR); |
1462 | outw(lp->rx_first, ioaddr+DATAPORT); | 1462 | outw(lp->rx_first, ioaddr+DATAPORT); |
1463 | 1463 | ||
1464 | /* Close Rx buffer descriptor ring */ | 1464 | /* Close Rx buffer descriptor ring */ |
1465 | outw(lp->rx_last + 0x16 + 2, ioaddr+WRITE_PTR); | 1465 | outw(lp->rx_last + 0x16 + 2, ioaddr+WRITE_PTR); |
1466 | outw(lp->rx_first + 0x16, ioaddr+DATAPORT); | 1466 | outw(lp->rx_first + 0x16, ioaddr+DATAPORT); |
1467 | 1467 | ||
1468 | } | 1468 | } |
1469 | 1469 | ||
1470 | /* | 1470 | /* |
@@ -1512,7 +1512,7 @@ static void eexp_hw_init586(struct net_device *dev) | |||
1512 | /* Do we want promiscuous mode or multicast? */ | 1512 | /* Do we want promiscuous mode or multicast? */ |
1513 | outw(CONF_PROMISC & ~31, ioaddr+SM_PTR); | 1513 | outw(CONF_PROMISC & ~31, ioaddr+SM_PTR); |
1514 | i = inw(ioaddr+SHADOW(CONF_PROMISC)); | 1514 | i = inw(ioaddr+SHADOW(CONF_PROMISC)); |
1515 | outw((dev->flags & IFF_PROMISC)?(i|1):(i & ~1), | 1515 | outw((dev->flags & IFF_PROMISC)?(i|1):(i & ~1), |
1516 | ioaddr+SHADOW(CONF_PROMISC)); | 1516 | ioaddr+SHADOW(CONF_PROMISC)); |
1517 | lp->was_promisc = dev->flags & IFF_PROMISC; | 1517 | lp->was_promisc = dev->flags & IFF_PROMISC; |
1518 | #if 0 | 1518 | #if 0 |
@@ -1522,7 +1522,7 @@ static void eexp_hw_init586(struct net_device *dev) | |||
1522 | /* Write our hardware address */ | 1522 | /* Write our hardware address */ |
1523 | outw(CONF_HWADDR & ~31, ioaddr+SM_PTR); | 1523 | outw(CONF_HWADDR & ~31, ioaddr+SM_PTR); |
1524 | outw(((unsigned short *)dev->dev_addr)[0], ioaddr+SHADOW(CONF_HWADDR)); | 1524 | outw(((unsigned short *)dev->dev_addr)[0], ioaddr+SHADOW(CONF_HWADDR)); |
1525 | outw(((unsigned short *)dev->dev_addr)[1], | 1525 | outw(((unsigned short *)dev->dev_addr)[1], |
1526 | ioaddr+SHADOW(CONF_HWADDR+2)); | 1526 | ioaddr+SHADOW(CONF_HWADDR+2)); |
1527 | outw(((unsigned short *)dev->dev_addr)[2], | 1527 | outw(((unsigned short *)dev->dev_addr)[2], |
1528 | ioaddr+SHADOW(CONF_HWADDR+4)); | 1528 | ioaddr+SHADOW(CONF_HWADDR+4)); |
@@ -1608,7 +1608,7 @@ static void eexp_setup_filter(struct net_device *dev) | |||
1608 | dev->name, count); | 1608 | dev->name, count); |
1609 | count = 8; | 1609 | count = 8; |
1610 | } | 1610 | } |
1611 | 1611 | ||
1612 | outw(CONF_NR_MULTICAST & ~31, ioaddr+SM_PTR); | 1612 | outw(CONF_NR_MULTICAST & ~31, ioaddr+SM_PTR); |
1613 | outw(count, ioaddr+SHADOW(CONF_NR_MULTICAST)); | 1613 | outw(count, ioaddr+SHADOW(CONF_NR_MULTICAST)); |
1614 | for (i = 0; i < count; i++) { | 1614 | for (i = 0; i < count; i++) { |