aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/eexpress.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/eexpress.c')
-rw-r--r--drivers/net/eexpress.c98
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 */
239static char mca_irqmap[] = { 12, 9, 3, 4, 5, 10, 11, 15 }; 239static 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
792static irqreturn_t eexp_irq(int irq, void *dev_info, struct pt_regs *regs) 792static 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++) {