Extend alloc_netdev{,_mq{,s}}() to take name_assign_type as argument, and convert
all users to pass NET_NAME_UNKNOWN.
Coccinelle patch:
@@
expression sizeof_priv, name, setup, txqs, rxqs, count;
@@
(
-alloc_netdev_mqs(sizeof_priv, name, setup, txqs, rxqs)
+alloc_netdev_mqs(sizeof_priv, name, NET_NAME_UNKNOWN, setup, txqs, rxqs)
|
-alloc_netdev_mq(sizeof_priv, name, setup, count)
+alloc_netdev_mq(sizeof_priv, name, NET_NAME_UNKNOWN, setup, count)
|
-alloc_netdev(sizeof_priv, name, setup)
+alloc_netdev(sizeof_priv, name, NET_NAME_UNKNOWN, setup)
)
v9: move comments here from the wrong commit
Signed-off-by: Tom Gundersen <teg@jklm.no>
Reviewed-by: David Herrmann <dh.herrmann@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
                goto have_dev;
        }
 
-       net = alloc_netdev(sizeof(*dev), "firewire%d", fwnet_init_dev);
+       net = alloc_netdev(sizeof(*dev), "firewire%d", NET_NAME_UNKNOWN,
+                          fwnet_init_dev);
        if (net == NULL) {
                mutex_unlock(&fwnet_device_mutex);
                return -ENOMEM;
 
                goto out;
        }
 
