aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/pcnet32.c5
-rw-r--r--drivers/net/sk98lin/skge.c12
-rw-r--r--drivers/net/skge.c10
3 files changed, 13 insertions, 14 deletions
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)
1251 1251
1252 if (memcmp(promaddr, dev->dev_addr, 6) 1252 if (memcmp(promaddr, dev->dev_addr, 6)
1253 || !is_valid_ether_addr(dev->dev_addr)) { 1253 || !is_valid_ether_addr(dev->dev_addr)) {
1254#ifndef __powerpc__
1255 if (is_valid_ether_addr(promaddr)) { 1254 if (is_valid_ether_addr(promaddr)) {
1256#else
1257 if (!is_valid_ether_addr(dev->dev_addr)
1258 && is_valid_ether_addr(promaddr)) {
1259#endif
1260 if (pcnet32_debug & NETIF_MSG_PROBE) { 1255 if (pcnet32_debug & NETIF_MSG_PROBE) {
1261 printk(" warning: CSR address invalid,\n"); 1256 printk(" warning: CSR address invalid,\n");
1262 printk(KERN_INFO " using instead PROM address of"); 1257 printk(KERN_INFO " using instead PROM address of");
diff --git a/drivers/net/sk98lin/skge.c b/drivers/net/sk98lin/skge.c
index e3bdb5836001..e5591d33dd28 100644
--- a/drivers/net/sk98lin/skge.c
+++ b/drivers/net/sk98lin/skge.c
@@ -815,7 +815,7 @@ uintptr_t VNextDescr; /* the virtual bus address of the next descriptor */
815 /* set the pointers right */ 815 /* set the pointers right */
816 pDescr->VNextRxd = VNextDescr & 0xffffffffULL; 816 pDescr->VNextRxd = VNextDescr & 0xffffffffULL;
817 pDescr->pNextRxd = pNextDescr; 817 pDescr->pNextRxd = pNextDescr;
818 pDescr->TcpSumStarts = 0; 818 if (!IsTx) pDescr->TcpSumStarts = ETH_HLEN << 16 | ETH_HLEN;
819 819
820 /* advance one step */ 820 /* advance one step */
821 pPrevDescr = pDescr; 821 pPrevDescr = pDescr;
@@ -2163,10 +2163,12 @@ rx_start:
2163 skb_put(pMsg, FrameLength); 2163 skb_put(pMsg, FrameLength);
2164 } /* frame > SK_COPY_TRESHOLD */ 2164 } /* frame > SK_COPY_TRESHOLD */
2165 2165
2166 if (pRxPort->RxCsum) { 2166#ifdef USE_SK_RX_CHECKSUM
2167 pMsg->csum = pRxd->TcpSums; 2167 pMsg->csum = pRxd->TcpSums & 0xffff;
2168 pMsg->ip_summed = CHECKSUM_HW; 2168 pMsg->ip_summed = CHECKSUM_HW;
2169 } 2169#else
2170 pMsg->ip_summed = CHECKSUM_NONE;
2171#endif
2170 2172
2171 SK_DBG_MSG(NULL, SK_DBGMOD_DRV, 1,("V")); 2173 SK_DBG_MSG(NULL, SK_DBGMOD_DRV, 1,("V"));
2172 ForRlmt = SK_RLMT_RX_PROTOCOL; 2174 ForRlmt = SK_RLMT_RX_PROTOCOL;
diff --git a/drivers/net/skge.c b/drivers/net/skge.c
index 716467879b9c..8b6e2a11e28d 100644
--- a/drivers/net/skge.c
+++ b/drivers/net/skge.c
@@ -2280,11 +2280,13 @@ static int skge_xmit_frame(struct sk_buff *skb, struct net_device *dev)
2280 } 2280 }
2281 2281
2282 if (unlikely(skge->tx_avail < skb_shinfo(skb)->nr_frags +1)) { 2282 if (unlikely(skge->tx_avail < skb_shinfo(skb)->nr_frags +1)) {
2283 netif_stop_queue(dev); 2283 if (!netif_stopped(dev)) {
2284 spin_unlock_irqrestore(&skge->tx_lock, flags); 2284 netif_stop_queue(dev);
2285 2285
2286 printk(KERN_WARNING PFX "%s: ring full when queue awake!\n", 2286 printk(KERN_WARNING PFX "%s: ring full when queue awake!\n",
2287 dev->name); 2287 dev->name);
2288 }
2289 spin_unlock_irqrestore(&skge->tx_lock, flags);
2288 return NETDEV_TX_BUSY; 2290 return NETDEV_TX_BUSY;
2289 } 2291 }
2290 2292