OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright 2002-2005, Instant802 Networks, Inc. | 2 * Copyright 2002-2005, Instant802 Networks, Inc. |
3 * Copyright 2005-2006, Devicescape Software, Inc. | 3 * Copyright 2005-2006, Devicescape Software, Inc. |
4 * Copyright 2006-2007 Jiri Benc <jbenc@suse.cz> | 4 * Copyright 2006-2007 Jiri Benc <jbenc@suse.cz> |
5 * | 5 * |
6 * This program is free software; you can redistribute it and/or modify | 6 * This program is free software; you can redistribute it and/or modify |
7 * it under the terms of the GNU General Public License version 2 as | 7 * it under the terms of the GNU General Public License version 2 as |
8 * published by the Free Software Foundation. | 8 * published by the Free Software Foundation. |
9 */ | 9 */ |
10 | 10 |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
105 enum nl80211_channel_type channel_type; | 105 enum nl80211_channel_type channel_type; |
106 | 106 |
107 might_sleep(); | 107 might_sleep(); |
108 | 108 |
109 scan_chan = local->scan_channel; | 109 scan_chan = local->scan_channel; |
110 | 110 |
111 if (scan_chan) { | 111 if (scan_chan) { |
112 chan = scan_chan; | 112 chan = scan_chan; |
113 channel_type = NL80211_CHAN_NO_HT; | 113 channel_type = NL80211_CHAN_NO_HT; |
114 local->hw.conf.flags |= IEEE80211_CONF_OFFCHANNEL; | 114 local->hw.conf.flags |= IEEE80211_CONF_OFFCHANNEL; |
115 » } else if (local->tmp_channel) { | 115 » } else if (local->tmp_channel && |
116 » » local->oper_channel != local->tmp_channel) { | |
Sam Leffler
2010/12/01 00:23:44
<come back to this>
| |
116 chan = scan_chan = local->tmp_channel; | 117 chan = scan_chan = local->tmp_channel; |
117 channel_type = local->tmp_channel_type; | 118 channel_type = local->tmp_channel_type; |
118 local->hw.conf.flags |= IEEE80211_CONF_OFFCHANNEL; | 119 local->hw.conf.flags |= IEEE80211_CONF_OFFCHANNEL; |
119 } else { | 120 } else { |
120 chan = local->oper_channel; | 121 chan = local->oper_channel; |
121 channel_type = local->_oper_channel_type; | 122 channel_type = local->_oper_channel_type; |
122 local->hw.conf.flags &= ~IEEE80211_CONF_OFFCHANNEL; | 123 local->hw.conf.flags &= ~IEEE80211_CONF_OFFCHANNEL; |
123 } | 124 } |
124 | 125 |
125 if (chan != local->hw.conf.channel || | 126 if (chan != local->hw.conf.channel || |
(...skipping 605 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
731 | 732 |
732 /* | 733 /* |
733 * At this point, interface list manipulations are fine | 734 * At this point, interface list manipulations are fine |
734 * because the driver cannot be handing us frames any | 735 * because the driver cannot be handing us frames any |
735 * more and the tasklet is killed. | 736 * more and the tasklet is killed. |
736 */ | 737 */ |
737 ieee80211_remove_interfaces(local); | 738 ieee80211_remove_interfaces(local); |
738 | 739 |
739 rtnl_unlock(); | 740 rtnl_unlock(); |
740 | 741 |
742 /* | |
743 * Now all work items will be gone, but the | |
744 * timer might still be armed, so delete it | |
745 */ | |
746 del_timer_sync(&local->work_timer); | |
747 | |
741 cancel_work_sync(&local->reconfig_filter); | 748 cancel_work_sync(&local->reconfig_filter); |
742 | 749 |
743 ieee80211_clear_tx_pending(local); | 750 ieee80211_clear_tx_pending(local); |
744 sta_info_stop(local); | 751 sta_info_stop(local); |
745 rate_control_deinitialize(local); | 752 rate_control_deinitialize(local); |
746 | 753 |
747 if (skb_queue_len(&local->skb_queue) || | 754 if (skb_queue_len(&local->skb_queue) || |
748 skb_queue_len(&local->skb_queue_unreliable)) | 755 skb_queue_len(&local->skb_queue_unreliable)) |
749 printk(KERN_WARNING "%s: skb_queue not empty\n", | 756 printk(KERN_WARNING "%s: skb_queue not empty\n", |
750 wiphy_name(local->hw.wiphy)); | 757 wiphy_name(local->hw.wiphy)); |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
823 | 830 |
824 ieee80211_iface_exit(); | 831 ieee80211_iface_exit(); |
825 } | 832 } |
826 | 833 |
827 | 834 |
828 subsys_initcall(ieee80211_init); | 835 subsys_initcall(ieee80211_init); |
829 module_exit(ieee80211_exit); | 836 module_exit(ieee80211_exit); |
830 | 837 |
831 MODULE_DESCRIPTION("IEEE 802.11 subsystem"); | 838 MODULE_DESCRIPTION("IEEE 802.11 subsystem"); |
832 MODULE_LICENSE("GPL"); | 839 MODULE_LICENSE("GPL"); |
OLD | NEW |