Skip to content

Commit

Permalink
pcmcia: dev_node removal (drivers with unregister_netdev check)
Browse files Browse the repository at this point in the history
As a third step, remove any usage of dev_node_t from drivers which
only wrote to this typedef/struct, except to determine whether
register_netdev() succeeded previously. However, the function calling
unregister_netdev() was only ever called by the PCMCIA core if
register_netdev() succeeded previously. The lonely exception was
easily fixed.

CC: netdev@vger.kernel.org
CC: linux-wireless@vger.kernel.org
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
  • Loading branch information
Dominik Brodowski committed May 10, 2010
1 parent ded6a1a commit c7c2fa0
Show file tree
Hide file tree
Showing 16 changed files with 22 additions and 145 deletions.
8 changes: 1 addition & 7 deletions drivers/net/pcmcia/3c574_cs.c
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,6 @@ enum Window4 { /* Window 4: Xcvr/media bits. */

struct el3_private {
struct pcmcia_device *p_dev;
dev_node_t node;
u16 advertising, partner; /* NWay media advertisement */
unsigned char phys; /* MII device address */
unsigned int autoselect:1, default_media:3; /* Read from the EEPROM/Wn3_Config. */
Expand Down Expand Up @@ -309,8 +308,7 @@ static void tc574_detach(struct pcmcia_device *link)

dev_dbg(&link->dev, "3c574_detach()\n");

if (link->dev_node)
unregister_netdev(dev);
unregister_netdev(dev);

tc574_release(link);

Expand Down Expand Up @@ -444,17 +442,13 @@ static int tc574_config(struct pcmcia_device *link)
}
}

link->dev_node = &lp->node;
SET_NETDEV_DEV(dev, &link->dev);

if (register_netdev(dev) != 0) {
printk(KERN_NOTICE "3c574_cs: register_netdev() failed\n");
link->dev_node = NULL;
goto failed;
}

strcpy(lp->node.dev_name, dev->name);

