diff options
| author | Steve French <sfrench@us.ibm.com> | 2006-06-25 15:57:32 +0000 | 
|---|---|---|
| committer | Steve French <sfrench@us.ibm.com> | 2006-06-25 15:57:32 +0000 | 
| commit | bbe5d235ee201705530a7153b57e141cd77d818b (patch) | |
| tree | e98c31b4cb2ced6357a87a02596f9ecdbd6dbb26 /drivers/net/8390.c | |
| parent | 189acaaef81b1d71aedd0d28810de24160c2e781 (diff) | |
| parent | dfd8317d3340f03bc06eba6b58f0ec0861da4a13 (diff) | |
Merge with /pub/scm/linux/kernel/git/torvalds/linux-2.6.git
Diffstat (limited to 'drivers/net/8390.c')
| -rw-r--r-- | drivers/net/8390.c | 10 | 
1 files changed, 6 insertions, 4 deletions
| diff --git a/drivers/net/8390.c b/drivers/net/8390.c index f87027420081..86be96af9c8f 100644 --- a/drivers/net/8390.c +++ b/drivers/net/8390.c @@ -275,12 +275,14 @@ static int ei_start_xmit(struct sk_buff *skb, struct net_device *dev)  	struct ei_device *ei_local = (struct ei_device *) netdev_priv(dev);  	int send_length = skb->len, output_page;  	unsigned long flags; +	char buf[ETH_ZLEN]; +	char *data = skb->data;  	if (skb->len < ETH_ZLEN) { -		skb = skb_padto(skb, ETH_ZLEN); -		if (skb == NULL) -			return 0; +		memset(buf, 0, ETH_ZLEN);	/* more efficient than doing just the needed bits */ +		memcpy(buf, data, skb->len);  		send_length = ETH_ZLEN; +		data = buf;  	}  	/* Mask interrupts from the ethercard.  @@ -347,7 +349,7 @@ static int ei_start_xmit(struct sk_buff *skb, struct net_device *dev)  	 * trigger the send later, upon receiving a Tx done interrupt.  	 */ -	ei_block_output(dev, send_length, skb->data, output_page); +	ei_block_output(dev, send_length, data, output_page);  	if (! ei_local->txing)   	{ | 
