diff --git a/drivers/net/wan/c101.c b/drivers/net/wan/c101.c
index fed8f3b3649d82ea6fe61adada0e8dd604af24c2..8c7ad592a5c4590a207a22d70345c8034da380bb 100644
--- a/drivers/net/wan/c101.c
+++ b/drivers/net/wan/c101.c
@@ -363,7 +363,7 @@ static int __init c101_run(unsigned long irq, unsigned long winbase)
 	hdlc->xmit = sca_xmit;
 	card->settings.clock_type = CLOCK_EXT;
 
-	result = register_hdlc_device(hdlc);
+	result = register_hdlc_device(dev);
 	if (result) {
 		printk(KERN_WARNING "c101: unable to register hdlc device\n");
 		c101_destroy_card(card);
@@ -424,7 +424,7 @@ static void __exit c101_cleanup(void)
 	while (card) {
 		card_t *ptr = card;
 		card = card->next_card;
-		unregister_hdlc_device(dev_to_hdlc(port_to_dev(ptr)));
+		unregister_hdlc_device(port_to_dev(ptr));
 		c101_destroy_card(ptr);
 	}
 }
diff --git a/drivers/net/wan/dscc4.c b/drivers/net/wan/dscc4.c
index 1bb203f3423f693dbe178a29b26e99a624c38e79..7478c8287df87030b95a65b118744c0d270eaddf 100644
--- a/drivers/net/wan/dscc4.c
+++ b/drivers/net/wan/dscc4.c
@@ -694,7 +694,7 @@ static void dscc4_free1(struct pci_dev *pdev)
 	root = ppriv->root;
 
 	for (i = 0; i < dev_per_card; i++)
-		unregister_hdlc_device(&root[i].hdlc);
+		unregister_hdlc_device(dscc4_to_dev(&root[i]));
 
 	pci_set_drvdata(pdev, NULL);
 
@@ -910,7 +910,7 @@ static int dscc4_found1(struct pci_dev *pdev, unsigned long ioaddr)
 		hdlc->xmit = dscc4_start_xmit;
 		hdlc->attach = dscc4_hdlc_attach;
 
-		ret = register_hdlc_device(hdlc);
+		ret = register_hdlc_device(d);
 		if (ret < 0) {
 			printk(KERN_ERR "%s: unable to register\n", DRV_NAME);
 			goto err_unregister;
@@ -922,7 +922,7 @@ static int dscc4_found1(struct pci_dev *pdev, unsigned long ioaddr)
 
 		ret = dscc4_init_ring(d);
 		if (ret < 0) {
-			unregister_hdlc_device(hdlc);
+			unregister_hdlc_device(d);
 			goto err_unregister;
 		}
 	}
@@ -937,7 +937,7 @@ static int dscc4_found1(struct pci_dev *pdev, unsigned long ioaddr)
 err_unregister:
 	while (--i >= 0) {
 		dscc4_release_ring(root + i);
-		unregister_hdlc_device(&root[i].hdlc);
+		unregister_hdlc_device(dscc4_to_dev(&root[i]));
 	}
 	kfree(ppriv);
 err_free_dev:
diff --git a/drivers/net/wan/farsync.c b/drivers/net/wan/farsync.c
index 9edf36840a7476ed0db7a059250bc12bd238104c..120f43177efe37ab81f8a86017166dcbce279188 100644
--- a/drivers/net/wan/farsync.c
+++ b/drivers/net/wan/farsync.c
@@ -1491,7 +1491,7 @@ fst_init_card ( struct fst_card_info *card )
                 hdlc->attach = fst_attach;
                 hdlc->xmit   = fst_start_xmit;
 
