Commit 27d52ab6 authored by Benjamin LaHaise's avatar Benjamin LaHaise

update ns83820 to 0.20

parent 31f875aa
#define _VERSION "0.19" #define _VERSION "0.20"
/* ns83820.c by Benjamin LaHaise with contributions. /* ns83820.c by Benjamin LaHaise with contributions.
* *
* Questions/comments/discussion to linux-ns83820@kvack.org. * Questions/comments/discussion to linux-ns83820@kvack.org.
* *
* $Revision: 1.34.2.20 $ * $Revision: 1.34.2.23 $
* *
* Copyright 2001 Benjamin LaHaise. * Copyright 2001 Benjamin LaHaise.
* Copyright 2001, 2002 Red Hat. * Copyright 2001, 2002 Red Hat.
...@@ -62,6 +62,7 @@ ...@@ -62,6 +62,7 @@
* - gmii bus probing * - gmii bus probing
* - fix missed txok introduced during performance * - fix missed txok introduced during performance
* tuning * tuning
* 0.20 - fix stupid RFEN thinko. i am such a smurf.
* *
* Driver Overview * Driver Overview
* =============== * ===============
...@@ -1001,7 +1002,6 @@ static void ns83820_cleanup_tx(struct ns83820 *dev) ...@@ -1001,7 +1002,6 @@ static void ns83820_cleanup_tx(struct ns83820 *dev)
le32_to_cpu(desc[DESC_CMDSTS]) & CMDSTS_LEN_MASK, le32_to_cpu(desc[DESC_CMDSTS]) & CMDSTS_LEN_MASK,
PCI_DMA_TODEVICE); PCI_DMA_TODEVICE);
dev_kfree_skb_irq(skb); dev_kfree_skb_irq(skb);
dev_kfree_skb(skb);
atomic_dec(&dev->nr_tx_skbs); atomic_dec(&dev->nr_tx_skbs);
} }
} }
...@@ -1524,8 +1524,9 @@ static void ns83820_set_multicast(struct net_device *_dev) ...@@ -1524,8 +1524,9 @@ static void ns83820_set_multicast(struct net_device *_dev)
{ {
struct ns83820 *dev = (void *)_dev; struct ns83820 *dev = (void *)_dev;
u8 *rfcr = dev->base + RFCR; u8 *rfcr = dev->base + RFCR;
u32 and_mask = 0xffffffff & ~RFCR_RFEN; u32 and_mask = 0xffffffff;
u32 or_mask = 0; u32 or_mask = 0;
u32 val;
if (dev->net_dev.flags & IFF_PROMISC) if (dev->net_dev.flags & IFF_PROMISC)
or_mask |= RFCR_AAU | RFCR_AAM; or_mask |= RFCR_AAU | RFCR_AAM;
...@@ -1538,7 +1539,10 @@ static void ns83820_set_multicast(struct net_device *_dev) ...@@ -1538,7 +1539,10 @@ static void ns83820_set_multicast(struct net_device *_dev)
and_mask &= ~RFCR_AAM; and_mask &= ~RFCR_AAM;
spin_lock_irq(&dev->misc_lock); spin_lock_irq(&dev->misc_lock);
writel((readl(rfcr) & and_mask) | or_mask, rfcr); val = (readl(rfcr) & and_mask) | or_mask;
/* Ramit : RFCR Write Fix doc says RFEN must be 0 modify other bits */
writel(val & ~RFCR_RFEN, rfcr);
writel(val, rfcr);
spin_unlock_irq(&dev->misc_lock); spin_unlock_irq(&dev->misc_lock);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment