* [PATCH 1/6] rt2x00 - pci request/release regions
@ 2006-08-08 13:46 Ivo van Doorn
0 siblings, 0 replies; only message in thread
From: Ivo van Doorn @ 2006-08-08 13:46 UTC (permalink / raw)
To: netdev; +Cc: John W. Linville
According to Documentation/pci.txt in 2.6.18 pci_request_regions()
should be called _before_ pci_enable_device().
And pci_release_regions() should be called after pci_disable_device().
Signed-off-by Ivo van Doorn <IvDoorn@gmail.com>
---
diff -rU3 wireless-dev-rt2x00/drivers/net/wireless/d80211/rt2x00/rt2400pci.c wireless-dev-rt2x00-pci/drivers/net/wireless/d80211/rt2x00/rt2400pci.c
--- wireless-dev-rt2x00/drivers/net/wireless/d80211/rt2x00/rt2400pci.c 2006-08-08 14:18:32.000000000 +0200
+++ wireless-dev-rt2x00-pci/drivers/net/wireless/d80211/rt2x00/rt2400pci.c 2006-08-08 14:35:53.000000000 +0200
@@ -2851,10 +2851,16 @@
struct net_device *net_dev;
int status;
+ status = pci_request_regions(pci_dev, pci_name(pci_dev));
+ if (status) {
+ ERROR("PCI request regions failed.\n");
+ return status;
+ }
+
status = pci_enable_device(pci_dev);
if (status) {
ERROR("Enable device failed.\n");
- return status;
+ goto exit_release_regions;
}
pci_set_master(pci_dev);
@@ -2869,17 +2875,11 @@
goto exit_disable_device;
}
- status = pci_request_regions(pci_dev, pci_name(pci_dev));
- if (status) {
- ERROR("PCI request regions failed.\n");
- goto exit_disable_device;
- }
-
net_dev = ieee80211_alloc_hw(sizeof(struct rt2x00_dev), NULL);
if (!net_dev) {
ERROR("Failed to allocate hardware.\n");
status = -ENOMEM;
- goto exit_release_regions;
+ goto exit_disable_device;
}
SET_ETHTOOL_OPS(net_dev, &rt2400pci_ethtool_ops);
@@ -2898,13 +2898,13 @@
exit_free_device:
ieee80211_free_hw(net_dev);
-exit_release_regions:
- pci_release_regions(pci_dev);
-
exit_disable_device:
if (status != -EBUSY)
pci_disable_device(pci_dev);
+exit_release_regions:
+ pci_release_regions(pci_dev);
+
pci_set_drvdata(pci_dev, NULL);
return status;
@@ -2927,9 +2927,9 @@
pci_set_drvdata(pci_dev, NULL);
- pci_release_regions(pci_dev);
-
pci_disable_device(pci_dev);
+
+ pci_release_regions(pci_dev);
}
#ifdef CONFIG_PM
diff -rU3 wireless-dev-rt2x00/drivers/net/wireless/d80211/rt2x00/rt2500pci.c wireless-dev-rt2x00-pci/drivers/net/wireless/d80211/rt2x00/rt2500pci.c
--- wireless-dev-rt2x00/drivers/net/wireless/d80211/rt2x00/rt2500pci.c 2006-08-08 14:18:32.000000000 +0200
+++ wireless-dev-rt2x00-pci/drivers/net/wireless/d80211/rt2x00/rt2500pci.c 2006-08-08 14:35:38.000000000 +0200
@@ -3134,10 +3134,16 @@
struct net_device *net_dev;
int status;
+ status = pci_request_regions(pci_dev, pci_name(pci_dev));
+ if (status) {
+ ERROR("PCI request regions failed.\n");
+ return status;
+ }
+
status = pci_enable_device(pci_dev);
if (status) {
ERROR("Enable device failed.\n");
- return status;
+ goto exit_release_regions;
}
pci_set_master(pci_dev);
@@ -3152,17 +3158,11 @@
goto exit_disable_device;
}
- status = pci_request_regions(pci_dev, pci_name(pci_dev));
- if (status) {
- ERROR("PCI request regions failed.\n");
- goto exit_disable_device;
- }
-
net_dev = ieee80211_alloc_hw(sizeof(struct rt2x00_dev), NULL);
if (!net_dev) {
ERROR("Failed to allocate hardware.\n");
status = -ENOMEM;
- goto exit_release_regions;
+ goto exit_disable_device;
}
SET_ETHTOOL_OPS(net_dev, &rt2500pci_ethtool_ops);
@@ -3181,13 +3181,13 @@
exit_free_device:
ieee80211_free_hw(net_dev);
-exit_release_regions:
- pci_release_regions(pci_dev);
-
exit_disable_device:
if (status != -EBUSY)
pci_disable_device(pci_dev);
+exit_release_regions:
+ pci_release_regions(pci_dev);
+
pci_set_drvdata(pci_dev, NULL);
return status;
@@ -3210,9 +3210,9 @@
pci_set_drvdata(pci_dev, NULL);
- pci_release_regions(pci_dev);
-
pci_disable_device(pci_dev);
+
+ pci_release_regions(pci_dev);
}
#ifdef CONFIG_PM
diff -rU3 wireless-dev-rt2x00/drivers/net/wireless/d80211/rt2x00/rt61pci.c wireless-dev-rt2x00-pci/drivers/net/wireless/d80211/rt2x00/rt61pci.c
--- wireless-dev-rt2x00/drivers/net/wireless/d80211/rt2x00/rt61pci.c 2006-08-08 14:18:32.000000000 +0200
+++ wireless-dev-rt2x00-pci/drivers/net/wireless/d80211/rt2x00/rt61pci.c 2006-08-08 14:35:44.000000000 +0200
@@ -3665,10 +3665,16 @@
struct net_device *net_dev;
int status;
+ status = pci_request_regions(pci_dev, pci_name(pci_dev));
+ if (status) {
+ ERROR("PCI request regions failed.\n");
+ return status;
+ }
+
status = pci_enable_device(pci_dev);
if (status) {
ERROR("Enable device failed.\n");
- return status;
+ goto exit_release_regions;
}
pci_set_master(pci_dev);
@@ -3683,17 +3689,11 @@
goto exit_disable_device;
}
- status = pci_request_regions(pci_dev, pci_name(pci_dev));
- if (status) {
- ERROR("PCI request regions failed.\n");
- goto exit_disable_device;
- }
-
net_dev = ieee80211_alloc_hw(sizeof(struct rt2x00_dev), NULL);
if (!net_dev) {
ERROR("Failed to allocate hardware.\n");
status = -ENOMEM;
- goto exit_release_regions;
+ goto exit_disable_device;
}
SET_ETHTOOL_OPS(net_dev, &rt61pci_ethtool_ops);
@@ -3712,13 +3712,13 @@
exit_free_device:
ieee80211_free_hw(net_dev);
-exit_release_regions:
- pci_release_regions(pci_dev);
-
exit_disable_device:
if (status != -EBUSY)
pci_disable_device(pci_dev);
+exit_release_regions:
+ pci_release_regions(pci_dev);
+
pci_set_drvdata(pci_dev, NULL);
return status;
@@ -3741,9 +3741,9 @@
pci_set_drvdata(pci_dev, NULL);
- pci_release_regions(pci_dev);
-
pci_disable_device(pci_dev);
+
+ pci_release_regions(pci_dev);
}
#ifdef CONFIG_PM
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2006-08-08 13:47 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-08-08 13:46 [PATCH 1/6] rt2x00 - pci request/release regions Ivo van Doorn
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).