-       ssi->netdev = alloc_netdev(0, ifname, ssip_pn_setup);
+       ssi->netdev = alloc_netdev(0, ifname, NET_NAME_UNKNOWN, ssip_pn_setup);
        if (!ssi->netdev) {
                dev_err(dev, "No memory for netdev\n");
                err = -ENOMEM;
 
        /* change ethxxx to iwxxx */
        strcpy(name, "iw");
        strcat(name, &c2dev->netdev->name[3]);
-       netdev = alloc_netdev(0, name, setup);
+       netdev = alloc_netdev(0, name, NET_NAME_UNKNOWN, setup);
        if (!netdev) {
                printk(KERN_ERR PFX "%s -  etherdev alloc failed",
                        __func__);
 
 {
        struct net_device *dev;
 
-       dev = alloc_netdev((int) sizeof (struct ipoib_dev_priv), name,
-                          ipoib_setup);
+       dev = alloc_netdev((int)sizeof(struct ipoib_dev_priv), name,
+                          NET_NAME_UNKNOWN, ipoib_setup);
        if (!dev)
                return NULL;
 
 
                printk(KERN_WARNING "isdn_net: Could not allocate net-device\n");
                return NULL;
        }
-       netdev->dev = alloc_netdev(sizeof(isdn_net_local), name, _isdn_setup);
+       netdev->dev = alloc_netdev(sizeof(isdn_net_local), name,
+                                  NET_NAME_UNKNOWN, _isdn_setup);
        if (!netdev->dev) {
                printk(KERN_WARNING "isdn_net: Could not allocate network device\n");
                kfree(netdev);
 
        if ((if_num = get_if(dvbnet)) < 0)
                return -EINVAL;
 
-       net = alloc_netdev(sizeof(struct dvb_net_priv), "dvb", dvb_net_setup);
+       net = alloc_netdev(sizeof(struct dvb_net_priv), "dvb",
+                          NET_NAME_UNKNOWN, dvb_net_setup);
        if (!net)
                return -ENOMEM;
 
 
         * use ether_setup() to init the majority of our device
         * structure and then override the necessary pieces.
         */
-       xpnet_device = alloc_netdev(0, XPNET_DEVICE_NAME, ether_setup);
+       xpnet_device = alloc_netdev(0, XPNET_DEVICE_NAME, NET_NAME_UNKNOWN,
+                                   ether_setup);
        if (xpnet_device == NULL) {
                kfree(xpnet_broadcast_partitions);
                return -ENOMEM;
 
        struct net_device *dev;
 
        dev = alloc_netdev(sizeof(struct arcnet_local),
-                          name && *name ? name : "arc%d", arcdev_setup);
+                          name && *name ? name : "arc%d", NET_NAME_UNKNOWN,
+                          arcdev_setup);
        if(dev) {
                struct arcnet_local *lp = netdev_priv(dev);
                spin_lock_init(&lp->lock);
 
        rtnl_lock();
 
        bond_dev = alloc_netdev_mq(sizeof(struct bonding),
-                                  name ? name : "bond%d",
+                                  name ? name : "bond%d", NET_NAME_UNKNOWN,
                                   bond_setup, tx_queues);
        if (!bond_dev) {
                pr_err("%s: eek! can't alloc netdev!\n", name);
 
        result = snprintf(name, sizeof(name), "cf%s", tty->name);
        if (result >= IFNAMSIZ)
                return -EINVAL;
-       dev = alloc_netdev(sizeof(*ser), name, caifdev_setup);
+       dev = alloc_netdev(sizeof(*ser), name, NET_NAME_UNKNOWN,
+                          caifdev_setup);
        if (!dev)
                return -ENOMEM;
 
 
        int res;
        dev = (struct cfspi_dev *)pdev->dev.platform_data;
 
-       ndev = alloc_netdev(sizeof(struct cfspi),
-                       "cfspi%d", cfspi_setup);
+       ndev = alloc_netdev(sizeof(struct cfspi), "cfspi%d",
+                           NET_NAME_UNKNOWN, cfspi_setup);
        if (!dev)
                return -ENODEV;
 
 
        int err = -EINVAL;
 
        netdev = alloc_netdev(sizeof(struct cfv_info), cfv_netdev_name,
-                             cfv_netdev_setup);
+                             NET_NAME_UNKNOWN, cfv_netdev_setup);
        if (!netdev)
                return -ENOMEM;
 
 
        else
                size = sizeof_priv;
 
-       dev = alloc_netdev(size, "can%d", can_setup);
+       dev = alloc_netdev(size, "can%d", NET_NAME_UNKNOWN, can_setup);
        if (!dev)
                return NULL;
 
 
                return NULL;
 
        sprintf(name, "slcan%d", i);
-       dev = alloc_netdev(sizeof(*sl), name, slc_setup);
+       dev = alloc_netdev(sizeof(*sl), name, NET_NAME_UNKNOWN, slc_setup);
        if (!dev)
                return NULL;
 
 
        struct net_device *dev_dummy;
        int err;
 
-       dev_dummy = alloc_netdev(0, "dummy%d", dummy_setup);
+       dev_dummy = alloc_netdev(0, "dummy%d", NET_NAME_UNKNOWN, dummy_setup);
        if (!dev_dummy)
                return -ENOMEM;
 
 
 
        pr_info("%s\n", version);
 
-       dev_eql = alloc_netdev(sizeof(equalizer_t), "eql", eql_setup);
+       dev_eql = alloc_netdev(sizeof(equalizer_t), "eql", NET_NAME_UNKNOWN,
+                              eql_setup);
        if (!dev_eql)
                return -ENOMEM;
 
 
 static struct net_device *____alloc_ei_netdev(int size)
 {
        return alloc_netdev(sizeof(struct ei_device) + size, "eth%d",
-                               ethdev_setup);
+                           NET_NAME_UNKNOWN, ethdev_setup);
 }
 
 
 
        /* Allocate the device structure.  Normally, "name" is a
         * template, instantiated by register_netdev(), but not for us.
         */
-       dev = alloc_netdev_mqs(sizeof(*priv), name, tile_net_setup,
-                              NR_CPUS, 1);
+       dev = alloc_netdev_mqs(sizeof(*priv), name, NET_NAME_UNKNOWN,
+                              tile_net_setup, NR_CPUS, 1);
        if (!dev) {
                pr_err("alloc_netdev_mqs(%s) failed\n", name);
                return;
 
         * tile_net_setup(), and saves "name".  Normally, "name" is a
         * template, instantiated by register_netdev(), but not for us.
         */
-       dev = alloc_netdev(sizeof(*priv), name, tile_net_setup);
+       dev = alloc_netdev(sizeof(*priv), name, NET_NAME_UNKNOWN,
+                          tile_net_setup);
        if (!dev) {
                pr_err("alloc_netdev(%s) failed\n", name);
                return NULL;
 
        if (tty->ops->write == NULL)
                return -EOPNOTSUPP;
 
-       dev = alloc_netdev(sizeof(struct sixpack), "sp%d", sp_setup);
+       dev = alloc_netdev(sizeof(struct sixpack), "sp%d", NET_NAME_UNKNOWN,
+                          sp_setup);
        if (!dev) {
                err = -ENOMEM;
                goto out;
 
                struct net_device *dev;
                
                dev = alloc_netdev(sizeof(struct baycom_state), "bce%d",
-                                  baycom_epp_dev_setup);
+                                  NET_NAME_UNKNOWN, baycom_epp_dev_setup);
 
                if (!dev) {
                        printk(KERN_WARNING "bce%d : out of memory\n", i);
 
        struct net_device *ndev;
        struct bpqdev *bpq;
 
-       ndev = alloc_netdev(sizeof(struct bpqdev), "bpq%d",
-                          bpq_setup);
+       ndev = alloc_netdev(sizeof(struct bpqdev), "bpq%d", NET_NAME_UNKNOWN,
+                           bpq_setup);
        if (!ndev)
                return -ENOMEM;
 
 
        if (!info)
                goto out;
 
-       info->dev[0] = alloc_netdev(0, "", dev_setup);
+       info->dev[0] = alloc_netdev(0, "", NET_NAME_UNKNOWN, dev_setup);
        if (!info->dev[0]) {
                printk(KERN_ERR "dmascc: "
                       "could not allocate memory for %s at %#3x\n",
                goto out1;
        }
 
-       info->dev[1] = alloc_netdev(0, "", dev_setup);
+       info->dev[1] = alloc_netdev(0, "", NET_NAME_UNKNOWN, dev_setup);
        if (!info->dev[1]) {
                printk(KERN_ERR "dmascc: "
                       "could not allocate memory for %s at %#3x\n",
 
        if (privsize < sizeof(struct hdlcdrv_state))
                privsize = sizeof(struct hdlcdrv_state);
 
-       dev = alloc_netdev(privsize, ifname, hdlcdrv_setup);
+       dev = alloc_netdev(privsize, ifname, NET_NAME_UNKNOWN, hdlcdrv_setup);
        if (!dev)
                return ERR_PTR(-ENOMEM);
 
 
        if (tty->ops->write == NULL)
                return -EOPNOTSUPP;
 
-       dev = alloc_netdev(sizeof(struct mkiss), "ax%d", ax_setup);
+       dev = alloc_netdev(sizeof(struct mkiss), "ax%d", NET_NAME_UNKNOWN,
+                          ax_setup);
        if (!dev) {
                err = -ENOMEM;
                goto out;
 
        int err;
        struct net_device *dev;
 
-       dev = alloc_netdev(0, name, scc_net_setup);
+       dev = alloc_netdev(0, name, NET_NAME_UNKNOWN, scc_net_setup);
        if (!dev) 
                return -ENOMEM;
 
 
                sprintf(name, "yam%d", i);
                
                dev = alloc_netdev(sizeof(struct yam_port), name,
-                                  yam_setup);
+                                  NET_NAME_UNKNOWN, yam_setup);
                if (!dev) {
                        pr_err("yam: cannot allocate net device\n");
                        err = -ENOMEM;
 
        if (!phy)
                return -ENOMEM;
 
-       dev = alloc_netdev(sizeof(struct fakehard_priv), "hardwpan%d", ieee802154_fake_setup);
+       dev = alloc_netdev(sizeof(struct fakehard_priv), "hardwpan%d",
+                          NET_NAME_UNKNOWN, ieee802154_fake_setup);
        if (!dev) {
                wpan_phy_free(phy);
                return -ENOMEM;
 
        struct ifb_private *dp;
        int err;
 
-       dev_ifb = alloc_netdev(sizeof(struct ifb_private),
-                                "ifb%d", ifb_setup);
+       dev_ifb = alloc_netdev(sizeof(struct ifb_private), "ifb%d",
+                              NET_NAME_UNKNOWN, ifb_setup);
 
        if (!dev_ifb)
                return -ENOMEM;
 
        int err;
 
        err = -ENOMEM;
-       dev = alloc_netdev(0, "lo", loopback_setup);
+       dev = alloc_netdev(0, "lo", NET_NAME_UNKNOWN, loopback_setup);
        if (!dev)
                goto out;
 
 
        int ret = -ENOMEM;
        int i;
 
-       dev = alloc_netdev(sizeof(struct ppp), "", ppp_setup);
+       dev = alloc_netdev(sizeof(struct ppp), "", NET_NAME_UNKNOWN,
+                          ppp_setup);
        if (!dev)
                goto out1;
 
 
                return NULL;
 
        sprintf(name, "sl%d", i);
-       dev = alloc_netdev(sizeof(*sl), name, sl_setup);
+       dev = alloc_netdev(sizeof(*sl), name, NET_NAME_UNKNOWN, sl_setup);
        if (!dev)
                return NULL;
 
 
                        name = ifr->ifr_name;
 
                dev = alloc_netdev_mqs(sizeof(struct tun_struct), name,
-                                      tun_setup, queues, queues);
+                                      NET_NAME_UNKNOWN, tun_setup, queues,
+                                      queues);
 
                if (!dev)
                        return -ENOMEM;
 
                return -EINVAL;
 
        dev = alloc_netdev(sizeof(*pnd) + sizeof(pnd->urbs[0]) * rxq_size,
-                               ifname, usbpn_setup);
+                          ifname, NET_NAME_UNKNOWN, usbpn_setup);
        if (!dev)
                return -ENOMEM;
 
 
 
        /* allocate our network device, then we can put in our private data */
        /* call hso_net_init to do the basic initialization */
-       net = alloc_netdev(sizeof(struct hso_net), "hso%d", hso_net_init);
+       net = alloc_netdev(sizeof(struct hso_net), "hso%d", NET_NAME_UNKNOWN,
+                          hso_net_init);
        if (!net) {
                dev_err(&interface->dev, "Unable to create ethernet device\n");
                goto exit;
 
                goto err1;
 
        /* create device name */
-       master = alloc_netdev( sizeof(struct dlci_local), "dlci%d",
-                             dlci_setup);
+       master = alloc_netdev(sizeof(struct dlci_local), "dlci%d",
+                             NET_NAME_UNKNOWN, dlci_setup);
        if (!master) {
                err = -ENOMEM;
                goto err1;
 
 struct net_device *alloc_hdlcdev(void *priv)
 {
        struct net_device *dev;
-       dev = alloc_netdev(sizeof(struct hdlc_device), "hdlc%d", hdlc_setup);
+       dev = alloc_netdev(sizeof(struct hdlc_device), "hdlc%d",
+                          NET_NAME_UNKNOWN, hdlc_setup);
        if (dev)
                dev_to_hdlc(dev)->priv = priv;
        return dev;
 
        used = pvc_is_used(pvc);
 
        if (type == ARPHRD_ETHER) {
-               dev = alloc_netdev(0, "pvceth%d", ether_setup);
+               dev = alloc_netdev(0, "pvceth%d", NET_NAME_UNKNOWN,
+                                  ether_setup);
                dev->priv_flags &= ~IFF_TX_SKB_SHARING;
        } else
-               dev = alloc_netdev(0, "pvc%d", pvc_setup);
+               dev = alloc_netdev(0, "pvc%d", NET_NAME_UNKNOWN, pvc_setup);
 
        if (!dev) {
                netdev_warn(frad, "Memory squeeze on fr_pvc()\n");
 
 
        ASSERT_RTNL();
 
-       ndev = alloc_netdev(sizeof(*lapbeth), "lapb%d", 
-                          lapbeth_setup);
+       ndev = alloc_netdev(sizeof(*lapbeth), "lapb%d", NET_NAME_UNKNOWN,
+                           lapbeth_setup);
        if (!ndev)
                goto out;
 
 
        struct net_device *dev;
        int err;
 
-       dev = alloc_netdev(sizeof(struct net_local), "sbni", sbni_devsetup);
+       dev = alloc_netdev(sizeof(struct net_local), "sbni",
+                          NET_NAME_UNKNOWN, sbni_devsetup);
        if (!dev)
                return -ENOMEM;
 
        int err;
 
        while( num < SBNI_MAX_NUM_CARDS ) {
-               dev = alloc_netdev(sizeof(struct net_local), 
-                                  "sbni%d", sbni_devsetup);
+               dev = alloc_netdev(sizeof(struct net_local), "sbni%d",
+                                  NET_NAME_UNKNOWN, sbni_devsetup);
                if( !dev)
                        break;
 
 
 
        printk("%s.\n", version);
 
-       sdla = alloc_netdev(sizeof(struct frad_local), "sdla0", setup_sdla);
+       sdla = alloc_netdev(sizeof(struct frad_local), "sdla0",
+                           NET_NAME_UNKNOWN, setup_sdla);
        if (!sdla) 
                return -ENOMEM;
 
 
                char name[IFNAMSIZ];
                sprintf(name, "x25asy%d", i);
 
-               dev = alloc_netdev(sizeof(struct x25_asy),
-                                  name, x25_asy_setup);
+               dev = alloc_netdev(sizeof(struct x25_asy), name,
+                                  NET_NAME_UNKNOWN, x25_asy_setup);
                if (!dev)
                        return NULL;
 
 
 
        /* Allocate instance [calls i2400m_netdev_setup() on it]. */
        result = -ENOMEM;
-       net_dev = alloc_netdev(sizeof(*i2400mu), "wmx%d",
+       net_dev = alloc_netdev(sizeof(*i2400mu), "wmx%d", NET_NAME_UNKNOWN,
                               i2400mu_netdev_setup);
        if (net_dev == NULL) {
                dev_err(dev, "no memory for network device instance\n");
 
                                        struct net_device *ethdev)
 {
        int err;
-       struct net_device *dev = alloc_netdev(0, "wifi%d", wifi_setup);
+       struct net_device *dev = alloc_netdev(0, "wifi%d", NET_NAME_UNKNOWN,
+                                             wifi_setup);
        if (!dev)
                return NULL;
        dev->ml_priv = ethdev->ml_priv;
        CapabilityRid cap_rid;
 
        /* Create the network device object. */
-       dev = alloc_netdev(sizeof(*ai), "", ether_setup);
+       dev = alloc_netdev(sizeof(*ai), "", NET_NAME_UNKNOWN, ether_setup);
        if (!dev) {
                airo_print_err("", "Couldn't alloc_etherdev");
                return NULL;
 
        struct net_device *ndev;
        struct ath6kl_vif *vif;
 
-       ndev = alloc_netdev(sizeof(*vif), name, ether_setup);
+       ndev = alloc_netdev(sizeof(*vif), name, NET_NAME_UNKNOWN, ether_setup);
        if (!ndev)
                return NULL;
 
 
        ch = wdev->wiphy->bands[IEEE80211_BAND_60GHZ]->channels;
        cfg80211_chandef_create(&wdev->preset_chandef, ch, NL80211_CHAN_NO_HT);
 
-       ndev = alloc_netdev(0, "wlan%d", ether_setup);
+       ndev = alloc_netdev(0, "wlan%d", NET_NAME_UNKNOWN, ether_setup);
        if (!ndev) {
                dev_err(dev, "alloc_netdev_mqs failed\n");
                rc = -ENOMEM;
 
        } else {
                brcmf_dbg(INFO, "allocate netdev interface\n");
                /* Allocate netdev, including space for private structure */
-               ndev = alloc_netdev(sizeof(*ifp), name, ether_setup);
+               ndev = alloc_netdev(sizeof(*ifp), name, NET_NAME_UNKNOWN,
+                                   ether_setup);
                if (!ndev)
                        return ERR_PTR(-ENOMEM);
 
 
                goto err_wdev;
        }
 
-       dev = alloc_netdev(0, "wlan%d", ether_setup);
+       dev = alloc_netdev(0, "wlan%d", NET_NAME_UNKNOWN, ether_setup);
        if (!dev) {
                dev_err(dmdev, "no memory for network device instance\n");
                goto err_adapter;
 
                goto done;
        }
 
-       mesh_dev = alloc_netdev(0, "msh%d", ether_setup);
+       mesh_dev = alloc_netdev(0, "msh%d", NET_NAME_UNKNOWN, ether_setup);
        if (!mesh_dev) {
                lbs_deb_mesh("init mshX device failed\n");
                ret = -ENOMEM;
 
                        goto out_free_radios;
        }
 
-       hwsim_mon = alloc_netdev(0, "hwsim%d", hwsim_mon_setup);
+       hwsim_mon = alloc_netdev(0, "hwsim%d", NET_NAME_UNKNOWN,
+                                hwsim_mon_setup);
        if (hwsim_mon == NULL) {
                err = -ENOMEM;
                goto out_free_radios;
 
        }
 
        dev = alloc_netdev_mqs(sizeof(struct mwifiex_private *), name,
-                              ether_setup, IEEE80211_NUM_ACS, 1);
+                              NET_NAME_UNKNOWN, ether_setup,
+                              IEEE80211_NUM_ACS, 1);
        if (!dev) {
                wiphy_err(wiphy, "no memory available for netdevice\n");
                priv->bss_mode = NL80211_IFTYPE_UNSPECIFIED;
 
         * When the guest selects the desired number, it will be updated
         * via netif_set_real_num_*_queues().
         */
-       dev = alloc_netdev_mq(sizeof(struct xenvif), name, ether_setup,
-                             xenvif_max_queues);
+       dev = alloc_netdev_mq(sizeof(struct xenvif), name, NET_NAME_UNKNOWN,
+                             ether_setup, xenvif_max_queues);
        if (dev == NULL) {
                pr_warn("Could not allocate netdev for %s\n", name);
                return ERR_PTR(-ENOMEM);
 
                        "failed with error code %d\n", ret);
                goto out;
        }
-       dev = alloc_netdev(0,"claw%d",claw_init_netdevice);
+       dev = alloc_netdev(0, "claw%d", NET_NAME_UNKNOWN, claw_init_netdevice);
        if (!dev) {
                dev_warn(&cgdev->dev,
                        "Activating the CLAW device failed\n");
 
                return NULL;
 
        if (IS_MPC(priv))
-               dev = alloc_netdev(0, MPC_DEVICE_GENE, ctcm_dev_setup);
+               dev = alloc_netdev(0, MPC_DEVICE_GENE, NET_NAME_UNKNOWN,
+                                  ctcm_dev_setup);
        else
-               dev = alloc_netdev(0, CTC_DEVICE_GENE, ctcm_dev_setup);
+               dev = alloc_netdev(0, CTC_DEVICE_GENE, NET_NAME_UNKNOWN,
+                                  ctcm_dev_setup);
 
        if (!dev) {
                CTCM_DBF_TEXT_(ERROR, CTC_DBF_CRIT,
 
        struct net_device *dev;
 
        dev = alloc_netdev(sizeof(struct netiucv_priv), "iucv%d",
-                          netiucv_setup_netdevice);
+                          NET_NAME_UNKNOWN, netiucv_setup_netdevice);
        if (!dev)
                return NULL;
        rtnl_lock();
 
 {
        switch (card->info.type) {
        case QETH_CARD_TYPE_IQD:
-               card->dev = alloc_netdev(0, "hsi%d", ether_setup);
+               card->dev = alloc_netdev(0, "hsi%d", NET_NAME_UNKNOWN,
+                                        ether_setup);
                break;
        case QETH_CARD_TYPE_OSN:
-               card->dev = alloc_netdev(0, "osn%d", ether_setup);
+               card->dev = alloc_netdev(0, "osn%d", NET_NAME_UNKNOWN,
+                                        ether_setup);
                card->dev->flags |= IFF_NOARP;
                break;
        default:
 
                        }
                }
        } else if (card->info.type == QETH_CARD_TYPE_IQD) {
-               card->dev = alloc_netdev(0, "hsi%d", ether_setup);
+               card->dev = alloc_netdev(0, "hsi%d", NET_NAME_UNKNOWN,
+                                        ether_setup);
                if (!card->dev)
                        return -ENODEV;
                card->dev->flags |= IFF_NOARP;
 
        struct net_device *ndev;
        ci_t       *ci;
 
-       ndev = alloc_netdev(sizeof(ci_t), SBE_IFACETMPL, c4_setup);
+       ndev = alloc_netdev(sizeof(ci_t), SBE_IFACETMPL, NET_NAME_UNKNOWN,
+                           c4_setup);
        if (!ndev) {
                pr_warning("%s: no memory for struct net_device !\n",
                           hi->devname);
 
 
                /* Allocate netdev */
                net = alloc_netdev(sizeof(struct nic), pdn_dev_name,
-                               ether_setup);
+                                  NET_NAME_UNKNOWN, ether_setup);
                if (net == NULL) {
                        pr_err("alloc_netdev failed\n");
                        ret = -ENOMEM;
 
        struct net_device *dev;
        int ret;
 
-       dev = alloc_netdev(sizeof(*nic), "wm%d", ether_setup);
+       dev = alloc_netdev(sizeof(*nic), "wm%d", NET_NAME_UNKNOWN,
+                          ether_setup);
 
        if (dev == NULL) {
                pr_err("alloc_etherdev failed\n");
 
        struct net_device *dev = pDevice->dev;
        int ret = 0;
 
-       pDevice->wpadev = alloc_netdev(sizeof(PSDevice), "vntwpa", wpadev_setup);
+       pDevice->wpadev = alloc_netdev(sizeof(PSDevice), "vntwpa",
+                                      NET_NAME_UNKNOWN, wpadev_setup);
        if (pDevice->wpadev == NULL)
                return -ENOMEM;
 
 
 
        /* Allocate and initialize the struct device */
        netdev = alloc_netdev(sizeof(struct wireless_dev), "wlan%d",
-                               ether_setup);
+                             NET_NAME_UNKNOWN, ether_setup);
        if (netdev == NULL) {
                dev_err(physdev, "Failed to alloc netdev.\n");
                wlan_free_wiphy(wiphy);
 
        netname = "gsm%d";
        if (nc->if_name[0] != '\0')
                netname = nc->if_name;
-       net = alloc_netdev(sizeof(struct gsm_mux_net),
-                       netname,
-                       gsm_mux_net_init);
+       net = alloc_netdev(sizeof(struct gsm_mux_net), netname,
+                          NET_NAME_UNKNOWN, gsm_mux_net_init);
        if (!net) {
                pr_err("alloc_netdev failed");
                return -ENOMEM;
 
        struct phonet_port *port;
 
        /* Create net device */
-       dev = alloc_netdev(sizeof(*port), "upnlink%d", pn_net_setup);
+       dev = alloc_netdev(sizeof(*port), "upnlink%d", NET_NAME_UNKNOWN,
+                          pn_net_setup);
        if (!dev)
                return ERR_PTR(-ENOMEM);
 
 
 
 /* Support for loadable net-drivers */
 struct net_device *alloc_netdev_mqs(int sizeof_priv, const char *name,
+                                   unsigned char name_assign_type,
                                    void (*setup)(struct net_device *),
                                    unsigned int txqs, unsigned int rxqs);
-#define alloc_netdev(sizeof_priv, name, setup) \
-       alloc_netdev_mqs(sizeof_priv, name, setup, 1, 1)
+#define alloc_netdev(sizeof_priv, name, name_assign_type, setup) \
+       alloc_netdev_mqs(sizeof_priv, name, name_assign_type, setup, 1, 1)
 
-#define alloc_netdev_mq(sizeof_priv, name, setup, count) \
-       alloc_netdev_mqs(sizeof_priv, name, setup, count, count)
+#define alloc_netdev_mq(sizeof_priv, name, name_assign_type, setup, count) \
+       alloc_netdev_mqs(sizeof_priv, name, name_assign_type, setup, count, \
+                        count)
 
 int register_netdev(struct net_device *dev);
 void unregister_netdev(struct net_device *dev);
 
  */
 struct net_device *alloc_fcdev(int sizeof_priv)
 {
-       return alloc_netdev(sizeof_priv, "fc%d", fc_setup);
+       return alloc_netdev(sizeof_priv, "fc%d", NET_NAME_UNKNOWN, fc_setup);
 }
 EXPORT_SYMBOL(alloc_fcdev);
 
  */
 struct net_device *alloc_fddidev(int sizeof_priv)
 {
-       return alloc_netdev(sizeof_priv, "fddi%d", fddi_setup);
+       return alloc_netdev(sizeof_priv, "fddi%d", NET_NAME_UNKNOWN,
+                           fddi_setup);
 }
 EXPORT_SYMBOL(alloc_fddidev);
 
 
 
 struct net_device *alloc_hippi_dev(int sizeof_priv)
 {
-       return alloc_netdev(sizeof_priv, "hip%d", hippi_setup);
+       return alloc_netdev(sizeof_priv, "hip%d", NET_NAME_UNKNOWN,
+                           hippi_setup);
 }
 
 EXPORT_SYMBOL(alloc_hippi_dev);
 
                snprintf(name, IFNAMSIZ, "vlan%.4i", vlan_id);
        }
 
-       new_dev = alloc_netdev(sizeof(struct vlan_dev_priv), name, vlan_setup);
+       new_dev = alloc_netdev(sizeof(struct vlan_dev_priv), name,
+                              NET_NAME_UNKNOWN, vlan_setup);
 
        if (new_dev == NULL)
                return -ENOBUFS;
 
 
 struct net_device *alloc_ltalkdev(int sizeof_priv)
 {
-       return alloc_netdev(sizeof_priv, "lt%d", ltalk_setup);
+       return alloc_netdev(sizeof_priv, "lt%d", NET_NAME_UNKNOWN,
+                           ltalk_setup);
 }
 EXPORT_SYMBOL(alloc_ltalkdev);
 
 
        netdev = alloc_netdev(sizeof(struct br2684_dev),
                              ni.ifname[0] ? ni.ifname : "nas%d",
-                             (payload == p_routed) ?
-                             br2684_setup_routed : br2684_setup);
+                             NET_NAME_UNKNOWN,
+                             (payload == p_routed) ? br2684_setup_routed : br2684_setup);
        if (!netdev)
                return -ENOMEM;
 
 
                        if (PRIV(dev)->number >= number)
                                number = PRIV(dev)->number + 1;
        }
-       dev = alloc_netdev(sizeof(struct clip_priv), "", clip_setup);
+       dev = alloc_netdev(sizeof(struct clip_priv), "", NET_NAME_UNKNOWN,
+                          clip_setup);
        if (!dev)
                return -ENOMEM;
        clip_priv = PRIV(dev);
 
        int ret;
 
        soft_iface = alloc_netdev(sizeof(struct batadv_priv), name,
-                                 batadv_softif_init_early);
+                                 NET_NAME_UNKNOWN, batadv_softif_init_early);
        if (!soft_iface)
                return NULL;
 
 
        unsigned long flags;
 
        netdev = alloc_netdev(sizeof(struct lowpan_dev), IFACE_NAME_TEMPLATE,
-                             netdev_setup);
+                             NET_NAME_UNKNOWN, netdev_setup);
        if (!netdev)
                return -ENOMEM;
 
 
 
        /* session struct allocated as private part of net_device */
        dev = alloc_netdev(sizeof(struct bnep_session),
-                               (*req->device) ? req->device : "bnep%d",
-                               bnep_net_setup);
+                          (*req->device) ? req->device : "bnep%d",
+                          NET_NAME_UNKNOWN,
+                          bnep_net_setup);
        if (!dev)
                return -ENOMEM;
 
 
        struct net_device *dev;
        int res;
 
-       dev = alloc_netdev(sizeof(struct net_bridge), name,
+       dev = alloc_netdev(sizeof(struct net_bridge), name, NET_NAME_UNKNOWN,
                           br_dev_setup);
 
        if (!dev)
 
 
 /**
  *     alloc_netdev_mqs - allocate network device
- *     @sizeof_priv:   size of private data to allocate space for
- *     @name:          device name format string
- *     @setup:         callback to initialize device
- *     @txqs:          the number of TX subqueues to allocate
- *     @rxqs:          the number of RX subqueues to allocate
+ *     @sizeof_priv:           size of private data to allocate space for
+ *     @name:                  device name format string
+ *     @name_assign_type:      origin of device name
+ *     @setup:                 callback to initialize device
+ *     @txqs:                  the number of TX subqueues to allocate
+ *     @rxqs:                  the number of RX subqueues to allocate
  *
  *     Allocates a struct net_device with private data area for driver use
  *     and performs basic initialization.  Also allocates subqueue structs
  *     for each queue on the device.
  */
 struct net_device *alloc_netdev_mqs(int sizeof_priv, const char *name,
+               unsigned char name_assign_type,
                void (*setup)(struct net_device *),
                unsigned int txqs, unsigned int rxqs)
 {
 #endif
 
        strcpy(dev->name, name);
+       dev->name_assign_type = name_assign_type;
        dev->group = INIT_NETDEV_GROUP;
        if (!dev->ethtool_ops)
                dev->ethtool_ops = &default_ethtool_ops;
 
                num_rx_queues = ops->get_num_rx_queues();
 
        err = -ENOMEM;
-       dev = alloc_netdev_mqs(ops->priv_size, ifname, ops->setup,
-                              num_tx_queues, num_rx_queues);
+       dev = alloc_netdev_mqs(ops->priv_size, ifname, NET_NAME_UNKNOWN,
+                              ops->setup, num_tx_queues, num_rx_queues);
        if (!dev)
                goto err;
 
 
        struct dsa_slave_priv *p;
        int ret;
 
-       slave_dev = alloc_netdev(sizeof(struct dsa_slave_priv),
-                                name, ether_setup);
+       slave_dev = alloc_netdev(sizeof(struct dsa_slave_priv), name,
+                                NET_NAME_UNKNOWN, ether_setup);
        if (slave_dev == NULL)
                return slave_dev;
 
 
 struct net_device *alloc_etherdev_mqs(int sizeof_priv, unsigned int txqs,
                                      unsigned int rxqs)
 {
-       return alloc_netdev_mqs(sizeof_priv, "eth%d", ether_setup, txqs, rxqs);
+       return alloc_netdev_mqs(sizeof_priv, "eth%d", NET_NAME_UNKNOWN,
+                               ether_setup, txqs, rxqs);
 }
 EXPORT_SYMBOL(alloc_etherdev_mqs);
 
 
        }
 
        ASSERT_RTNL();
-       dev = alloc_netdev(ops->priv_size, name, ops->setup);
+       dev = alloc_netdev(ops->priv_size, name, NET_NAME_UNKNOWN, ops->setup);
        if (!dev) {
                err = -ENOMEM;
                goto failed;
 
        else
                sprintf(name, "pimreg%u", mrt->id);
 
-       dev = alloc_netdev(0, name, reg_vif_setup);
+       dev = alloc_netdev(0, name, NET_NAME_UNKNOWN, reg_vif_setup);
 
        if (dev == NULL)
                return NULL;
 
        else
                strcpy(name, "ip6gre%d");
 
-       dev = alloc_netdev(sizeof(*t), name, ip6gre_tunnel_setup);
+       dev = alloc_netdev(sizeof(*t), name, NET_NAME_UNKNOWN,
+                          ip6gre_tunnel_setup);
        if (!dev)
                return NULL;
 
        int err;
 
        ign->fb_tunnel_dev = alloc_netdev(sizeof(struct ip6_tnl), "ip6gre0",
-                                          ip6gre_tunnel_setup);
+                                         NET_NAME_UNKNOWN,
+                                         ip6gre_tunnel_setup);
        if (!ign->fb_tunnel_dev) {
                err = -ENOMEM;
                goto err_alloc_dev;
 
        else
                sprintf(name, "ip6tnl%%d");
 
-       dev = alloc_netdev(sizeof (*t), name, ip6_tnl_dev_setup);
+       dev = alloc_netdev(sizeof(*t), name, NET_NAME_UNKNOWN,
+                          ip6_tnl_dev_setup);
        if (dev == NULL)
                goto failed;
 
 
        err = -ENOMEM;
        ip6n->fb_tnl_dev = alloc_netdev(sizeof(struct ip6_tnl), "ip6tnl0",
-                                     ip6_tnl_dev_setup);
+                                       NET_NAME_UNKNOWN, ip6_tnl_dev_setup);
 
        if (!ip6n->fb_tnl_dev)
                goto err_alloc_dev;
 
        else
                sprintf(name, "ip6_vti%%d");
 
-       dev = alloc_netdev(sizeof(*t), name, vti6_dev_setup);
+       dev = alloc_netdev(sizeof(*t), name, NET_NAME_UNKNOWN, vti6_dev_setup);
        if (dev == NULL)
                goto failed;
 
 
        err = -ENOMEM;
        ip6n->fb_tnl_dev = alloc_netdev(sizeof(struct ip6_tnl), "ip6_vti0",
-                                       vti6_dev_setup);
+                                       NET_NAME_UNKNOWN, vti6_dev_setup);
 
        if (!ip6n->fb_tnl_dev)
                goto err_alloc_dev;
 
        else
                sprintf(name, "pim6reg%u", mrt->id);
 
-       dev = alloc_netdev(0, name, reg_vif_setup);
+       dev = alloc_netdev(0, name, NET_NAME_UNKNOWN, reg_vif_setup);
        if (dev == NULL)
                return NULL;
 
 
        else
                strcpy(name, "sit%d");
 
-       dev = alloc_netdev(sizeof(*t), name, ipip6_tunnel_setup);
+       dev = alloc_netdev(sizeof(*t), name, NET_NAME_UNKNOWN,
+                          ipip6_tunnel_setup);
        if (dev == NULL)
                return NULL;
 
        sitn->tunnels[3] = sitn->tunnels_r_l;
 
        sitn->fb_tunnel_dev = alloc_netdev(sizeof(struct ip_tunnel), "sit0",
+                                          NET_NAME_UNKNOWN,
                                           ipip6_tunnel_setup);
        if (!sitn->fb_tunnel_dev) {
                err = -ENOMEM;
 
  */
 struct net_device *alloc_irdadev(int sizeof_priv)
 {
-       return alloc_netdev(sizeof_priv, "irda%d", irda_device_setup);
+       return alloc_netdev(sizeof_priv, "irda%d", NET_NAME_UNKNOWN,
+                           irda_device_setup);
 }
 EXPORT_SYMBOL(alloc_irdadev);
 
 
  */
 struct net_device *alloc_irlandev(const char *name)
 {
-       return alloc_netdev(sizeof(struct irlan_cb), name,
+       return alloc_netdev(sizeof(struct irlan_cb), name, NET_NAME_UNKNOWN,
                            irlan_eth_setup);
 }
 
 
                goto out;
        }
 
-       dev = alloc_netdev(sizeof(*priv), name, l2tp_eth_dev_setup);
+       dev = alloc_netdev(sizeof(*priv), name, NET_NAME_UNKNOWN,
+                          l2tp_eth_dev_setup);
        if (!dev) {
                rc = -ENOMEM;
                goto out_del_session;
 
                if (local->hw.queues >= IEEE80211_NUM_ACS)
                        txqs = IEEE80211_NUM_ACS;
 
-               ndev = alloc_netdev_mqs(sizeof(*sdata) +
-                                       local->hw.vif_data_size,
-                                       name, ieee80211_if_setup, txqs, 1);
+               ndev = alloc_netdev_mqs(sizeof(*sdata) + local->hw.vif_data_size,
+                                       name, NET_NAME_UNKNOWN,
+                                       ieee80211_if_setup, txqs, 1);
                if (!ndev)
                        return -ENOMEM;
                dev_net_set(ndev, wiphy_net(local->hw.wiphy));
 
        switch (type) {
        case IEEE802154_DEV_MONITOR:
                dev = alloc_netdev(sizeof(struct mac802154_sub_if_data),
-                                  name, mac802154_monitor_setup);
+                                  name, NET_NAME_UNKNOWN,
+                                  mac802154_monitor_setup);
                break;
        case IEEE802154_DEV_WPAN:
                dev = alloc_netdev(sizeof(struct mac802154_sub_if_data),
-                                  name, mac802154_wpan_setup);
+                                  name, NET_NAME_UNKNOWN,
+                                  mac802154_wpan_setup);
                break;
        default:
                dev = NULL;
 
                struct net_device *dev;
 
                sprintf(name, "nr%d", i);
-               dev = alloc_netdev(0, name, nr_setup);
+               dev = alloc_netdev(0, name, NET_NAME_UNKNOWN, nr_setup);
                if (!dev) {
                        printk(KERN_ERR "NET/ROM: nr_proto_init - unable to allocate device structure\n");
                        goto fail;
 
        netdev_vport = netdev_vport_priv(vport);
 
        netdev_vport->dev = alloc_netdev(sizeof(struct internal_dev),
-                                        parms->name, do_setup);
+                                        parms->name, NET_NAME_UNKNOWN,
+                                        do_setup);
        if (!netdev_vport->dev) {
                err = -ENOMEM;
                goto error_free_vport;
 
                return -EINVAL; /* need packet boundaries */
 
        /* Create net device */
-       dev = alloc_netdev(sizeof(*gp), ifname, gprs_setup);
+       dev = alloc_netdev(sizeof(*gp), ifname, NET_NAME_UNKNOWN, gprs_setup);
        if (!dev)
                return -ENOMEM;
        gp = netdev_priv(dev);
 
                char name[IFNAMSIZ];
 
                sprintf(name, "rose%d", i);
-               dev = alloc_netdev(0, name, rose_setup);
+               dev = alloc_netdev(0, name, NET_NAME_UNKNOWN, rose_setup);
                if (!dev) {
                        printk(KERN_ERR "ROSE: rose_proto_init - unable to allocate memory\n");
                        rc = -ENOMEM;
 
                struct net_device *dev;
                struct teql_master *master;
 
-               dev = alloc_netdev(sizeof(struct teql_master),
-                                 "teql%d", teql_master_setup);
+               dev = alloc_netdev(sizeof(struct teql_master), "teql%d",
+                                  NET_NAME_UNKNOWN, teql_master_setup);
                if (!dev) {
                        err = -ENOMEM;
                        break;