git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git]
/
drivers
/
net
/
smc91x.c
diff --git
a/drivers/net/smc91x.c
b/drivers/net/smc91x.c
index
cf62373
..
e62a958
100644
(file)
--- a/
drivers/net/smc91x.c
+++ b/
drivers/net/smc91x.c
@@
-154,7
+154,7
@@
MODULE_LICENSE("GPL");
/*
* The maximum number of processing loops allowed for each call to the
/*
* The maximum number of processing loops allowed for each call to the
- * IRQ handler.
+ * IRQ handler.
*/
#define MAX_IRQ_LOOPS 8
*/
#define MAX_IRQ_LOOPS 8
@@
-210,6
+210,7
@@
struct smc_local {
/* work queue */
struct work_struct phy_configure;
/* work queue */
struct work_struct phy_configure;
+ struct net_device *dev;
int work_pending;
spinlock_t lock;
int work_pending;
spinlock_t lock;
@@
-765,7
+766,7
@@
static int smc_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
/*
* Allocation succeeded: push packet to the chip's own memory
* immediately.
/*
* Allocation succeeded: push packet to the chip's own memory
* immediately.
- */
+ */
smc_hardware_send_pkt((unsigned long)dev);
}
smc_hardware_send_pkt((unsigned long)dev);
}
@@
-1114,10
+1115,11
@@
static void smc_phy_check_media(struct net_device *dev, int init)
* of autonegotiation.) If the RPC ANEG bit is cleared, the selection
* is controlled by the RPC SPEED and RPC DPLX bits.
*/
* of autonegotiation.) If the RPC ANEG bit is cleared, the selection
* is controlled by the RPC SPEED and RPC DPLX bits.
*/
-static void smc_phy_configure(
void *data
)
+static void smc_phy_configure(
struct work_struct *work
)
{
{
- struct net_device *dev = data;
- struct smc_local *lp = netdev_priv(dev);
+ struct smc_local *lp =
+ container_of(work, struct smc_local, phy_configure);
+ struct net_device *dev = lp->dev;
void __iomem *ioaddr = lp->base;
int phyaddr = lp->mii.phy_id;
int my_phy_caps; /* My PHY capabilities */
void __iomem *ioaddr = lp->base;
int phyaddr = lp->mii.phy_id;
int my_phy_caps; /* My PHY capabilities */
@@
-1284,7
+1286,7
@@
static void smc_eph_interrupt(struct net_device *dev)
* This is the main routine of the driver, to handle the device when
* it needs some attention.
*/
* This is the main routine of the driver, to handle the device when
* it needs some attention.
*/
-static irqreturn_t smc_interrupt(int irq, void *dev_id
, struct pt_regs *regs
)
+static irqreturn_t smc_interrupt(int irq, void *dev_id)
{
struct net_device *dev = dev_id;
struct smc_local *lp = netdev_priv(dev);
{
struct net_device *dev = dev_id;
struct smc_local *lp = netdev_priv(dev);
@@
-1400,7
+1402,7
@@
static irqreturn_t smc_interrupt(int irq, void *dev_id, struct pt_regs *regs)
static void smc_poll_controller(struct net_device *dev)
{
disable_irq(dev->irq);
static void smc_poll_controller(struct net_device *dev)
{
disable_irq(dev->irq);
- smc_interrupt(dev->irq, dev
, NULL
);
+ smc_interrupt(dev->irq, dev);
enable_irq(dev->irq);
}
#endif
enable_irq(dev->irq);
}
#endif
@@
-1592,7
+1594,7
@@
smc_open(struct net_device *dev)
/* Configure the PHY, initialize the link state */
if (lp->phy_type != 0)
/* Configure the PHY, initialize the link state */
if (lp->phy_type != 0)
- smc_phy_configure(
dev
);
+ smc_phy_configure(
&lp->phy_configure
);
else {
spin_lock_irq(&lp->lock);
smc_10bt_check_media(dev, 1);
else {
spin_lock_irq(&lp->lock);
smc_10bt_check_media(dev, 1);
@@
-1739,7
+1741,7
@@
static void smc_ethtool_setmsglevel(struct net_device *dev, u32 level)
lp->msg_enable = level;
}
lp->msg_enable = level;
}
-static struct ethtool_ops smc_ethtool_ops = {
+static
const
struct ethtool_ops smc_ethtool_ops = {
.get_settings = smc_ethtool_getsettings,
.set_settings = smc_ethtool_setsettings,
.get_drvinfo = smc_ethtool_getdrvinfo,
.get_settings = smc_ethtool_getsettings,
.set_settings = smc_ethtool_setsettings,
.get_drvinfo = smc_ethtool_getdrvinfo,
@@
-1972,7
+1974,8
@@
static int __init smc_probe(struct net_device *dev, void __iomem *ioaddr)
#endif
tasklet_init(&lp->tx_task, smc_hardware_send_pkt, (unsigned long)dev);
#endif
tasklet_init(&lp->tx_task, smc_hardware_send_pkt, (unsigned long)dev);
- INIT_WORK(&lp->phy_configure, smc_phy_configure, dev);
+ INIT_WORK(&lp->phy_configure, smc_phy_configure);
+ lp->dev = dev;
lp->mii.phy_id_mask = 0x1f;
lp->mii.reg_num_mask = 0x1f;
lp->mii.force_media = 0;
lp->mii.phy_id_mask = 0x1f;
lp->mii.reg_num_mask = 0x1f;
lp->mii.force_media = 0;
@@
-2322,7
+2325,7
@@
static int smc_drv_resume(struct platform_device *dev)
smc_reset(ndev);
smc_enable(ndev);
if (lp->phy_type != 0)
smc_reset(ndev);
smc_enable(ndev);
if (lp->phy_type != 0)
- smc_phy_configure(
ndev
);
+ smc_phy_configure(
&lp->phy_configure
);
netif_device_attach(ndev);
}
}
netif_device_attach(ndev);
}
}
@@
-2344,7
+2347,7
@@
static int __init smc_init(void)
#ifdef MODULE
#ifdef CONFIG_ISA
if (io == -1)
#ifdef MODULE
#ifdef CONFIG_ISA
if (io == -1)
- printk(KERN_WARNING
+ printk(KERN_WARNING
"%s: You shouldn't use auto-probing with insmod!\n",
CARDNAME);
#endif
"%s: You shouldn't use auto-probing with insmod!\n",
CARDNAME);
#endif