-                if (( err = register_hdlc_device(dev_to_hdlc(dev))) < 0 )
+                if (( err = register_hdlc_device(dev)) < 0 )
                 {
                         printk_err ("Cannot register HDLC device for port %d"
                                     " (errno %d)\n", i, -err );
@@ -1657,7 +1657,7 @@ fst_remove_one ( struct pci_dev *pdev )
         for ( i = 0 ; i < card->nports ; i++ )
         {
 		struct net_device *dev = port_to_dev(&card->ports[i]);
-                unregister_hdlc_device(dev_to_hdlc(dev));
+                unregister_hdlc_device(dev);
         }
 
         fst_disable_intr ( card );
diff --git a/drivers/net/wan/hdlc_generic.c b/drivers/net/wan/hdlc_generic.c
index 805725b4b0c003e32a4c549005f4bfaabccb3e58..712365899ad5bb9dfd1d4c465f4f3075b3d070b5 100644
--- a/drivers/net/wan/hdlc_generic.c
+++ b/drivers/net/wan/hdlc_generic.c
@@ -228,10 +228,10 @@ int hdlc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 
 
 
-int register_hdlc_device(hdlc_device *hdlc)
+int register_hdlc_device(struct net_device *dev)
 {
 	int result;
-	struct net_device *dev = hdlc_to_dev(hdlc);
+	hdlc_device *hdlc = dev_to_hdlc(dev);
 
 	dev->get_stats = hdlc_get_stats;
 	dev->change_mtu = hdlc_change_mtu;
@@ -261,11 +261,11 @@ int register_hdlc_device(hdlc_device *hdlc)
 
 
 
-void unregister_hdlc_device(hdlc_device *hdlc)
+void unregister_hdlc_device(struct net_device *dev)
 {
 	rtnl_lock();
-	hdlc_proto_detach(hdlc);
-	unregister_netdevice(hdlc_to_dev(hdlc));
+	hdlc_proto_detach(dev_to_hdlc(dev));
+	unregister_netdevice(dev);
 	rtnl_unlock();
 }
 
diff --git a/drivers/net/wan/n2.c b/drivers/net/wan/n2.c
index c4119012f36dd94fc18243ad81c0122d4ea7024a..404443d153c0010ad414f1c7d9d69d534bef9681 100644
--- a/drivers/net/wan/n2.c
+++ b/drivers/net/wan/n2.c
@@ -311,7 +311,7 @@ static void n2_destroy_card(card_t *card)
 	for (cnt = 0; cnt < 2; cnt++)
 		if (card->ports[cnt].card) {
 			struct net_device *dev = port_to_dev(&card->ports[cnt]);
-			unregister_hdlc_device(dev_to_hdlc(dev));
+			unregister_hdlc_device(dev);
 		}
 
 	if (card->irq)
@@ -459,7 +459,7 @@ static int __init n2_run(unsigned long io, unsigned long irq,
 		hdlc->xmit = sca_xmit;
 		port->settings.clock_type = CLOCK_EXT;
 
-		if (register_hdlc_device(hdlc)) {
+		if (register_hdlc_device(dev)) {
 			printk(KERN_WARNING "n2: unable to register hdlc "
 			       "device\n");
 			n2_destroy_card(card);
diff --git a/drivers/net/wan/pc300_drv.c b/drivers/net/wan/pc300_drv.c
index 57b323eb6297484ff5c7455a066a6d3cc7c9acde..b4fbf228cf70f4f317a72346163eaed59ec2c1b7 100644
--- a/drivers/net/wan/pc300_drv.c
+++ b/drivers/net/wan/pc300_drv.c
@@ -3379,7 +3379,7 @@ static void cpc_init_card(pc300_t * card)
 		dev->change_mtu = cpc_change_mtu;
 		dev->do_ioctl = cpc_ioctl;
 
-		if (register_hdlc_device(hdlc) == 0) {
+		if (register_hdlc_device(dev) == 0) {
 			dev->priv = d;	/* We need 'priv', hdlc doesn't */
 			printk("%s: Cyclades-PC300/", dev->name);
 			switch (card->hw.type) {
@@ -3639,7 +3639,7 @@ static void __devexit cpc_remove_one(struct pci_dev *pdev)
 			   cpc_readw(card->hw.plxbase + card->hw.intctl_reg) & ~(0x0040));
 
 		for (i = 0; i < card->hw.nchan; i++) {
-			unregister_hdlc_device(dev_to_hdlc(card->chan[i].d.dev));
+			unregister_hdlc_device(card->chan[i].d.dev);
 		}
 		iounmap((void *) card->hw.plxbase);
 		iounmap((void *) card->hw.scabase);
diff --git a/drivers/net/wan/wanxl.c b/drivers/net/wan/wanxl.c
index 0e94e40dd2f23f8dd8079143e497fcbaca3a7b31..1e0a850d480c2c6e5b584cef012366f0f7ac6467 100644
--- a/drivers/net/wan/wanxl.c
+++ b/drivers/net/wan/wanxl.c
@@ -534,7 +534,7 @@ static void wanxl_pci_remove_one(struct pci_dev *pdev)
 	for (i = 0; i < 4; i++)
 		if (card->ports[i]) {
 			struct net_device *dev = port_to_dev(card->ports[i]);
-			unregister_hdlc_device(dev_to_hdlc(dev));
+			unregister_hdlc_device(dev);
 		}
 
 	wanxl_reset(card);
@@ -715,7 +715,7 @@ static int __devinit wanxl_pci_init_one(struct pci_dev *pdev,
 		dev->stop = wanxl_close;
 		hdlc->attach = wanxl_attach;
 		hdlc->xmit = wanxl_xmit;
-		if (register_hdlc_device(dev_to_hdlc(dev))) {
+		if (register_hdlc_device(dev)) {
 			printk(KERN_ERR "wanXL %s: unable to register hdlc"
 			       " device\n", card_name(pdev));
 			wanxl_pci_remove_one(pdev);
diff --git a/include/linux/hdlc.h b/include/linux/hdlc.h
index a9b7c3d153f44a85ce52a7c65e45044f7dd2a050..8a2ac90c9b0fd67662267fd42c43cca89978f1b8 100644
--- a/include/linux/hdlc.h
+++ b/include/linux/hdlc.h
@@ -185,8 +185,8 @@ int hdlc_x25_ioctl(struct net_device *dev, struct ifreq *ifr);
 int hdlc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd);
 
 /* Must be used by hardware driver on module startup/exit */
-int register_hdlc_device(hdlc_device *hdlc);
-void unregister_hdlc_device(hdlc_device *hdlc);
+int register_hdlc_device(struct net_device *dev);
+void unregister_hdlc_device(struct net_device *dev);
 
 
 static __inline__ struct net_device* hdlc_to_dev(hdlc_device *hdlc)