diff options
Diffstat (limited to 'net/mac80211/ieee80211_i.h')
-rw-r--r-- | net/mac80211/ieee80211_i.h | 51 |
1 files changed, 38 insertions, 13 deletions
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h index c18396c248d7..2025af52b195 100644 --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h | |||
@@ -214,7 +214,7 @@ struct beacon_data { | |||
214 | }; | 214 | }; |
215 | 215 | ||
216 | struct ieee80211_if_ap { | 216 | struct ieee80211_if_ap { |
217 | struct beacon_data *beacon; | 217 | struct beacon_data __rcu *beacon; |
218 | 218 | ||
219 | struct list_head vlans; | 219 | struct list_head vlans; |
220 | 220 | ||
@@ -237,7 +237,7 @@ struct ieee80211_if_vlan { | |||
237 | struct list_head list; | 237 | struct list_head list; |
238 | 238 | ||
239 | /* used for all tx if the VLAN is configured to 4-addr mode */ | 239 | /* used for all tx if the VLAN is configured to 4-addr mode */ |
240 | struct sta_info *sta; | 240 | struct sta_info __rcu *sta; |
241 | }; | 241 | }; |
242 | 242 | ||
243 | struct mesh_stats { | 243 | struct mesh_stats { |
@@ -442,7 +442,8 @@ struct ieee80211_if_ibss { | |||
442 | 442 | ||
443 | unsigned long ibss_join_req; | 443 | unsigned long ibss_join_req; |
444 | /* probe response/beacon for IBSS */ | 444 | /* probe response/beacon for IBSS */ |
445 | struct sk_buff *presp, *skb; | 445 | struct sk_buff __rcu *presp; |
446 | struct sk_buff *skb; | ||
446 | 447 | ||
447 | enum { | 448 | enum { |
448 | IEEE80211_IBSS_MLME_SEARCH, | 449 | IEEE80211_IBSS_MLME_SEARCH, |
@@ -488,8 +489,13 @@ struct ieee80211_if_mesh { | |||
488 | struct mesh_config mshcfg; | 489 | struct mesh_config mshcfg; |
489 | u32 mesh_seqnum; | 490 | u32 mesh_seqnum; |
490 | bool accepting_plinks; | 491 | bool accepting_plinks; |
491 | const u8 *vendor_ie; | 492 | const u8 *ie; |
492 | u8 vendor_ie_len; | 493 | u8 ie_len; |
494 | enum { | ||
495 | IEEE80211_MESH_SEC_NONE = 0x0, | ||
496 | IEEE80211_MESH_SEC_AUTHED = 0x1, | ||
497 | IEEE80211_MESH_SEC_SECURED = 0x2, | ||
498 | } security; | ||
493 | }; | 499 | }; |
494 | 500 | ||
495 | #ifdef CONFIG_MAC80211_MESH | 501 | #ifdef CONFIG_MAC80211_MESH |
@@ -562,9 +568,10 @@ struct ieee80211_sub_if_data { | |||
562 | struct ieee80211_fragment_entry fragments[IEEE80211_FRAGMENT_MAX]; | 568 | struct ieee80211_fragment_entry fragments[IEEE80211_FRAGMENT_MAX]; |
563 | unsigned int fragment_next; | 569 | unsigned int fragment_next; |
564 | 570 | ||
565 | struct ieee80211_key *keys[NUM_DEFAULT_KEYS + NUM_DEFAULT_MGMT_KEYS]; | 571 | struct ieee80211_key __rcu *keys[NUM_DEFAULT_KEYS + NUM_DEFAULT_MGMT_KEYS]; |
566 | struct ieee80211_key *default_unicast_key, *default_multicast_key; | 572 | struct ieee80211_key __rcu *default_unicast_key; |
567 | struct ieee80211_key *default_mgmt_key; | 573 | struct ieee80211_key __rcu *default_multicast_key; |
574 | struct ieee80211_key __rcu *default_mgmt_key; | ||
568 | 575 | ||
569 | u16 sequence_number; | 576 | u16 sequence_number; |
570 | __be16 control_port_protocol; | 577 | __be16 control_port_protocol; |
@@ -763,8 +770,14 @@ struct ieee80211_local { | |||
763 | /* device is started */ | 770 | /* device is started */ |
764 | bool started; | 771 | bool started; |
765 | 772 | ||
773 | /* wowlan is enabled -- don't reconfig on resume */ | ||
774 | bool wowlan; | ||
775 | |||
766 | int tx_headroom; /* required headroom for hardware/radiotap */ | 776 | int tx_headroom; /* required headroom for hardware/radiotap */ |
767 | 777 | ||
778 | /* count for keys needing tailroom space allocation */ | ||
779 | int crypto_tx_tailroom_needed_cnt; | ||
780 | |||
768 | /* Tasklet and skb queue to process calls from IRQ mode. All frames | 781 | /* Tasklet and skb queue to process calls from IRQ mode. All frames |
769 | * added to skb_queue will be processed, but frames in | 782 | * added to skb_queue will be processed, but frames in |
770 | * skb_queue_unreliable may be dropped if the total length of these | 783 | * skb_queue_unreliable may be dropped if the total length of these |
@@ -794,7 +807,7 @@ struct ieee80211_local { | |||
794 | spinlock_t sta_lock; | 807 | spinlock_t sta_lock; |
795 | unsigned long num_sta; | 808 | unsigned long num_sta; |
796 | struct list_head sta_list, sta_pending_list; | 809 | struct list_head sta_list, sta_pending_list; |
797 | struct sta_info *sta_hash[STA_HASH_SIZE]; | 810 | struct sta_info __rcu *sta_hash[STA_HASH_SIZE]; |
798 | struct timer_list sta_cleanup; | 811 | struct timer_list sta_cleanup; |
799 | struct work_struct sta_finish_work; | 812 | struct work_struct sta_finish_work; |
800 | int sta_generation; | 813 | int sta_generation; |
@@ -809,8 +822,8 @@ struct ieee80211_local { | |||
809 | 822 | ||
810 | struct rate_control_ref *rate_ctrl; | 823 | struct rate_control_ref *rate_ctrl; |
811 | 824 | ||
812 | struct crypto_blkcipher *wep_tx_tfm; | 825 | struct crypto_cipher *wep_tx_tfm; |
813 | struct crypto_blkcipher *wep_rx_tfm; | 826 | struct crypto_cipher *wep_rx_tfm; |
814 | u32 wep_iv; | 827 | u32 wep_iv; |
815 | 828 | ||
816 | /* see iface.c */ | 829 | /* see iface.c */ |
@@ -836,6 +849,10 @@ struct ieee80211_local { | |||
836 | int scan_channel_idx; | 849 | int scan_channel_idx; |
837 | int scan_ies_len; | 850 | int scan_ies_len; |
838 | 851 | ||
852 | bool sched_scanning; | ||
853 | struct ieee80211_sched_scan_ies sched_scan_ies; | ||
854 | struct work_struct sched_scan_stopped_work; | ||
855 | |||
839 | unsigned long leave_oper_channel_time; | 856 | unsigned long leave_oper_channel_time; |
840 | enum mac80211_scan_state next_scan_state; | 857 | enum mac80211_scan_state next_scan_state; |
841 | struct delayed_work scan_work; | 858 | struct delayed_work scan_work; |
@@ -1143,6 +1160,12 @@ ieee80211_rx_bss_get(struct ieee80211_local *local, u8 *bssid, int freq, | |||
1143 | void ieee80211_rx_bss_put(struct ieee80211_local *local, | 1160 | void ieee80211_rx_bss_put(struct ieee80211_local *local, |
1144 | struct ieee80211_bss *bss); | 1161 | struct ieee80211_bss *bss); |
1145 | 1162 | ||
1163 | /* scheduled scan handling */ | ||
1164 | int ieee80211_request_sched_scan_start(struct ieee80211_sub_if_data *sdata, | ||
1165 | struct cfg80211_sched_scan_request *req); | ||
1166 | int ieee80211_request_sched_scan_stop(struct ieee80211_sub_if_data *sdata); | ||
1167 | void ieee80211_sched_scan_stopped_work(struct work_struct *work); | ||
1168 | |||
1146 | /* off-channel helpers */ | 1169 | /* off-channel helpers */ |
1147 | bool ieee80211_cfg_on_oper_channel(struct ieee80211_local *local); | 1170 | bool ieee80211_cfg_on_oper_channel(struct ieee80211_local *local); |
1148 | void ieee80211_offchannel_enable_all_ps(struct ieee80211_local *local, | 1171 | void ieee80211_offchannel_enable_all_ps(struct ieee80211_local *local, |
@@ -1246,7 +1269,8 @@ int ieee80211_reconfig(struct ieee80211_local *local); | |||
1246 | void ieee80211_stop_device(struct ieee80211_local *local); | 1269 | void ieee80211_stop_device(struct ieee80211_local *local); |
1247 | 1270 | ||
1248 | #ifdef CONFIG_PM | 1271 | #ifdef CONFIG_PM |
1249 | int __ieee80211_suspend(struct ieee80211_hw *hw); | 1272 | int __ieee80211_suspend(struct ieee80211_hw *hw, |
1273 | struct cfg80211_wowlan *wowlan); | ||
1250 | 1274 | ||
1251 | static inline int __ieee80211_resume(struct ieee80211_hw *hw) | 1275 | static inline int __ieee80211_resume(struct ieee80211_hw *hw) |
1252 | { | 1276 | { |
@@ -1259,7 +1283,8 @@ static inline int __ieee80211_resume(struct ieee80211_hw *hw) | |||
1259 | return ieee80211_reconfig(hw_to_local(hw)); | 1283 | return ieee80211_reconfig(hw_to_local(hw)); |
1260 | } | 1284 | } |
1261 | #else | 1285 | #else |
1262 | static inline int __ieee80211_suspend(struct ieee80211_hw *hw) | 1286 | static inline int __ieee80211_suspend(struct ieee80211_hw *hw, |
1287 | struct cfg80211_wowlan *wowlan) | ||
1263 | { | 1288 | { |
1264 | return 0; | 1289 | return 0; |
1265 | } | 1290 | } |