diff options
author | Dominik Brodowski <linux@dominikbrodowski.net> | 2010-03-20 14:39:26 -0400 |
---|---|---|
committer | Dominik Brodowski <linux@dominikbrodowski.net> | 2010-05-10 04:23:16 -0400 |
commit | c7c2fa079073ab92b0736a161b4cf1051a3e631f (patch) | |
tree | c23bb2e89f68601e5c37a1a0df9e83c9e71f9dd6 /drivers/net/wireless | |
parent | ded6a1a341cb38c4cfeb09d3d01ffe16b5c804b3 (diff) |
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>
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r-- | drivers/net/wireless/orinoco/orinoco_cs.c | 14 | ||||
-rw-r--r-- | drivers/net/wireless/orinoco/spectrum_cs.c | 14 | ||||
-rw-r--r-- | drivers/net/wireless/ray_cs.c | 6 | ||||
-rw-r--r-- | drivers/net/wireless/ray_cs.h | 1 | ||||
-rw-r--r-- | drivers/net/wireless/wl3501.h | 1 | ||||
-rw-r--r-- | drivers/net/wireless/wl3501_cs.c | 15 |
6 files changed, 6 insertions, 45 deletions
diff --git a/drivers/net/wireless/orinoco/orinoco_cs.c b/drivers/net/wireless/orinoco/orinoco_cs.c index 5d29b11fdbc0..03056ab73032 100644 --- a/drivers/net/wireless/orinoco/orinoco_cs.c +++ b/drivers/net/wireless/orinoco/orinoco_cs.c | |||
@@ -50,7 +50,6 @@ MODULE_PARM_DESC(ignore_cis_vcc, "Allow voltage mismatch between card and socket | |||
50 | * struct orinoco_private */ | 50 | * struct orinoco_private */ |
51 | struct orinoco_pccard { | 51 | struct orinoco_pccard { |
52 | struct pcmcia_device *p_dev; | 52 | struct pcmcia_device *p_dev; |
53 | dev_node_t node; | ||
54 | 53 | ||
55 | /* Used to handle hard reset */ | 54 | /* Used to handle hard reset */ |
56 | /* yuck, we need this hack to work around the insanity of the | 55 | /* yuck, we need this hack to work around the insanity of the |
@@ -140,8 +139,7 @@ static void orinoco_cs_detach(struct pcmcia_device *link) | |||
140 | { | 139 | { |
141 | struct orinoco_private *priv = link->priv; | 140 | struct orinoco_private *priv = link->priv; |
142 | 141 | ||
143 | if (link->dev_node) | 142 | orinoco_if_del(priv); |
144 | orinoco_if_del(priv); | ||
145 | 143 | ||
146 | orinoco_cs_release(link); | 144 | orinoco_cs_release(link); |
147 | 145 | ||
@@ -226,7 +224,6 @@ static int | |||
226 | orinoco_cs_config(struct pcmcia_device *link) | 224 | orinoco_cs_config(struct pcmcia_device *link) |
227 | { | 225 | { |
228 | struct orinoco_private *priv = link->priv; | 226 | struct orinoco_private *priv = link->priv; |
229 | struct orinoco_pccard *card = priv->card; | ||
230 | hermes_t *hw = &priv->hw; | 227 | hermes_t *hw = &priv->hw; |
231 | int ret; | 228 | int ret; |
232 | void __iomem *mem; | 229 | void __iomem *mem; |
@@ -276,9 +273,6 @@ orinoco_cs_config(struct pcmcia_device *link) | |||
276 | if (ret) | 273 | if (ret) |
277 | goto failed; | 274 | goto failed; |
278 | 275 | ||
279 | /* Ok, we have the configuration, prepare to register the netdev */ | ||
280 | card->node.major = card->node.minor = 0; | ||
281 | |||
282 | /* Initialise the main driver */ | 276 | /* Initialise the main driver */ |
283 | if (orinoco_init(priv) != 0) { | 277 | if (orinoco_init(priv) != 0) { |
284 | printk(KERN_ERR PFX "orinoco_init() failed\n"); | 278 | printk(KERN_ERR PFX "orinoco_init() failed\n"); |
@@ -292,12 +286,6 @@ orinoco_cs_config(struct pcmcia_device *link) | |||
292 | goto failed; | 286 | goto failed; |
293 | } | 287 | } |
294 | 288 | ||
295 | /* At this point, the dev_node_t structure(s) needs to be | ||
296 | * initialized and arranged in a linked list at link->dev_node. */ | ||
297 | strcpy(card->node.dev_name, priv->ndev->name); | ||
298 | link->dev_node = &card->node; /* link->dev_node being non-NULL is also | ||
299 | * used to indicate that the | ||
300 | * net_device has been registered */ | ||
301 | return 0; | 289 | return 0; |
302 | 290 | ||
303 | failed: | 291 | failed: |
diff --git a/drivers/net/wireless/orinoco/spectrum_cs.c b/drivers/net/wireless/orinoco/spectrum_cs.c index 7a8e056cd62d..41b9ce425855 100644 --- a/drivers/net/wireless/orinoco/spectrum_cs.c +++ b/drivers/net/wireless/orinoco/spectrum_cs.c | |||
@@ -57,7 +57,6 @@ MODULE_PARM_DESC(ignore_cis_vcc, "Allow voltage mismatch between card and socket | |||
57 | * struct orinoco_private */ | 57 | * struct orinoco_private */ |
58 | struct orinoco_pccard { | 58 | struct orinoco_pccard { |
59 | struct pcmcia_device *p_dev; | 59 | struct pcmcia_device *p_dev; |
60 | dev_node_t node; | ||
61 | }; | 60 | }; |
62 | 61 | ||
63 | /********************************************************************/ | 62 | /********************************************************************/ |
@@ -214,8 +213,7 @@ static void spectrum_cs_detach(struct pcmcia_device *link) | |||
214 | { | 213 | { |
215 | struct orinoco_private *priv = link->priv; | 214 | struct orinoco_private *priv = link->priv; |
216 | 215 | ||
217 | if (link->dev_node) | 216 | orinoco_if_del(priv); |
218 | orinoco_if_del(priv); | ||
219 | 217 | ||
220 | spectrum_cs_release(link); | 218 | spectrum_cs_release(link); |
221 | 219 | ||
@@ -300,7 +298,6 @@ static int | |||
300 | spectrum_cs_config(struct pcmcia_device *link) | 298 | spectrum_cs_config(struct pcmcia_device *link) |
301 | { | 299 | { |
302 | struct orinoco_private *priv = link->priv; | 300 | struct orinoco_private *priv = link->priv; |
303 | struct orinoco_pccard *card = priv->card; | ||
304 | hermes_t *hw = &priv->hw; | 301 | hermes_t *hw = &priv->hw; |
305 | int ret; | 302 | int ret; |
306 | void __iomem *mem; | 303 | void __iomem *mem; |
@@ -350,9 +347,6 @@ spectrum_cs_config(struct pcmcia_device *link) | |||
350 | if (ret) | 347 | if (ret) |
351 | goto failed; | 348 | goto failed; |
352 | 349 | ||
353 | /* Ok, we have the configuration, prepare to register the netdev */ | ||
354 | card->node.major = card->node.minor = 0; | ||
355 | |||
356 | /* Reset card */ | 350 | /* Reset card */ |
357 | if (spectrum_cs_hard_reset(priv) != 0) | 351 | if (spectrum_cs_hard_reset(priv) != 0) |
358 | goto failed; | 352 | goto failed; |
@@ -370,12 +364,6 @@ spectrum_cs_config(struct pcmcia_device *link) | |||
370 | goto failed; | 364 | goto failed; |
371 | } | 365 | } |
372 | 366 | ||
373 | /* At this point, the dev_node_t structure(s) needs to be | ||
374 | * initialized and arranged in a linked list at link->dev_node. */ | ||
375 | strcpy(card->node.dev_name, priv->ndev->name); | ||
376 | link->dev_node = &card->node; /* link->dev_node being non-NULL is also | ||
377 | * used to indicate that the | ||
378 | * net_device has been registered */ | ||
379 | return 0; | 367 | return 0; |
380 | 368 | ||
381 | failed: | 369 | failed: |
diff --git a/drivers/net/wireless/ray_cs.c b/drivers/net/wireless/ray_cs.c index fe4642a49bfb..18a93f1adcc4 100644 --- a/drivers/net/wireless/ray_cs.c +++ b/drivers/net/wireless/ray_cs.c | |||
@@ -379,8 +379,7 @@ static void ray_detach(struct pcmcia_device *link) | |||
379 | del_timer(&local->timer); | 379 | del_timer(&local->timer); |
380 | 380 | ||
381 | if (link->priv) { | 381 | if (link->priv) { |
382 | if (link->dev_node) | 382 | unregister_netdev(dev); |
383 | unregister_netdev(dev); | ||
384 | free_netdev(dev); | 383 | free_netdev(dev); |
385 | } | 384 | } |
386 | dev_dbg(&link->dev, "ray_cs ray_detach ending\n"); | 385 | dev_dbg(&link->dev, "ray_cs ray_detach ending\n"); |
@@ -489,9 +488,6 @@ static int ray_config(struct pcmcia_device *link) | |||
489 | return i; | 488 | return i; |
490 | } | 489 | } |
491 | 490 | ||
492 | strcpy(local->node.dev_name, dev->name); | ||
493 | link->dev_node = &local->node; | ||
494 | |||
495 | printk(KERN_INFO "%s: RayLink, irq %d, hw_addr %pM\n", | 491 | printk(KERN_INFO "%s: RayLink, irq %d, hw_addr %pM\n", |
496 | dev->name, dev->irq, dev->dev_addr); | 492 | dev->name, dev->irq, dev->dev_addr); |
497 | 493 | ||
diff --git a/drivers/net/wireless/ray_cs.h b/drivers/net/wireless/ray_cs.h index 1e23b7f4cca7..9f01ddb19748 100644 --- a/drivers/net/wireless/ray_cs.h +++ b/drivers/net/wireless/ray_cs.h | |||
@@ -25,7 +25,6 @@ struct beacon_rx { | |||
25 | typedef struct ray_dev_t { | 25 | typedef struct ray_dev_t { |
26 | int card_status; | 26 | int card_status; |
27 | int authentication_state; | 27 | int authentication_state; |
28 | dev_node_t node; | ||
29 | window_handle_t amem_handle; /* handle to window for attribute memory */ | 28 | window_handle_t amem_handle; /* handle to window for attribute memory */ |
30 | window_handle_t rmem_handle; /* handle to window for rx buffer on card */ | 29 | window_handle_t rmem_handle; /* handle to window for rx buffer on card */ |
31 | void __iomem *sram; /* pointer to beginning of shared RAM */ | 30 | void __iomem *sram; /* pointer to beginning of shared RAM */ |
diff --git a/drivers/net/wireless/wl3501.h b/drivers/net/wireless/wl3501.h index 8bce1a550a22..8816e371fd0e 100644 --- a/drivers/net/wireless/wl3501.h +++ b/drivers/net/wireless/wl3501.h | |||
@@ -610,7 +610,6 @@ struct wl3501_card { | |||
610 | struct iw_statistics wstats; | 610 | struct iw_statistics wstats; |
611 | struct iw_spy_data spy_data; | 611 | struct iw_spy_data spy_data; |
612 | struct iw_public_data wireless_data; | 612 | struct iw_public_data wireless_data; |
613 | struct dev_node_t node; | ||
614 | struct pcmcia_device *p_dev; | 613 | struct pcmcia_device *p_dev; |
615 | }; | 614 | }; |
616 | #endif | 615 | #endif |
diff --git a/drivers/net/wireless/wl3501_cs.c b/drivers/net/wireless/wl3501_cs.c index c43f05b98c4e..5e5d24c1ce2b 100644 --- a/drivers/net/wireless/wl3501_cs.c +++ b/drivers/net/wireless/wl3501_cs.c | |||
@@ -1451,6 +1451,8 @@ static void wl3501_detach(struct pcmcia_device *link) | |||
1451 | netif_device_detach(dev); | 1451 | netif_device_detach(dev); |
1452 | wl3501_release(link); | 1452 | wl3501_release(link); |
1453 | 1453 | ||
1454 | unregister_netdev(dev); | ||
1455 | |||
1454 | if (link->priv) | 1456 | if (link->priv) |
1455 | free_netdev(link->priv); | 1457 | free_netdev(link->priv); |
1456 | 1458 | ||
@@ -1977,20 +1979,15 @@ static int wl3501_config(struct pcmcia_device *link) | |||
1977 | } | 1979 | } |
1978 | 1980 | ||
1979 | this = netdev_priv(dev); | 1981 | this = netdev_priv(dev); |
1980 | /* | ||
1981 | * At this point, the dev_node_t structure(s) should be initialized and | ||
1982 | * arranged in a linked list at link->dev_node. | ||
1983 | */ | ||
1984 | link->dev_node = &this->node; | ||
1985 | 1982 | ||
1986 | this->base_addr = dev->base_addr; | 1983 | this->base_addr = dev->base_addr; |
1987 | 1984 | ||
1988 | if (!wl3501_get_flash_mac_addr(this)) { | 1985 | if (!wl3501_get_flash_mac_addr(this)) { |
1989 | printk(KERN_WARNING "%s: Cant read MAC addr in flash ROM?\n", | 1986 | printk(KERN_WARNING "%s: Cant read MAC addr in flash ROM?\n", |
1990 | dev->name); | 1987 | dev->name); |
1988 | unregister_netdev(dev); | ||
1991 | goto failed; | 1989 | goto failed; |
1992 | } | 1990 | } |
1993 | strcpy(this->node.dev_name, dev->name); | ||
1994 | 1991 | ||
1995 | for (i = 0; i < 6; i++) | 1992 | for (i = 0; i < 6; i++) |
1996 | dev->dev_addr[i] = ((char *)&this->mac_addr)[i]; | 1993 | dev->dev_addr[i] = ((char *)&this->mac_addr)[i]; |
@@ -2034,12 +2031,6 @@ failed: | |||
2034 | */ | 2031 | */ |
2035 | static void wl3501_release(struct pcmcia_device *link) | 2032 | static void wl3501_release(struct pcmcia_device *link) |
2036 | { | 2033 | { |
2037 | struct net_device *dev = link->priv; | ||
2038 | |||
2039 | /* Unlink the device chain */ | ||
2040 | if (link->dev_node) | ||
2041 | unregister_netdev(dev); | ||
2042 | |||
2043 | pcmcia_disable_device(link); | 2034 | pcmcia_disable_device(link); |
2044 | } | 2035 | } |
2045 | 2036 | ||