patch-2.4.21 linux-2.4.21/drivers/net/at1700.c
Next file: linux-2.4.21/drivers/net/atarilance.c
Previous file: linux-2.4.21/drivers/net/ariadne.c
Back to the patch index
Back to the overall index
- Lines: 50
- Date:
2003-06-13 07:51:34.000000000 -0700
- Orig file:
linux-2.4.20/drivers/net/at1700.c
- Orig date:
2002-11-28 15:53:13.000000000 -0800
diff -urN linux-2.4.20/drivers/net/at1700.c linux-2.4.21/drivers/net/at1700.c
@@ -311,7 +311,6 @@
&& inb(ioaddr + SAPROM + 2) == 0x0e)
is_fmv18x = 1;
else {
- ret = -ENODEV;
goto err_out;
}
@@ -336,11 +335,10 @@
}
if (i == 8) {
goto err_out;
- ret = -ENODEV;
}
} else {
if (fmv18x_probe_list[inb(ioaddr + IOCONFIG) & 0x07] != ioaddr)
- return -ENODEV;
+ goto err_out;
irq = fmv_irqmap[(inb(ioaddr + IOCONFIG)>>6) & 0x03];
}
}
@@ -578,7 +576,9 @@
struct net_local *lp = (struct net_local *) dev->priv;
int ioaddr = dev->base_addr;
short length = ETH_ZLEN < skb->len ? skb->len : ETH_ZLEN;
+ short len = skb->len;
unsigned char *buf = skb->data;
+ static u8 pad[ETH_ZLEN];
netif_stop_queue (dev);
@@ -590,7 +590,17 @@
lp->tx_queue_ready = 0;
{
outw (length, ioaddr + DATAPORT);
- outsw (ioaddr + DATAPORT, buf, (length + 1) >> 1);
+ /* Packet data */
+ outsw (ioaddr + DATAPORT, buf, len >> 1);
+ /* Check for dribble byte */
+ if(len & 1)
+ {
+ outw(skb->data[skb->len-1], ioaddr + DATAPORT);
+ len++;
+ }
+ /* Check for packet padding */
+ if(length != skb->len)
+ outsw(ioaddr + DATAPORT, pad, (length - len + 1) >> 1);
lp->tx_queue++;
lp->tx_queue_len += length + 2;
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)