diff options
author | David S. Miller <davem@davemloft.net> | 2010-06-17 17:19:06 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-06-17 17:19:06 -0400 |
commit | bb9c03d8a6893517737b16fdbeb54be3c73b3023 (patch) | |
tree | 35fa0d1defaaf94641963a49126d7bb475ffa4c6 /net/mac80211/ieee80211_i.h | |
parent | 4de57826810fd2cfeb2ab5c7d003ff9116b8f7ee (diff) | |
parent | abf52f86aa0a49a7377350cafa8f218c4cd227e7 (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6
Diffstat (limited to 'net/mac80211/ieee80211_i.h')
-rw-r--r-- | net/mac80211/ieee80211_i.h | 66 |
1 files changed, 38 insertions, 28 deletions
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h index 1e779e833473..6f905f153ed7 100644 --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h | |||
@@ -325,7 +325,6 @@ struct ieee80211_if_managed { | |||
325 | struct timer_list conn_mon_timer; | 325 | struct timer_list conn_mon_timer; |
326 | struct timer_list bcn_mon_timer; | 326 | struct timer_list bcn_mon_timer; |
327 | struct timer_list chswitch_timer; | 327 | struct timer_list chswitch_timer; |
328 | struct work_struct work; | ||
329 | struct work_struct monitor_work; | 328 | struct work_struct monitor_work; |
330 | struct work_struct chswitch_work; | 329 | struct work_struct chswitch_work; |
331 | struct work_struct beacon_connection_loss_work; | 330 | struct work_struct beacon_connection_loss_work; |
@@ -340,8 +339,6 @@ struct ieee80211_if_managed { | |||
340 | 339 | ||
341 | u16 aid; | 340 | u16 aid; |
342 | 341 | ||
343 | struct sk_buff_head skb_queue; | ||
344 | |||
345 | unsigned long timers_running; /* used for quiesce/restart */ | 342 | unsigned long timers_running; /* used for quiesce/restart */ |
346 | bool powersave; /* powersave requested for this iface */ | 343 | bool powersave; /* powersave requested for this iface */ |
347 | enum ieee80211_smps_mode req_smps, /* requested smps mode */ | 344 | enum ieee80211_smps_mode req_smps, /* requested smps mode */ |
@@ -386,13 +383,12 @@ enum ieee80211_ibss_request { | |||
386 | 383 | ||
387 | struct ieee80211_if_ibss { | 384 | struct ieee80211_if_ibss { |
388 | struct timer_list timer; | 385 | struct timer_list timer; |
389 | struct work_struct work; | ||
390 | |||
391 | struct sk_buff_head skb_queue; | ||
392 | 386 | ||
393 | unsigned long request; | 387 | unsigned long request; |
394 | unsigned long last_scan_completed; | 388 | unsigned long last_scan_completed; |
395 | 389 | ||
390 | u32 basic_rates; | ||
391 | |||
396 | bool timer_running; | 392 | bool timer_running; |
397 | 393 | ||
398 | bool fixed_bssid; | 394 | bool fixed_bssid; |
@@ -416,11 +412,9 @@ struct ieee80211_if_ibss { | |||
416 | }; | 412 | }; |
417 | 413 | ||
418 | struct ieee80211_if_mesh { | 414 | struct ieee80211_if_mesh { |
419 | struct work_struct work; | ||
420 | struct timer_list housekeeping_timer; | 415 | struct timer_list housekeeping_timer; |
421 | struct timer_list mesh_path_timer; | 416 | struct timer_list mesh_path_timer; |
422 | struct timer_list mesh_path_root_timer; | 417 | struct timer_list mesh_path_root_timer; |
423 | struct sk_buff_head skb_queue; | ||
424 | 418 | ||
425 | unsigned long timers_running; | 419 | unsigned long timers_running; |
426 | 420 | ||
@@ -517,6 +511,11 @@ struct ieee80211_sub_if_data { | |||
517 | 511 | ||
518 | u16 sequence_number; | 512 | u16 sequence_number; |
519 | 513 | ||
514 | struct work_struct work; | ||
515 | struct sk_buff_head skb_queue; | ||
516 | |||
517 | bool arp_filter_state; | ||
518 | |||
520 | /* | 519 | /* |
521 | * AP this belongs to: self in AP mode and | 520 | * AP this belongs to: self in AP mode and |
522 | * corresponding AP in VLAN mode, NULL for | 521 | * corresponding AP in VLAN mode, NULL for |
@@ -569,11 +568,15 @@ ieee80211_sdata_set_mesh_id(struct ieee80211_sub_if_data *sdata, | |||
569 | #endif | 568 | #endif |
570 | } | 569 | } |
571 | 570 | ||
571 | enum sdata_queue_type { | ||
572 | IEEE80211_SDATA_QUEUE_TYPE_FRAME = 0, | ||
573 | IEEE80211_SDATA_QUEUE_AGG_START = 1, | ||
574 | IEEE80211_SDATA_QUEUE_AGG_STOP = 2, | ||
575 | }; | ||
576 | |||
572 | enum { | 577 | enum { |
573 | IEEE80211_RX_MSG = 1, | 578 | IEEE80211_RX_MSG = 1, |
574 | IEEE80211_TX_STATUS_MSG = 2, | 579 | IEEE80211_TX_STATUS_MSG = 2, |
575 | IEEE80211_DELBA_MSG = 3, | ||
576 | IEEE80211_ADDBA_MSG = 4, | ||
577 | }; | 580 | }; |
578 | 581 | ||
579 | enum queue_stop_reason { | 582 | enum queue_stop_reason { |
@@ -724,13 +727,7 @@ struct ieee80211_local { | |||
724 | struct sk_buff_head pending[IEEE80211_MAX_QUEUES]; | 727 | struct sk_buff_head pending[IEEE80211_MAX_QUEUES]; |
725 | struct tasklet_struct tx_pending_tasklet; | 728 | struct tasklet_struct tx_pending_tasklet; |
726 | 729 | ||
727 | /* | 730 | atomic_t agg_queue_stop[IEEE80211_MAX_QUEUES]; |
728 | * This lock is used to prevent concurrent A-MPDU | ||
729 | * session start/stop processing, this thus also | ||
730 | * synchronises the ->ampdu_action() callback to | ||
731 | * drivers and limits it to one at a time. | ||
732 | */ | ||
733 | spinlock_t ampdu_lock; | ||
734 | 731 | ||
735 | /* number of interfaces with corresponding IFF_ flags */ | 732 | /* number of interfaces with corresponding IFF_ flags */ |
736 | atomic_t iff_allmultis, iff_promiscs; | 733 | atomic_t iff_allmultis, iff_promiscs; |
@@ -853,6 +850,12 @@ struct ieee80211_local { | |||
853 | struct notifier_block network_latency_notifier; | 850 | struct notifier_block network_latency_notifier; |
854 | struct notifier_block ifa_notifier; | 851 | struct notifier_block ifa_notifier; |
855 | 852 | ||
853 | /* | ||
854 | * The dynamic ps timeout configured from user space via WEXT - | ||
855 | * this will override whatever chosen by mac80211 internally. | ||
856 | */ | ||
857 | int dynamic_ps_forced_timeout; | ||
858 | |||
856 | int user_power_level; /* in dBm */ | 859 | int user_power_level; /* in dBm */ |
857 | int power_constr_level; /* in dBm */ | 860 | int power_constr_level; /* in dBm */ |
858 | 861 | ||
@@ -875,9 +878,8 @@ IEEE80211_DEV_TO_SUB_IF(struct net_device *dev) | |||
875 | return netdev_priv(dev); | 878 | return netdev_priv(dev); |
876 | } | 879 | } |
877 | 880 | ||
878 | /* this struct represents 802.11n's RA/TID combination along with our vif */ | 881 | /* this struct represents 802.11n's RA/TID combination */ |
879 | struct ieee80211_ra_tid { | 882 | struct ieee80211_ra_tid { |
880 | struct ieee80211_vif *vif; | ||
881 | u8 ra[ETH_ALEN]; | 883 | u8 ra[ETH_ALEN]; |
882 | u16 tid; | 884 | u16 tid; |
883 | }; | 885 | }; |
@@ -986,13 +988,6 @@ int ieee80211_mgd_deauth(struct ieee80211_sub_if_data *sdata, | |||
986 | int ieee80211_mgd_disassoc(struct ieee80211_sub_if_data *sdata, | 988 | int ieee80211_mgd_disassoc(struct ieee80211_sub_if_data *sdata, |
987 | struct cfg80211_disassoc_request *req, | 989 | struct cfg80211_disassoc_request *req, |
988 | void *cookie); | 990 | void *cookie); |
989 | int ieee80211_mgd_action(struct ieee80211_sub_if_data *sdata, | ||
990 | struct ieee80211_channel *chan, | ||
991 | enum nl80211_channel_type channel_type, | ||
992 | bool channel_type_valid, | ||
993 | const u8 *buf, size_t len, u64 *cookie); | ||
994 | ieee80211_rx_result ieee80211_sta_rx_mgmt(struct ieee80211_sub_if_data *sdata, | ||
995 | struct sk_buff *skb); | ||
996 | void ieee80211_send_pspoll(struct ieee80211_local *local, | 991 | void ieee80211_send_pspoll(struct ieee80211_local *local, |
997 | struct ieee80211_sub_if_data *sdata); | 992 | struct ieee80211_sub_if_data *sdata); |
998 | void ieee80211_recalc_ps(struct ieee80211_local *local, s32 latency); | 993 | void ieee80211_recalc_ps(struct ieee80211_local *local, s32 latency); |
@@ -1005,12 +1000,13 @@ void ieee80211_sta_process_chanswitch(struct ieee80211_sub_if_data *sdata, | |||
1005 | u64 timestamp); | 1000 | u64 timestamp); |
1006 | void ieee80211_sta_quiesce(struct ieee80211_sub_if_data *sdata); | 1001 | void ieee80211_sta_quiesce(struct ieee80211_sub_if_data *sdata); |
1007 | void ieee80211_sta_restart(struct ieee80211_sub_if_data *sdata); | 1002 | void ieee80211_sta_restart(struct ieee80211_sub_if_data *sdata); |
1003 | void ieee80211_sta_work(struct ieee80211_sub_if_data *sdata); | ||
1004 | void ieee80211_sta_rx_queued_mgmt(struct ieee80211_sub_if_data *sdata, | ||
1005 | struct sk_buff *skb); | ||
1008 | 1006 | ||
1009 | /* IBSS code */ | 1007 | /* IBSS code */ |
1010 | void ieee80211_ibss_notify_scan_completed(struct ieee80211_local *local); | 1008 | void ieee80211_ibss_notify_scan_completed(struct ieee80211_local *local); |
1011 | void ieee80211_ibss_setup_sdata(struct ieee80211_sub_if_data *sdata); | 1009 | void ieee80211_ibss_setup_sdata(struct ieee80211_sub_if_data *sdata); |
1012 | ieee80211_rx_result | ||
1013 | ieee80211_ibss_rx_mgmt(struct ieee80211_sub_if_data *sdata, struct sk_buff *skb); | ||
1014 | struct sta_info *ieee80211_ibss_add_sta(struct ieee80211_sub_if_data *sdata, | 1010 | struct sta_info *ieee80211_ibss_add_sta(struct ieee80211_sub_if_data *sdata, |
1015 | u8 *bssid, u8 *addr, u32 supp_rates, | 1011 | u8 *bssid, u8 *addr, u32 supp_rates, |
1016 | gfp_t gfp); | 1012 | gfp_t gfp); |
@@ -1019,6 +1015,14 @@ int ieee80211_ibss_join(struct ieee80211_sub_if_data *sdata, | |||
1019 | int ieee80211_ibss_leave(struct ieee80211_sub_if_data *sdata); | 1015 | int ieee80211_ibss_leave(struct ieee80211_sub_if_data *sdata); |
1020 | void ieee80211_ibss_quiesce(struct ieee80211_sub_if_data *sdata); | 1016 | void ieee80211_ibss_quiesce(struct ieee80211_sub_if_data *sdata); |
1021 | void ieee80211_ibss_restart(struct ieee80211_sub_if_data *sdata); | 1017 | void ieee80211_ibss_restart(struct ieee80211_sub_if_data *sdata); |
1018 | void ieee80211_ibss_work(struct ieee80211_sub_if_data *sdata); | ||
1019 | void ieee80211_ibss_rx_queued_mgmt(struct ieee80211_sub_if_data *sdata, | ||
1020 | struct sk_buff *skb); | ||
1021 | |||
1022 | /* mesh code */ | ||
1023 | void ieee80211_mesh_work(struct ieee80211_sub_if_data *sdata); | ||
1024 | void ieee80211_mesh_rx_queued_mgmt(struct ieee80211_sub_if_data *sdata, | ||
1025 | struct sk_buff *skb); | ||
1022 | 1026 | ||
1023 | /* scan/BSS handling */ | 1027 | /* scan/BSS handling */ |
1024 | void ieee80211_scan_work(struct work_struct *work); | 1028 | void ieee80211_scan_work(struct work_struct *work); |
@@ -1102,6 +1106,8 @@ int ieee80211_send_smps_action(struct ieee80211_sub_if_data *sdata, | |||
1102 | enum ieee80211_smps_mode smps, const u8 *da, | 1106 | enum ieee80211_smps_mode smps, const u8 *da, |
1103 | const u8 *bssid); | 1107 | const u8 *bssid); |
1104 | 1108 | ||
1109 | void ___ieee80211_stop_rx_ba_session(struct sta_info *sta, u16 tid, | ||
1110 | u16 initiator, u16 reason); | ||
1105 | void __ieee80211_stop_rx_ba_session(struct sta_info *sta, u16 tid, | 1111 | void __ieee80211_stop_rx_ba_session(struct sta_info *sta, u16 tid, |
1106 | u16 initiator, u16 reason); | 1112 | u16 initiator, u16 reason); |
1107 | void ieee80211_sta_tear_down_BA_sessions(struct sta_info *sta); | 1113 | void ieee80211_sta_tear_down_BA_sessions(struct sta_info *sta); |
@@ -1121,6 +1127,10 @@ int __ieee80211_stop_tx_ba_session(struct sta_info *sta, u16 tid, | |||
1121 | enum ieee80211_back_parties initiator); | 1127 | enum ieee80211_back_parties initiator); |
1122 | int ___ieee80211_stop_tx_ba_session(struct sta_info *sta, u16 tid, | 1128 | int ___ieee80211_stop_tx_ba_session(struct sta_info *sta, u16 tid, |
1123 | enum ieee80211_back_parties initiator); | 1129 | enum ieee80211_back_parties initiator); |
1130 | void ieee80211_start_tx_ba_cb(struct ieee80211_vif *vif, u8 *ra, u16 tid); | ||
1131 | void ieee80211_stop_tx_ba_cb(struct ieee80211_vif *vif, u8 *ra, u8 tid); | ||
1132 | void ieee80211_ba_session_work(struct work_struct *work); | ||
1133 | void ieee80211_tx_ba_session_handle_start(struct sta_info *sta, int tid); | ||
1124 | 1134 | ||
1125 | /* Spectrum management */ | 1135 | /* Spectrum management */ |
1126 | void ieee80211_process_measurement_req(struct ieee80211_sub_if_data *sdata, | 1136 | void ieee80211_process_measurement_req(struct ieee80211_sub_if_data *sdata, |