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
0e9833a
..
e62a958
100644
(file)
--- a/
drivers/net/smc91x.c
+++ b/
drivers/net/smc91x.c
@@
-66,7
+66,6
@@
static const char version[] =
#endif
#endif
-#include <linux/config.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
@@
-155,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
@@
-211,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;
@@
-322,12
+322,12
@@
static void smc_reset(struct net_device *dev)
DBG(2, "%s: %s\n", dev->name, __FUNCTION__);
/* Disable all interrupts, block TX tasklet */
DBG(2, "%s: %s\n", dev->name, __FUNCTION__);
/* Disable all interrupts, block TX tasklet */
- spin_lock(&lp->lock);
+ spin_lock
_irq
(&lp->lock);
SMC_SELECT_BANK(2);
SMC_SET_INT_MASK(0);
pending_skb = lp->pending_tx_skb;
lp->pending_tx_skb = NULL;
SMC_SELECT_BANK(2);
SMC_SET_INT_MASK(0);
pending_skb = lp->pending_tx_skb;
lp->pending_tx_skb = NULL;
- spin_unlock(&lp->lock);
+ spin_unlock
_irq
(&lp->lock);
/* free any pending tx skb */
if (pending_skb) {
/* free any pending tx skb */
if (pending_skb) {
@@
-449,12
+449,12
@@
static void smc_shutdown(struct net_device *dev)
DBG(2, "%s: %s\n", CARDNAME, __FUNCTION__);
/* no more interrupts for me */
DBG(2, "%s: %s\n", CARDNAME, __FUNCTION__);
/* no more interrupts for me */
- spin_lock(&lp->lock);
+ spin_lock
_irq
(&lp->lock);
SMC_SELECT_BANK(2);
SMC_SET_INT_MASK(0);
pending_skb = lp->pending_tx_skb;
lp->pending_tx_skb = NULL;
SMC_SELECT_BANK(2);
SMC_SET_INT_MASK(0);
pending_skb = lp->pending_tx_skb;
lp->pending_tx_skb = NULL;
- spin_unlock(&lp->lock);
+ spin_unlock
_irq
(&lp->lock);
if (pending_skb)
dev_kfree_skb(pending_skb);
if (pending_skb)
dev_kfree_skb(pending_skb);
@@
-766,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);
}
@@
-1115,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 */
@@
-1285,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);
@@
-1401,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
@@
-1593,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);
@@
-1740,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,
@@
-1973,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;
@@
-2323,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);
}
}
@@
-2345,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