From: Ivo van Doorn <ivdoorn@gmail.com>
To: netdev@vger.kernel.org
Cc: linville@tuxdriver.com
Subject: [PATCH 7/10] rt2x00: Add ieee80211_netif_oper() calls
Date: Sun, 27 Aug 2006 17:39:14 +0200 [thread overview]
Message-ID: <200608271739.15085.IvDoorn@gmail.com> (raw)
Add ieee80211_netif_oper() calls on the correct places
for better flow control.
Signed-off-by Ivo van Doorn <ivdoorn@gmail.com>
---
diff -rU3 wireless-dev-rt2x00-return/drivers/net/wireless/d80211/rt2x00/rt2400pci.c wireless-dev-rt2x00-netif/drivers/net/wireless/d80211/rt2x00/rt2400pci.c
--- wireless-dev-rt2x00-return/drivers/net/wireless/d80211/rt2x00/rt2400pci.c 2006-08-27 16:29:05.000000000 +0200
+++ wireless-dev-rt2x00-netif/drivers/net/wireless/d80211/rt2x00/rt2400pci.c 2006-08-27 16:32:51.000000000 +0200
@@ -1465,17 +1465,22 @@
SET_FLAG(rt2x00dev, DEVICE_ENABLED_RADIO);
ieee80211_start_queues(net_dev);
+ ieee80211_netif_oper(net_dev, NETIF_WAKE);
return 0;
}
static void rt2400pci_disable_radio(struct rt2x00_dev *rt2x00dev)
{
+ struct net_device *net_dev = pci_get_drvdata(rt2x00dev_pci(rt2x00dev));
u32 reg;
if (!GET_FLAG(rt2x00dev, DEVICE_ENABLED_RADIO))
return;
+ ieee80211_netif_oper(net_dev, NETIF_STOP);
+ ieee80211_stop_queues(net_dev);
+
/*
* Disable LED
*/
@@ -2893,6 +2898,8 @@
goto exit_free_device;
}
+ ieee80211_netif_oper(net_dev, NETIF_ATTACH);
+
return 0;
exit_free_device:
@@ -2917,6 +2924,8 @@
rt2400pci_disable_radio(rt2x00dev);
+ ieee80211_netif_oper(net_dev, NETIF_DETACH);
+
rt2400pci_uninitialize(rt2x00dev);
rt2400pci_free_dev(net_dev);
@@ -2945,6 +2954,7 @@
* Disable the radio.
*/
rt2400pci_disable_radio(rt2x00dev);
+ ieee80211_netif_oper(net_dev, NETIF_DETACH);
/*
* Set device mode to sleep for power management.
@@ -3001,7 +3011,13 @@
/*
* Set device mode to awake for power management.
*/
- return rt2400pci_set_state(rt2x00dev, STATE_AWAKE);
+ status = rt2400pci_set_state(rt2x00dev, STATE_AWAKE);
+ if (status)
+ return status;
+
+ ieee80211_netif_oper(net_dev, NETIF_ATTACH);
+
+ return 0;
}
#endif /* CONFIG_PM */
diff -rU3 wireless-dev-rt2x00-return/drivers/net/wireless/d80211/rt2x00/rt2500pci.c wireless-dev-rt2x00-netif/drivers/net/wireless/d80211/rt2x00/rt2500pci.c
--- wireless-dev-rt2x00-return/drivers/net/wireless/d80211/rt2x00/rt2500pci.c 2006-08-27 16:29:08.000000000 +0200
+++ wireless-dev-rt2x00-netif/drivers/net/wireless/d80211/rt2x00/rt2500pci.c 2006-08-27 16:34:16.000000000 +0200
@@ -1589,17 +1589,22 @@
SET_FLAG(rt2x00dev, DEVICE_ENABLED_RADIO);
ieee80211_start_queues(net_dev);
+ ieee80211_netif_oper(net_dev, NETIF_WAKE);
return 0;
}
static void rt2500pci_disable_radio(struct rt2x00_dev *rt2x00dev)
{
+ struct net_device *net_dev = pci_get_drvdata(rt2x00dev_pci(rt2x00dev));
u32 reg;
if (!GET_FLAG(rt2x00dev, DEVICE_ENABLED_RADIO))
return;
+ ieee80211_netif_oper(net_dev, NETIF_STOP);
+ ieee80211_stop_queues(net_dev);
+
/*
* Disable LED
*/
@@ -3178,6 +3183,8 @@
goto exit_free_device;
}
+ ieee80211_netif_oper(net_dev, NETIF_ATTACH);
+
return 0;
exit_free_device:
@@ -3202,6 +3209,8 @@
rt2500pci_disable_radio(rt2x00dev);
+ ieee80211_netif_oper(net_dev, NETIF_DETACH);
+
rt2500pci_uninitialize(rt2x00dev);
rt2500pci_free_dev(net_dev);
@@ -3230,6 +3239,7 @@
* Disable the radio.
*/
rt2500pci_disable_radio(rt2x00dev);
+ ieee80211_netif_oper(net_dev, NETIF_DETACH);
/*
* Set device mode to sleep for power management.
@@ -3286,7 +3296,13 @@
/*
* Set device mode to awake for power management.
*/
- return rt2500pci_set_state(rt2x00dev, STATE_AWAKE);
+ status = rt2500pci_set_state(rt2x00dev, STATE_AWAKE);
+ if (status)
+ return status;
+
+ ieee80211_netif_oper(net_dev, NETIF_ATTACH);
+
+ return 0;
}
#endif /* CONFIG_PM */
diff -rU3 wireless-dev-rt2x00-return/drivers/net/wireless/d80211/rt2x00/rt2500usb.c wireless-dev-rt2x00-netif/drivers/net/wireless/d80211/rt2x00/rt2500usb.c
--- wireless-dev-rt2x00-return/drivers/net/wireless/d80211/rt2x00/rt2500usb.c 2006-08-27 16:28:23.000000000 +0200
+++ wireless-dev-rt2x00-netif/drivers/net/wireless/d80211/rt2x00/rt2500usb.c 2006-08-27 16:35:43.000000000 +0200
@@ -1335,12 +1335,15 @@
SET_FLAG(rt2x00dev, DEVICE_ENABLED_RADIO);
ieee80211_start_queues(net_dev);
+ ieee80211_netif_oper(net_dev, NETIF_WAKE);
return 0;
}
static void rt2500usb_disable_radio(struct rt2x00_dev *rt2x00dev)
{
+ struct net_device *net_dev =
+ usb_get_intfdata(rt2x00dev_usb(rt2x00dev));
struct data_ring *ring;
u16 reg;
unsigned int i;
@@ -1348,6 +1351,9 @@
if (!GET_FLAG(rt2x00dev, DEVICE_ENABLED_RADIO))
return;
+ ieee80211_netif_oper(net_dev, NETIF_STOP);
+ ieee80211_stop_queues(net_dev);
+
/*
* Disable LED
*/
@@ -2802,6 +2808,8 @@
goto exit_free_device;
}
+ ieee80211_netif_oper(net_dev, NETIF_ATTACH);
+
return 0;
exit_free_device:
@@ -2820,6 +2828,8 @@
rt2500usb_disable_radio(rt2x00dev);
+ ieee80211_netif_oper(net_dev, NETIF_DETACH);
+
rt2500usb_uninitialize(rt2x00dev);
rt2500usb_free_dev(net_dev);
@@ -2847,6 +2857,7 @@
* Disable the radio.
*/
rt2500usb_disable_radio(rt2x00dev);
+ ieee80211_netif_oper(net_dev, NETIF_DETACH);
/*
* Set device mode to sleep for power management.
@@ -2898,7 +2909,13 @@
/*
* Set device mode to awake for power management.
*/
- return rt2500usb_set_state(rt2x00dev, STATE_AWAKE);
+ status = rt2500usb_set_state(rt2x00dev, STATE_AWAKE);
+ if (status)
+ return status;
+
+ ieee80211_netif_oper(net_dev, NETIF_ATTACH);
+
+ return 0;
}
#endif /* CONFIG_PM */
diff -rU3 wireless-dev-rt2x00-return/drivers/net/wireless/d80211/rt2x00/rt61pci.c wireless-dev-rt2x00-netif/drivers/net/wireless/d80211/rt2x00/rt61pci.c
--- wireless-dev-rt2x00-return/drivers/net/wireless/d80211/rt2x00/rt61pci.c 2006-08-27 16:37:11.000000000 +0200
+++ wireless-dev-rt2x00-netif/drivers/net/wireless/d80211/rt2x00/rt61pci.c 2006-08-27 16:38:04.000000000 +0200
@@ -2017,17 +2017,22 @@
SET_FLAG(rt2x00dev, DEVICE_ENABLED_RADIO);
ieee80211_start_queues(net_dev);
+ ieee80211_netif_oper(net_dev, NETIF_WAKE);
return 0;
}
static void rt61pci_disable_radio(struct rt2x00_dev *rt2x00dev)
{
+ struct net_device *net_dev = pci_get_drvdata(rt2x00dev_pci(rt2x00dev));
u32 reg;
if (!GET_FLAG(rt2x00dev, DEVICE_ENABLED_RADIO))
return;
+ ieee80211_netif_oper(net_dev, NETIF_STOP);
+ ieee80211_stop_queues(net_dev);
+
/*
* Disable LED
*/
@@ -3695,6 +3700,8 @@
goto exit_free_device;
}
+ ieee80211_netif_oper(net_dev, NETIF_ATTACH);
+
return 0;
exit_free_device:
@@ -3719,6 +3726,8 @@
rt61pci_disable_radio(rt2x00dev);
+ ieee80211_netif_oper(net_dev, NETIF_DETACH);
+
rt61pci_uninitialize(rt2x00dev);
rt61pci_free_dev(net_dev);
@@ -3747,6 +3756,7 @@
* Disable the radio.
*/
rt61pci_disable_radio(rt2x00dev);
+ ieee80211_netif_oper(net_dev, NETIF_DETACH);
/*
* Set device mode to sleep for power management.
@@ -3803,7 +3813,13 @@
/*
* Set device mode to awake for power management.
*/
- return rt61pci_set_state(rt2x00dev, STATE_AWAKE);
+ status = rt61pci_set_state(rt2x00dev, STATE_AWAKE);
+ if (status)
+ return status;
+
+ ieee80211_netif_oper(net_dev, NETIF_ATTACH);
+
+ return 0;
}
#endif /* CONFIG_PM */
diff -rU3 wireless-dev-rt2x00-return/drivers/net/wireless/d80211/rt2x00/rt73usb.c wireless-dev-rt2x00-netif/drivers/net/wireless/d80211/rt2x00/rt73usb.c
--- wireless-dev-rt2x00-return/drivers/net/wireless/d80211/rt2x00/rt73usb.c 2006-08-27 16:29:43.000000000 +0200
+++ wireless-dev-rt2x00-netif/drivers/net/wireless/d80211/rt2x00/rt73usb.c 2006-08-27 16:40:05.000000000 +0200
@@ -1600,12 +1600,15 @@
SET_FLAG(rt2x00dev, DEVICE_ENABLED_RADIO);
ieee80211_start_queues(net_dev);
+ ieee80211_netif_oper(net_dev, NETIF_WAKE);
return 0;
}
static void rt73usb_disable_radio(struct rt2x00_dev *rt2x00dev)
{
+ struct net_device *net_dev =
+ usb_get_intfdata(rt2x00dev_usb(rt2x00dev));
struct data_ring *ring;
u32 reg;
unsigned int i;
@@ -1613,6 +1616,9 @@
if (!GET_FLAG(rt2x00dev, DEVICE_ENABLED_RADIO))
return;
+ ieee80211_netif_oper(net_dev, NETIF_STOP);
+ ieee80211_stop_queues(net_dev);
+
/*
* Disable LED
*/
@@ -3168,6 +3174,8 @@
goto exit_free_device;
}
+ ieee80211_netif_oper(net_dev, NETIF_ATTACH);
+
return 0;
exit_free_device:
@@ -3186,6 +3194,8 @@
rt73usb_disable_radio(rt2x00dev);
+ ieee80211_netif_oper(net_dev, NETIF_DETACH);
+
rt73usb_uninitialize(rt2x00dev);
rt73usb_free_dev(net_dev);
@@ -3212,6 +3222,7 @@
* Disable the radio.
*/
rt73usb_disable_radio(rt2x00dev);
+ ieee80211_netif_oper(net_dev, NETIF_DETACH);
/*
* Set device mode to sleep for power management.
@@ -3263,7 +3274,12 @@
/*
* Set device mode to awake for power management.
*/
- return rt73usb_set_state(rt2x00dev, STATE_AWAKE);
+ status = rt73usb_set_state(rt2x00dev, STATE_AWAKE);
+ if (status)
+ return status;
+
+ ieee80211_netif_oper(net_dev, NETIF_ATTACH);
+ return 0;
}
#endif /* CONFIG_PM */
reply other threads:[~2006-08-27 15:39 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200608271739.15085.IvDoorn@gmail.com \
--to=ivdoorn@gmail.com \
--cc=linville@tuxdriver.com \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).