aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless
diff options
context:
space:
mode:
authorDominik Brodowski <linux@dominikbrodowski.net>2010-03-20 14:39:26 -0400
committerDominik Brodowski <linux@dominikbrodowski.net>2010-05-10 04:23:16 -0400
commitc7c2fa079073ab92b0736a161b4cf1051a3e631f (patch)
treec23bb2e89f68601e5c37a1a0df9e83c9e71f9dd6 /drivers/net/wireless
parentded6a1a341cb38c4cfeb09d3d01ffe16b5c804b3 (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.c14
-rw-r--r--drivers/net/wireless/orinoco/spectrum_cs.c14
-rw-r--r--drivers/net/wireless/ray_cs.c6
-rw-r--r--drivers/net/wireless/ray_cs.h1
-rw-r--r--drivers/net/wireless/wl3501.h1
-rw-r--r--drivers/net/wireless/wl3501_cs.c15
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 */
51struct orinoco_pccard { 51struct 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
226orinoco_cs_config(struct pcmcia_device *link) 224orinoco_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 */
58struct orinoco_pccard { 58struct 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
300spectrum_cs_config(struct pcmcia_device *link) 298spectrum_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 {
25typedef struct ray_dev_t { 25typedef 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 */
2035static void wl3501_release(struct pcmcia_device *link) 2032static 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