]> git.hungrycats.org Git - linux/commitdiff
Merge 8139too net driver oops fix from 2.4.x.
authorJeff Garzik <jgarzik@rum.normnet.org>
Mon, 11 Feb 2002 20:24:27 +0000 (15:24 -0500)
committerJeff Garzik <jgarzik@rum.normnet.org>
Mon, 11 Feb 2002 20:24:27 +0000 (15:24 -0500)
Fix originally by Andreas Dilger IIRC, merged by Dave Jones.

drivers/net/8139too.c

index 91ee34ccbb82b61df60c3db6ef7f9b361970d6b3..4f7ec6a6fe7d372229907cc9f37388e908b1779c 100644 (file)
@@ -1646,23 +1646,24 @@ static int rtl8139_start_xmit (struct sk_buff *skb, struct net_device *dev)
        struct rtl8139_private *tp = dev->priv;
        void *ioaddr = tp->mmio_addr;
        unsigned int entry;
+       unsigned int len = skb->len;
 
        /* Calculate the next Tx descriptor entry. */
        entry = tp->cur_tx % NUM_TX_DESC;
 
-       if (likely(skb->len < TX_BUF_SIZE)) {
+       if (likely(len < TX_BUF_SIZE)) {
                skb_copy_and_csum_dev(skb, tp->tx_buf[entry]);
                dev_kfree_skb(skb);
        } else {
                dev_kfree_skb(skb);
                tp->stats.tx_dropped++;
                return 0;
-       }
+       }
 
        /* Note: the chip doesn't have auto-pad! */
        spin_lock_irq(&tp->lock);
        RTL_W32_F (TxStatus0 + (entry * sizeof (u32)),
-                  tp->tx_flag | (skb->len >= ETH_ZLEN ? skb->len : ETH_ZLEN));
+                  tp->tx_flag | max(len, (unsigned int)ETH_ZLEN));
 
        dev->trans_start = jiffies;
 
@@ -1673,8 +1674,8 @@ static int rtl8139_start_xmit (struct sk_buff *skb, struct net_device *dev)
                netif_stop_queue (dev);
        spin_unlock_irq(&tp->lock);
 
-       DPRINTK ("%s: Queued Tx packet at %p size %u to slot %d.\n",
-                dev->name, skb->data, skb->len, entry);
+       DPRINTK ("%s: Queued Tx packet size %u to slot %d.\n",
+                dev->name, len, entry);
 
        return 0;
 }