patch-2.4.27 linux-2.4.27/drivers/net/b44.c
Next file: linux-2.4.27/drivers/net/defxx.c
Previous file: linux-2.4.27/drivers/net/amd8111e.h
Back to the patch index
Back to the overall index
- Lines: 136
- Date:
2004-08-07 16:26:05.038362556 -0700
- Orig file:
linux-2.4.26/drivers/net/b44.c
- Orig date:
2003-11-28 10:26:20.000000000 -0800
diff -urN linux-2.4.26/drivers/net/b44.c linux-2.4.27/drivers/net/b44.c
@@ -2,6 +2,8 @@
*
* Copyright (C) 2002 David S. Miller (davem@redhat.com)
* Fixed by Pekka Pietikainen (pp@ee.oulu.fi)
+ *
+ * Distribute under GPL.
*/
#include <linux/kernel.h>
@@ -25,8 +27,8 @@
#define DRV_MODULE_NAME "b44"
#define PFX DRV_MODULE_NAME ": "
-#define DRV_MODULE_VERSION "0.92"
-#define DRV_MODULE_RELDATE "Nov 4, 2003"
+#define DRV_MODULE_VERSION "0.93"
+#define DRV_MODULE_RELDATE "Mar, 2004"
#define B44_DEF_MSG_ENABLE \
(NETIF_MSG_DRV | \
@@ -83,6 +85,10 @@
static struct pci_device_id b44_pci_tbl[] = {
{ PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_BCM4401,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL },
+ { PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_BCM4401B0,
+ PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL },
+ { PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_BCM4401B1,
+ PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL },
{ } /* terminate list with empty entry */
};
@@ -90,7 +96,7 @@
static void b44_halt(struct b44 *);
static void b44_init_rings(struct b44 *);
-static int b44_init_hw(struct b44 *);
+static void b44_init_hw(struct b44 *);
static int b44_wait_bit(struct b44 *bp, unsigned long reg,
u32 bit, unsigned long timeout, const int clear)
@@ -1170,11 +1176,10 @@
* packet processing. Invoked with bp->lock held.
*/
static void __b44_set_rx_mode(struct net_device *);
-static int b44_init_hw(struct b44 *bp)
+static void b44_init_hw(struct b44 *bp)
{
u32 val;
- b44_disable_ints(bp);
b44_chip_reset(bp);
b44_phy_reset(bp);
b44_setup_phy(bp);
@@ -1203,8 +1208,6 @@
val = br32(B44_ENET_CTRL);
bw32(B44_ENET_CTRL, (val | ENET_CTRL_ENABLE));
-
- return 0;
}
static int b44_open(struct net_device *dev)
@@ -1223,9 +1226,7 @@
spin_lock_irq(&bp->lock);
b44_init_rings(bp);
- err = b44_init_hw(bp);
- if (err)
- goto err_out_noinit;
+ b44_init_hw(bp);
bp->flags |= B44_FLAG_INIT_COMPLETE;
spin_unlock_irq(&bp->lock);
@@ -1240,11 +1241,6 @@
return 0;
-err_out_noinit:
- b44_halt(bp);
- b44_free_rings(bp);
- spin_unlock_irq(&bp->lock);
- free_irq(dev->irq, dev);
err_out_free:
b44_free_consistent(bp);
return err;
@@ -1373,7 +1369,7 @@
spin_unlock_irq(&bp->lock);
}
-static int b44_ethtool_ioctl (struct net_device *dev, void *useraddr)
+static int b44_ethtool_ioctl (struct net_device *dev, void __user *useraddr)
{
struct b44 *bp = dev->priv;
struct pci_dev *pci_dev = bp->pdev;
@@ -1383,7 +1379,7 @@
return -EFAULT;
switch (ethcmd) {
- case ETHTOOL_GDRVINFO:{
+ case ETHTOOL_GDRVINFO: {
struct ethtool_drvinfo info = { ETHTOOL_GDRVINFO };
strcpy (info.driver, DRV_MODULE_NAME);
strcpy (info.version, DRV_MODULE_VERSION);
@@ -1616,13 +1612,13 @@
static int b44_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
{
- struct mii_ioctl_data *data = (struct mii_ioctl_data *)&ifr->ifr_data;
+ struct mii_ioctl_data __user *data = (struct mii_ioctl_data __user *)&ifr->ifr_data;
struct b44 *bp = dev->priv;
int err;
switch (cmd) {
case SIOCETHTOOL:
- return b44_ethtool_ioctl(dev, (void *) ifr->ifr_data);
+ return b44_ethtool_ioctl(dev, (void __user*) ifr->ifr_data);
case SIOCGMIIPHY:
data->phy_id = bp->phy_addr;
@@ -1758,6 +1754,7 @@
}
SET_MODULE_OWNER(dev);
+ SET_NETDEV_DEV(dev,&pdev->dev);
/* No interesting netdevice features in this card... */
dev->features |= 0;
@@ -1884,6 +1881,8 @@
struct net_device *dev = pci_get_drvdata(pdev);
struct b44 *bp = dev->priv;
+ pci_restore_state(pdev, bp->pci_cfg_state);
+
if (!netif_running(dev))
return 0;
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)