pcmcia: dev_node removal (drivers with unregister_netdev check)
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>
This commit is contained in:
parent
ded6a1a341
commit
c7c2fa0790
16 changed files with 22 additions and 145 deletions
|
@ -297,31 +297,9 @@ static void xirc2ps_detach(struct pcmcia_device *p_dev);
|
|||
|
||||
static irqreturn_t xirc2ps_interrupt(int irq, void *dev_id);
|
||||
|
||||
/****************
|
||||
* A linked list of "instances" of the device. Each actual
|
||||
* PCMCIA card corresponds to one device instance, and is described
|
||||
* by one struct pcmcia_device structure (defined in ds.h).
|
||||
*
|
||||
* You may not want to use a linked list for this -- for example, the
|
||||
* memory card driver uses an array of struct pcmcia_device pointers, where minor
|
||||
* device numbers are used to derive the corresponding array index.
|
||||
*/
|
||||
|
||||
/****************
|
||||
* A driver needs to provide a dev_node_t structure for each device
|
||||
* on a card. In some cases, there is only one device per card (for
|
||||
* example, ethernet cards, modems). In other cases, there may be
|
||||
* many actual or logical devices (SCSI adapters, memory cards with
|
||||
* multiple partitions). The dev_node_t structures need to be kept
|
||||
* in a linked list starting at the 'dev' field of a struct pcmcia_device
|
||||
* structure. We allocate them in the card's private data structure,
|
||||
* because they generally can't be allocated dynamically.
|
||||
*/
|
||||
|
||||
typedef struct local_info_t {
|
||||
struct net_device *dev;
|
||||
struct pcmcia_device *p_dev;
|
||||
dev_node_t node;
|
||||
|
||||
int card_type;
|
||||
int probe_port;
|
||||
|
@ -579,8 +557,7 @@ xirc2ps_detach(struct pcmcia_device *link)
|
|||
|
||||
dev_dbg(&link->dev, "detach\n");
|
||||
|
||||
if (link->dev_node)
|
||||
unregister_netdev(dev);
|
||||
unregister_netdev(dev);
|
||||
|
||||
xirc2ps_release(link);
|
||||
|
||||
|
@ -985,17 +962,13 @@ xirc2ps_config(struct pcmcia_device * link)
|
|||
if (local->dingo)
|
||||
do_reset(dev, 1); /* a kludge to make the cem56 work */
|
||||
|
||||
link->dev_node = &local->node;
|
||||
SET_NETDEV_DEV(dev, &link->dev);
|
||||
|
||||
if ((err=register_netdev(dev))) {
|
||||
printk(KNOT_XIRC "register_netdev() failed\n");
|
||||
link->dev_node = NULL;
|
||||
goto config_error;
|
||||
}
|
||||
|
||||
strcpy(local->node.dev_name, dev->name);
|
||||
|
||||
/* give some infos about the hardware */
|
||||
printk(KERN_INFO "%s: %s: port %#3lx, irq %d, hwaddr %pM\n",
|
||||
dev->name, local->manf_str,(u_long)dev->base_addr, (int)dev->irq,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue