aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/ieee80211_i.h
diff options
context:
space:
mode:
Diffstat (limited to 'net/mac80211/ieee80211_i.h')
-rw-r--r--net/mac80211/ieee80211_i.h51
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
216struct ieee80211_if_ap { 216struct 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
243struct mesh_stats { 243struct 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,
1143void ieee80211_rx_bss_put(struct ieee80211_local *local, 1160void ieee80211_rx_bss_put(struct ieee80211_local *local,
1144 struct ieee80211_bss *bss); 1161 struct ieee80211_bss *bss);
1145 1162
1163/* scheduled scan handling */
1164int ieee80211_request_sched_scan_start(struct ieee80211_sub_if_data *sdata,
1165 struct cfg80211_sched_scan_request *req);
1166int ieee80211_request_sched_scan_stop(struct ieee80211_sub_if_data *sdata);
1167void ieee80211_sched_scan_stopped_work(struct work_struct *work);
1168
1146/* off-channel helpers */ 1169/* off-channel helpers */
1147bool ieee80211_cfg_on_oper_channel(struct ieee80211_local *local); 1170bool ieee80211_cfg_on_oper_channel(struct ieee80211_local *local);
1148void ieee80211_offchannel_enable_all_ps(struct ieee80211_local *local, 1171void ieee80211_offchannel_enable_all_ps(struct ieee80211_local *local,
@@ -1246,7 +1269,8 @@ int ieee80211_reconfig(struct ieee80211_local *local);
1246void ieee80211_stop_device(struct ieee80211_local *local); 1269void ieee80211_stop_device(struct ieee80211_local *local);
1247 1270
1248#ifdef CONFIG_PM 1271#ifdef CONFIG_PM
1249int __ieee80211_suspend(struct ieee80211_hw *hw); 1272int __ieee80211_suspend(struct ieee80211_hw *hw,
1273 struct cfg80211_wowlan *wowlan);
1250 1274
1251static inline int __ieee80211_resume(struct ieee80211_hw *hw) 1275static 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
1262static inline int __ieee80211_suspend(struct ieee80211_hw *hw) 1286static inline int __ieee80211_suspend(struct ieee80211_hw *hw,
1287 struct cfg80211_wowlan *wowlan)
1263{ 1288{
1264 return 0; 1289 return 0;
1265} 1290}