From 92f268e034faf793f6d40de2f0fc81478a14ff39 Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Mon, 5 Dec 2005 11:00:40 -0800 Subject: [PATCH] sk98lin: rx checksum offset not set The checksum offsets for receive offload were not being set correctly. Signed-off-by: Stephen Hemminger Signed-off-by: Jeff Garzik --- drivers/net/sk98lin/skge.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'drivers/net') diff --git a/drivers/net/sk98lin/skge.c b/drivers/net/sk98lin/skge.c index 00c5d7f04c68..ae7343934758 100644 --- a/drivers/net/sk98lin/skge.c +++ b/drivers/net/sk98lin/skge.c @@ -818,7 +818,7 @@ uintptr_t VNextDescr; /* the virtual bus address of the next descriptor */ /* set the pointers right */ pDescr->VNextRxd = VNextDescr & 0xffffffffULL; pDescr->pNextRxd = pNextDescr; - pDescr->TcpSumStarts = 0; + if (!IsTx) pDescr->TcpSumStarts = ETH_HLEN << 16 | ETH_HLEN; /* advance one step */ pPrevDescr = pDescr; @@ -2169,7 +2169,7 @@ rx_start: } /* frame > SK_COPY_TRESHOLD */ #ifdef USE_SK_RX_CHECKSUM - pMsg->csum = pRxd->TcpSums; + pMsg->csum = pRxd->TcpSums & 0xffff; pMsg->ip_summed = CHECKSUM_HW; #else pMsg->ip_summed = CHECKSUM_NONE; -- cgit v1.2.2 From 1f064a87c80c86bd3878e6633de61e8b71aa6788 Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Tue, 6 Dec 2005 17:36:44 -0800 Subject: [TG3]: remove warning on race [ Move assosciated code comment to the correct spot, and update driver version and release date -DaveM ] Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller --- drivers/net/tg3.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'drivers/net') diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c index 1828a6bf8458..47bd4a394420 100644 --- a/drivers/net/tg3.c +++ b/drivers/net/tg3.c @@ -68,8 +68,8 @@ #define DRV_MODULE_NAME "tg3" #define PFX DRV_MODULE_NAME ": " -#define DRV_MODULE_VERSION "3.43" -#define DRV_MODULE_RELDATE "Oct 24, 2005" +#define DRV_MODULE_VERSION "3.44" +#define DRV_MODULE_RELDATE "Dec 6, 2005" #define TG3_DEF_MAC_MODE 0 #define TG3_DEF_RX_MODE 0 @@ -3565,12 +3565,15 @@ static int tg3_start_xmit(struct sk_buff *skb, struct net_device *dev) if (!spin_trylock(&tp->tx_lock)) return NETDEV_TX_LOCKED; - /* This is a hard error, log it. */ if (unlikely(TX_BUFFS_AVAIL(tp) <= (skb_shinfo(skb)->nr_frags + 1))) { - netif_stop_queue(dev); + if (!netif_queue_stopped(dev)) { + netif_stop_queue(dev); + + /* This is a hard error, log it. */ + printk(KERN_ERR PFX "%s: BUG! Tx Ring full when " + "queue awake!\n", dev->name); + } spin_unlock(&tp->tx_lock); - printk(KERN_ERR PFX "%s: BUG! Tx Ring full when queue awake!\n", - dev->name); return NETDEV_TX_BUSY; } -- cgit v1.2.2 From 016cc85072944bfa03c5e4b587ae89588ce2e5df Mon Sep 17 00:00:00 2001 From: Olaf Hering Date: Fri, 9 Dec 2005 19:12:10 +0100 Subject: [PATCH] pcnet32: use MAC address from prom also on powerpc The CSR contains garbage after a coldboot on RS/6000. One some systems (like my 44p 270) the MAC address is all FF, on others (like my B50) it is ff:ff:ff:fd:ff:6b. It can eventually be fixed by loading pcnet32, set the interface into the UP state, rmmod pcnet32 and load it again. But this worked only on the 270. Only netbooting after a cold start provides the correct MAC address via prom and CSR. This makes it very unreliable. I dont know why the MAC is stored in two different places. Remove the special case for powerpc, which was added in early 2.4 development. Signed-off-by: Olaf Hering drivers/net/pcnet32.c | 5 ----- 1 files changed, 5 deletions(-) Signed-off-by: Jeff Garzik --- drivers/net/pcnet32.c | 5 ----- 1 file changed, 5 deletions(-) (limited to 'drivers/net') diff --git a/drivers/net/pcnet32.c b/drivers/net/pcnet32.c index be319229f543..8f6cf8c896a4 100644 --- a/drivers/net/pcnet32.c +++ b/drivers/net/pcnet32.c @@ -1251,12 +1251,7 @@ pcnet32_probe1(unsigned long ioaddr, int shared, struct pci_dev *pdev) if (memcmp(promaddr, dev->dev_addr, 6) || !is_valid_ether_addr(dev->dev_addr)) { -#ifndef __powerpc__ if (is_valid_ether_addr(promaddr)) { -#else - if (!is_valid_ether_addr(dev->dev_addr) - && is_valid_ether_addr(promaddr)) { -#endif if (pcnet32_debug & NETIF_MSG_PROBE) { printk(" warning: CSR address invalid,\n"); printk(KERN_INFO " using instead PROM address of"); -- cgit v1.2.2