printk(KERN_INFO "%s: %s at io %#3lx, irq %d, "
"hw_addr %pM.\n",
dev->name, cardname, dev->base_addr, dev->irq,
Expand Down
9 changes: 1 addition & 8 deletions drivers/net/pcmcia/3c589_cs.c
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,6 @@ enum RxFilter {

struct el3_private {
struct pcmcia_device *p_dev;
dev_node_t node;
/* For transceiver monitoring */
struct timer_list media;
u16 media_status;
Expand Down Expand Up @@ -222,8 +221,7 @@ static void tc589_detach(struct pcmcia_device *link)

dev_dbg(&link->dev, "3c589_detach\n");

if (link->dev_node)
unregister_netdev(dev);
unregister_netdev(dev);

tc589_release(link);

Expand All @@ -241,7 +239,6 @@ static void tc589_detach(struct pcmcia_device *link)
static int tc589_config(struct pcmcia_device *link)
{
struct net_device *dev = link->priv;
struct el3_private *lp = netdev_priv(dev);
__be16 *phys_addr;
int ret, i, j, multi = 0, fifo;
unsigned int ioaddr;
Expand Down Expand Up @@ -312,17 +309,13 @@ static int tc589_config(struct pcmcia_device *link)
else
printk(KERN_ERR "3c589_cs: invalid if_port requested\n");

link->dev_node = &lp->node;
SET_NETDEV_DEV(dev, &link->dev);

if (register_netdev(dev) != 0) {
printk(KERN_ERR "3c589_cs: register_netdev() failed\n");
link->dev_node = NULL;
goto failed;
}

strcpy(lp->node.dev_name, dev->name);

printk(KERN_INFO "%s: 3Com 3c%s, io %#3lx, irq %d, "
"hw_addr %pM\n",
dev->name, (multi ? "562" : "589"), dev->base_addr, dev->irq,
Expand Down
8 changes: 1 addition & 7 deletions drivers/net/pcmcia/axnet_cs.c
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,6 @@ static irqreturn_t ax_interrupt(int irq, void *dev_id);

typedef struct axnet_dev_t {
struct pcmcia_device *p_dev;
dev_node_t node;
caddr_t base;
struct timer_list watchdog;
int stale, fast_poll;
Expand Down Expand Up @@ -194,8 +193,7 @@ static void axnet_detach(struct pcmcia_device *link)

dev_dbg(&link->dev, "axnet_detach(0x%p)\n", link);

if (link->dev_node)
unregister_netdev(dev);
unregister_netdev(dev);

axnet_release(link);

Expand Down Expand Up @@ -392,17 +390,13 @@ static int axnet_config(struct pcmcia_device *link)
}

info->phy_id = (i < 32) ? i : -1;
link->dev_node = &info->node;
SET_NETDEV_DEV(dev, &link->dev);

if (register_netdev(dev) != 0) {
printk(KERN_NOTICE "axnet_cs: register_netdev() failed\n");
link->dev_node = NULL;
goto failed;
}

strcpy(info->node.dev_name, dev->name);

printk(KERN_INFO "%s: Asix AX88%d90: io %#3lx, irq %d, "
"hw_addr %pM\n",
dev->name, ((info->flags & IS_AX88790) ? 7 : 1),
Expand Down
21 changes: 7 additions & 14 deletions drivers/net/pcmcia/com20020_cs.c
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,6 @@ static void com20020_detach(struct pcmcia_device *p_dev);

typedef struct com20020_dev_t {
struct net_device *dev;
dev_node_t node;
} com20020_dev_t;

/*======================================================================
Expand Down Expand Up @@ -195,18 +194,16 @@ static void com20020_detach(struct pcmcia_device *link)

dev_dbg(&link->dev, "com20020_detach\n");

if (link->dev_node) {
dev_dbg(&link->dev, "unregister...\n");
dev_dbg(&link->dev, "unregister...\n");

unregister_netdev(dev);
unregister_netdev(dev);

/*
* this is necessary because we register our IRQ separately
* from card services.
*/
if (dev->irq)
/*
* this is necessary because we register our IRQ separately
* from card services.
*/
if (dev->irq)
free_irq(dev->irq, dev);
}

com20020_release(link);

Expand Down Expand Up @@ -297,20 +294,16 @@ static int com20020_config(struct pcmcia_device *link)
lp->card_name = "PCMCIA COM20020";
lp->card_flags = ARC_CAN_10MBIT; /* pretend all of them can 10Mbit */

link->dev_node = &info->node;
SET_NETDEV_DEV(dev, &link->dev);

i = com20020_found(dev, 0); /* calls register_netdev */

if (i != 0) {
dev_printk(KERN_NOTICE, &link->dev,
"com20020_cs: com20020_found() failed\n");
link->dev_node = NULL;
goto failed;
}

strcpy(info->node.dev_name, dev->name);

dev_dbg(&link->dev,KERN_INFO "%s: port %#3lx, irq %d\n",
dev->name, dev->base_addr, dev->irq);
return 0;
Expand Down
8 changes: 1 addition & 7 deletions drivers/net/pcmcia/fmvj18x_cs.c
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,6 @@ typedef enum { MBH10302, MBH10304, TDK, CONTEC, LA501, UNGERMANN,
*/
typedef struct local_info_t {
struct pcmcia_device *p_dev;
dev_node_t node;
long open_time;
uint tx_started:1;
uint tx_queue;
Expand Down Expand Up @@ -274,8 +273,7 @@ static void fmvj18x_detach(struct pcmcia_device *link)

dev_dbg(&link->dev, "fmvj18x_detach\n");

if (link->dev_node)
unregister_netdev(dev);
unregister_netdev(dev);

fmvj18x_release(link);

Expand Down Expand Up @@ -523,17 +521,13 @@ static int fmvj18x_config(struct pcmcia_device *link)
}

lp->cardtype = cardtype;
link->dev_node = &lp->node;
SET_NETDEV_DEV(dev, &link->dev);

if (register_netdev(dev) != 0) {
printk(KERN_NOTICE "fmvj18x_cs: register_netdev() failed\n");
link->dev_node = NULL;
goto failed;
}

strcpy(lp->node.dev_name, dev->name);

/* print current configuration */
printk(KERN_INFO "%s: %s, sram %s, port %#3lx, irq %d, "
"hw_addr %pM\n",
Expand Down
8 changes: 1 addition & 7 deletions drivers/net/pcmcia/ibmtr_cs.c
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,6 @@ static void ibmtr_detach(struct pcmcia_device *p_dev);
typedef struct ibmtr_dev_t {
struct pcmcia_device *p_dev;
struct net_device *dev;
dev_node_t node;
window_handle_t sram_win_handle;
struct tok_info *ti;
} ibmtr_dev_t;
Expand Down Expand Up @@ -190,8 +189,7 @@ static void ibmtr_detach(struct pcmcia_device *link)
*/
ti->sram_phys |= 1;

if (link->dev_node)
unregister_netdev(dev);
unregister_netdev(dev);

del_timer_sync(&(ti->tr_timer));

Expand Down Expand Up @@ -289,18 +287,14 @@ static int __devinit ibmtr_config(struct pcmcia_device *link)
Adapters Technical Reference" SC30-3585 for this info. */
ibmtr_hw_setup(dev, mmiobase);

link->dev_node = &info->node;
SET_NETDEV_DEV(dev, &link->dev);

i = ibmtr_probe_card(dev);
if (i != 0) {
printk(KERN_NOTICE "ibmtr_cs: register_netdev() failed\n");
link->dev_node = NULL;
goto failed;
}

strcpy(info->node.dev_name, dev->name);

printk(KERN_INFO
"%s: port %#3lx, irq %d, mmio %#5lx, sram %#5lx, hwaddr=%pM\n",
dev->name, dev->base_addr, dev->irq,
Expand Down
8 changes: 1 addition & 7 deletions drivers/net/pcmcia/nmclan_cs.c
Original file line number Diff line number Diff line change
Expand Up @@ -363,7 +363,6 @@ typedef struct _mace_statistics {

typedef struct _mace_private {
struct pcmcia_device *p_dev;
dev_node_t node;
struct net_device_stats linux_stats; /* Linux statistics counters */
mace_statistics mace_stats; /* MACE chip statistics counters */

Expand Down Expand Up @@ -491,8 +490,7 @@ static void nmclan_detach(struct pcmcia_device *link)

dev_dbg(&link->dev, "nmclan_detach\n");

if (link->dev_node)
unregister_netdev(dev);
unregister_netdev(dev);

nmclan_release(link);

Expand Down Expand Up @@ -696,18 +694,14 @@ static int nmclan_config(struct pcmcia_device *link)
else
printk(KERN_NOTICE "nmclan_cs: invalid if_port requested\n");

link->dev_node = &lp->node;
SET_NETDEV_DEV(dev, &link->dev);

i = register_netdev(dev);
if (i != 0) {
printk(KERN_NOTICE "nmclan_cs: register_netdev() failed\n");
link->dev_node = NULL;
goto failed;
}

strcpy(lp->node.dev_name, dev->name);

printk(KERN_INFO "%s: nmclan: port %#3lx, irq %d, %s port,"
" hw_addr %pM\n",
dev->name, dev->base_addr, dev->irq, if_names[dev->if_port],
Expand Down
8 changes: 1 addition & 7 deletions drivers/net/pcmcia/pcnet_cs.c
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,6 @@ static hw_info_t dl10022_info = { 0, 0, 0, 0, IS_DL10022|HAS_MII };

typedef struct pcnet_dev_t {
struct pcmcia_device *p_dev;
dev_node_t node;
u_int flags;
void __iomem *base;
struct timer_list watchdog;
Expand Down Expand Up @@ -287,8 +286,7 @@ static void pcnet_detach(struct pcmcia_device *link)

dev_dbg(&link->dev, "pcnet_detach\n");

if (link->dev_node)
unregister_netdev(dev);
unregister_netdev(dev);

pcnet_release(link);

Expand Down Expand Up @@ -639,17 +637,13 @@ static int pcnet_config(struct pcmcia_device *link)
if (info->flags & (IS_DL10019|IS_DL10022))
mii_phy_probe(dev);

link->dev_node = &info->node;
SET_NETDEV_DEV(dev, &link->dev);

if (register_netdev(dev) != 0) {
printk(KERN_NOTICE "pcnet_cs: register_netdev() failed\n");
link->dev_node = NULL;
goto failed;
}

strcpy(info->node.dev_name, dev->name);

if (info->flags & (IS_DL10019|IS_DL10022)) {
u_char id = inb(dev->base_addr + 0x1a);
printk(KERN_INFO "%s: NE2000 (DL100%d rev %02x): ",
Expand Down
9 changes: 1 addition & 8 deletions drivers/net/pcmcia/smc91c92_cs.c
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,6 @@ struct smc_private {
u_short manfid;
u_short cardid;

dev_node_t node;
struct sk_buff *saved_skb;
int packets_waiting;
void __iomem *base;
Expand Down Expand Up @@ -323,7 +322,6 @@ static int smc91c92_probe(struct pcmcia_device *link)
return -ENOMEM;
smc = netdev_priv(dev);
smc->p_dev = link;
link->priv = dev;

spin_lock_init(&smc->lock);
link->io.NumPorts1 = 16;
Expand Down Expand Up @@ -361,8 +359,7 @@ static void smc91c92_detach(struct pcmcia_device *link)

dev_dbg(&link->dev, "smc91c92_detach\n");

if (link->dev_node)
unregister_netdev(dev);
unregister_netdev(dev);

smc91c92_release(link);

Expand Down Expand Up @@ -956,17 +953,13 @@ static int smc91c92_config(struct pcmcia_device *link)
SMC_SELECT_BANK(0);
}

link->dev_node = &smc->node;
SET_NETDEV_DEV(dev, &link->dev);

if (register_netdev(dev) != 0) {
printk(KERN_ERR "smc91c92_cs: register_netdev() failed\n");
link->dev_node = NULL;
goto config_undo;
}

strcpy(smc->node.dev_name, dev->name);

printk(KERN_INFO "%s: smc91c%s rev %d: io %#3lx, irq %d, "
"hw_addr %pM\n",
dev->name, name, (rev & 0x0f), dev->base_addr, dev->irq,
Expand Down
Loading

0 comments on commit c7c2fa0

Please sign in to comment.