Chromium Code Reviews| 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 |