Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c7c2fa07 authored by Dominik Brodowski's avatar Dominik Brodowski
Browse files

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: default avatarDominik Brodowski <linux@dominikbrodowski.net>
parent ded6a1a3
Loading
Loading
Loading
Loading
+1 −7
Original line number Diff line number Diff line
@@ -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. */
@@ -309,7 +308,6 @@ static void tc574_detach(struct pcmcia_device *link)

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

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

	tc574_release(link);
@@ -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,
+1 −8
Original line number Diff line number Diff line
@@ -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;
@@ -222,7 +221,6 @@ static void tc589_detach(struct pcmcia_device *link)

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

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

    tc589_release(link);
@@ -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;
@@ -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,
+1 −7
Original line number Diff line number Diff line
@@ -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;
@@ -194,7 +193,6 @@ 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);

    axnet_release(link);
@@ -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),
+7 −14
Original line number Diff line number Diff line
@@ -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;

/*======================================================================
@@ -195,7 +194,6 @@ 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");

    unregister_netdev(dev);
@@ -206,7 +204,6 @@ static void com20020_detach(struct pcmcia_device *link)
     */
    if (dev->irq)
	    free_irq(dev->irq, dev);
    }

    com20020_release(link);

@@ -297,7 +294,6 @@ 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 */
@@ -305,12 +301,9 @@ static int com20020_config(struct pcmcia_device *link)
    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;
+1 −7
Original line number Diff line number Diff line
@@ -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;
@@ -274,7 +273,6 @@ static void fmvj18x_detach(struct pcmcia_device *link)

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

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

    fmvj18x_release(link);
@@ -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",
Loading