This patch fixes a few bugs in the xircom tulip like driver that was causing no received packets from the card (ifconfig eth0 promisc was the workaround). --- 2.3.99-pre9-pre1/drivers/net/pcmcia/xircom_tulip_cb.c Fri May 12 19:10:21 2000 +++ 2.3.99-pre9-pre1-VM/drivers/net/pcmcia/xircom_tulip_cb.c Sat May 13 20:21:14 2000 @@ -466,7 +466,7 @@ restore_flags(flags); return; } - newcsr6 &= 0x726cfeca; /* mask out the reserved CSR6 bits that always */ + newcsr6 &= 0x726cfecb; /* mask out the reserved CSR6 bits that always */ /* read 0 on the Xircom cards */ newcsr6 |= 0x320c0000; /* or in the reserved bits that always read 1 */ currcsr6 = inl(ioaddr + CSR6); @@ -1350,7 +1350,7 @@ tp->tx_ring[0].length = 0x08000000 | 192; /* Lie about the address of our setup frame to make the */ /* chip happy */ - tp->tx_ring[0].buffer1 = (virt_to_bus(tp->setup_frame) + 4); + tp->tx_ring[0].buffer1 = virt_to_bus(tp->setup_frame); tp->tx_ring[0].status = DescOwned; tp->cur_tx++; @@ -3031,10 +3031,7 @@ if (entry == TX_RING_SIZE-1) tx_flags |= DESC_RING_WRAP; /* Wrap ring. */ tp->tx_ring[entry].length = tx_flags; - if(tp->chip_id == X3201_3) - tp->tx_ring[entry].buffer1 = (virt_to_bus(tp->setup_frame) + 4); - else - tp->tx_ring[entry].buffer1 = virt_to_bus(tp->setup_frame); + tp->tx_ring[entry].buffer1 = virt_to_bus(tp->setup_frame); tp->tx_ring[entry].status = DescOwned; if (tp->cur_tx - tp->dirty_tx >= TX_RING_SIZE - 2) { tp->tx_full = 1;