patch-2.4.6 linux/drivers/net/pci-skeleton.c
Next file: linux/drivers/net/pcmcia/Config.in
Previous file: linux/drivers/net/ni65.c
Back to the patch index
Back to the overall index
- Lines: 123
- Date:
Mon Jul 2 14:03:04 2001
- Orig file:
v2.4.5/linux/drivers/net/pci-skeleton.c
- Orig date:
Fri Apr 20 11:54:23 2001
diff -u --recursive --new-file v2.4.5/linux/drivers/net/pci-skeleton.c linux/drivers/net/pci-skeleton.c
@@ -85,6 +85,7 @@
*/
+#include <linux/config.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/pci.h>
@@ -93,6 +94,7 @@
#include <linux/netdevice.h>
#include <linux/etherdevice.h>
#include <linux/delay.h>
+#include <linux/mii.h>
#include <asm/io.h>
#define NETDRV_VERSION "1.0.0"
@@ -480,11 +482,15 @@
};
MODULE_AUTHOR ("Jeff Garzik <jgarzik@mandrakesoft.com>");
-MODULE_DESCRIPTION ("RealTek RTL-8139 Fast Ethernet driver");
+MODULE_DESCRIPTION ("Skeleton for a PCI Fast Ethernet driver");
MODULE_PARM (multicast_filter_limit, "i");
MODULE_PARM (max_interrupt_work, "i");
MODULE_PARM (debug, "i");
MODULE_PARM (media, "1-" __MODULE_STRING(8) "i");
+MODULE_PARM_DESC (multicast_filter_limit, "pci-skeleton maximum number of filtered multicast addresses");
+MODULE_PARM_DESC (max_interrupt_work, "pci-skeleton maximum events handled per interrupt");
+MODULE_PARM_DESC (media, "pci-skeleton: Bits 0-3: media type, bit 17: full duplex");
+MODULE_PARM_DESC (debug, "(unused)");
static int read_eeprom (void *ioaddr, int location, int addr_len);
static int netdrv_open (struct net_device *dev);
@@ -1777,31 +1783,34 @@
static int netdrv_ioctl (struct net_device *dev, struct ifreq *rq, int cmd)
{
struct netdrv_private *tp = dev->priv;
- u16 *data = (u16 *) & rq->ifr_data;
+ struct mii_ioctl_data *data = (struct mii_ioctl_data *) & rq->ifr_data;
unsigned long flags;
int rc = 0;
DPRINTK ("ENTER\n");
switch (cmd) {
- case SIOCDEVPRIVATE: /* Get the address of the PHY in use. */
- data[0] = tp->phys[0] & 0x3f;
+ case SIOCGMIIPHY: /* Get address of MII PHY in use. */
+ case SIOCDEVPRIVATE: /* for binary compat, remove in 2.5 */
+ data->phy_id = tp->phys[0] & 0x3f;
/* Fall Through */
- case SIOCDEVPRIVATE + 1: /* Read the specified MII register. */
+ case SIOCGMIIREG: /* Read MII PHY register. */
+ case SIOCDEVPRIVATE+1: /* for binary compat, remove in 2.5 */
spin_lock_irqsave (&tp->lock, flags);
- data[3] = mdio_read (dev, data[0], data[1] & 0x1f);
+ data->val_out = mdio_read (dev, data->phy_id & 0x1f, data->reg_num & 0x1f);
spin_unlock_irqrestore (&tp->lock, flags);
break;
- case SIOCDEVPRIVATE + 2: /* Write the specified MII register */
+ case SIOCSMIIREG: /* Write MII PHY register. */
+ case SIOCDEVPRIVATE+2: /* for binary compat, remove in 2.5 */
if (!capable (CAP_NET_ADMIN)) {
rc = -EPERM;
break;
}
spin_lock_irqsave (&tp->lock, flags);
- mdio_write (dev, data[0], data[1] & 0x1f, data[2]);
+ mdio_write (dev, data->phy_id & 0x1f, data->reg_num & 0x1f, data->val_in);
spin_unlock_irqrestore (&tp->lock, flags);
break;
@@ -1918,7 +1927,9 @@
}
-static void netdrv_suspend (struct pci_dev *pdev)
+#ifdef CONFIG_PM
+
+static int netdrv_suspend (struct pci_dev *pdev, u32 state)
{
struct net_device *dev = pci_get_drvdata (pdev);
struct netdrv_private *tp = dev->priv;
@@ -1942,10 +1953,12 @@
spin_unlock_irqrestore (&tp->lock, flags);
pci_power_off (pdev, -1);
+
+ return 0;
}
-static void netdrv_resume (struct pci_dev *pdev)
+static int netdrv_resume (struct pci_dev *pdev)
{
struct net_device *dev = pci_get_drvdata (pdev);
@@ -1954,16 +1967,22 @@
pci_power_on (pdev);
netif_device_attach (dev);
netdrv_hw_start (dev);
+
+ return 0;
}
+#endif /* CONFIG_PM */
+
static struct pci_driver netdrv_pci_driver = {
name: MODNAME,
id_table: netdrv_pci_tbl,
probe: netdrv_init_one,
remove: netdrv_remove_one,
+#ifdef CONFIG_PM
suspend: netdrv_suspend,
resume: netdrv_resume,
+#endif /* CONFIG_PM */
};
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)