This patch updates pcmcia network drivers so that their class devices are linked to the correct physical device. Based on an patch by Adam Belay, but adapted to a different pcmcia driver model implementation. Signed-off-by: Dominik Brodowski Index: 2.6.10-rc3/drivers/net/pcmcia/3c574_cs.c =================================================================== --- 2.6.10-rc3.orig/drivers/net/pcmcia/3c574_cs.c 2004-12-13 15:07:52.210952049 +0100 +++ 2.6.10-rc3/drivers/net/pcmcia/3c574_cs.c 2004-12-13 15:14:08.985480137 +0100 @@ -519,6 +519,7 @@ link->state &= ~DEV_CONFIG_PENDING; link->dev = &lp->node; + SET_NETDEV_DEV(dev, &handle_to_dev(handle)); if (register_netdev(dev) != 0) { printk(KERN_NOTICE "3c574_cs: register_netdev() failed\n"); Index: 2.6.10-rc3/drivers/net/pcmcia/3c589_cs.c =================================================================== --- 2.6.10-rc3.orig/drivers/net/pcmcia/3c589_cs.c 2004-12-13 15:07:52.211951910 +0100 +++ 2.6.10-rc3/drivers/net/pcmcia/3c589_cs.c 2004-12-13 15:14:08.986479998 +0100 @@ -391,6 +391,7 @@ link->dev = &lp->node; link->state &= ~DEV_CONFIG_PENDING; + SET_NETDEV_DEV(dev, &handle_to_dev(handle)); if (register_netdev(dev) != 0) { printk(KERN_ERR "3c589_cs: register_netdev() failed\n"); Index: 2.6.10-rc3/drivers/net/pcmcia/axnet_cs.c =================================================================== --- 2.6.10-rc3.orig/drivers/net/pcmcia/axnet_cs.c 2004-12-13 15:07:52.212951771 +0100 +++ 2.6.10-rc3/drivers/net/pcmcia/axnet_cs.c 2004-12-13 15:14:08.988479719 +0100 @@ -458,6 +458,7 @@ info->phy_id = (i < 32) ? i : -1; link->dev = &info->node; link->state &= ~DEV_CONFIG_PENDING; + SET_NETDEV_DEV(dev, &handle_to_dev(handle)); if (register_netdev(dev) != 0) { printk(KERN_NOTICE "axnet_cs: register_netdev() failed\n"); Index: 2.6.10-rc3/drivers/net/pcmcia/com20020_cs.c =================================================================== --- 2.6.10-rc3.orig/drivers/net/pcmcia/com20020_cs.c 2004-12-13 15:07:52.231949127 +0100 +++ 2.6.10-rc3/drivers/net/pcmcia/com20020_cs.c 2004-12-13 15:14:08.989479580 +0100 @@ -394,6 +394,7 @@ link->dev = &info->node; link->state &= ~DEV_CONFIG_PENDING; + SET_NETDEV_DEV(dev, &handle_to_dev(handle)); i = com20020_found(dev, 0); /* calls register_netdev */ Index: 2.6.10-rc3/drivers/net/pcmcia/fmvj18x_cs.c =================================================================== --- 2.6.10-rc3.orig/drivers/net/pcmcia/fmvj18x_cs.c 2004-12-13 15:07:52.232948988 +0100 +++ 2.6.10-rc3/drivers/net/pcmcia/fmvj18x_cs.c 2004-12-13 15:14:08.990479441 +0100 @@ -591,6 +591,7 @@ lp->cardtype = cardtype; link->dev = &lp->node; link->state &= ~DEV_CONFIG_PENDING; + SET_NETDEV_DEV(dev, &handle_to_dev(handle)); if (register_netdev(dev) != 0) { printk(KERN_NOTICE "fmvj18x_cs: register_netdev() failed\n"); Index: 2.6.10-rc3/drivers/net/pcmcia/ibmtr_cs.c =================================================================== --- 2.6.10-rc3.orig/drivers/net/pcmcia/ibmtr_cs.c 2004-12-13 15:07:52.242947596 +0100 +++ 2.6.10-rc3/drivers/net/pcmcia/ibmtr_cs.c 2004-12-13 15:14:08.991479302 +0100 @@ -366,6 +366,7 @@ link->dev = &info->node; link->state &= ~DEV_CONFIG_PENDING; + SET_NETDEV_DEV(dev, &handle_to_dev(handle)); i = ibmtr_probe_card(dev); if (i != 0) { Index: 2.6.10-rc3/drivers/net/pcmcia/nmclan_cs.c =================================================================== --- 2.6.10-rc3.orig/drivers/net/pcmcia/nmclan_cs.c 2004-12-13 15:07:52.243947457 +0100 +++ 2.6.10-rc3/drivers/net/pcmcia/nmclan_cs.c 2004-12-13 15:14:08.992479163 +0100 @@ -775,6 +775,7 @@ link->dev = &lp->node; link->state &= ~DEV_CONFIG_PENDING; + SET_NETDEV_DEV(dev, &handle_to_dev(handle)); i = register_netdev(dev); if (i != 0) { Index: 2.6.10-rc3/drivers/net/pcmcia/pcnet_cs.c =================================================================== --- 2.6.10-rc3.orig/drivers/net/pcmcia/pcnet_cs.c 2004-12-13 15:07:52.244947318 +0100 +++ 2.6.10-rc3/drivers/net/pcmcia/pcnet_cs.c 2004-12-13 15:14:08.994478884 +0100 @@ -722,6 +722,7 @@ link->dev = &info->node; link->state &= ~DEV_CONFIG_PENDING; + SET_NETDEV_DEV(dev, &handle_to_dev(handle)); #ifdef CONFIG_NET_POLL_CONTROLLER dev->poll_controller = ei_poll; Index: 2.6.10-rc3/drivers/net/pcmcia/smc91c92_cs.c =================================================================== --- 2.6.10-rc3.orig/drivers/net/pcmcia/smc91c92_cs.c 2004-12-13 15:07:52.246947039 +0100 +++ 2.6.10-rc3/drivers/net/pcmcia/smc91c92_cs.c 2004-12-13 15:14:08.995478745 +0100 @@ -1024,6 +1024,7 @@ link->dev = &smc->node; link->state &= ~DEV_CONFIG_PENDING; + SET_NETDEV_DEV(dev, &handle_to_dev(handle)); if (register_netdev(dev) != 0) { printk(KERN_ERR "smc91c92_cs: register_netdev() failed\n"); Index: 2.6.10-rc3/drivers/net/pcmcia/xirc2ps_cs.c =================================================================== --- 2.6.10-rc3.orig/drivers/net/pcmcia/xirc2ps_cs.c 2004-12-13 15:07:52.248946761 +0100 +++ 2.6.10-rc3/drivers/net/pcmcia/xirc2ps_cs.c 2004-12-13 15:14:08.997478467 +0100 @@ -1121,6 +1121,7 @@ link->dev = &local->node; link->state &= ~DEV_CONFIG_PENDING; + SET_NETDEV_DEV(dev, &handle_to_dev(handle)); if ((err=register_netdev(dev))) { printk(KNOT_XIRC "register_netdev() failed\n"); Index: 2.6.10-rc3/include/pcmcia/ds.h =================================================================== --- 2.6.10-rc3.orig/include/pcmcia/ds.h 2004-12-13 15:08:46.596383096 +0100 +++ 2.6.10-rc3/include/pcmcia/ds.h 2004-12-13 15:14:08.998478328 +0100 @@ -178,6 +178,7 @@ #define to_pcmcia_drv(n) container_of(n, struct pcmcia_driver, drv) #define handle_to_pdev(handle) container_of(handle, struct pcmcia_device, client); +#define handle_to_dev(handle) ((container_of(handle, struct pcmcia_device, client))->dev) /* error reporting */ void cs_error(client_handle_t handle, int func, int ret);