aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/ieee80211_i.h
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2010-06-17 17:19:06 -0400
committerDavid S. Miller <davem@davemloft.net>2010-06-17 17:19:06 -0400
commitbb9c03d8a6893517737b16fdbeb54be3c73b3023 (patch)
tree35fa0d1defaaf94641963a49126d7bb475ffa4c6 /net/mac80211/ieee80211_i.h
parent4de57826810fd2cfeb2ab5c7d003ff9116b8f7ee (diff)
parentabf52f86aa0a49a7377350cafa8f218c4cd227e7 (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.h66
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
387struct ieee80211_if_ibss { 384struct 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
418struct ieee80211_if_mesh { 414struct 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
571enum 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
572enum { 577enum {
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
579enum queue_stop_reason { 582enum 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 */
879struct ieee80211_ra_tid { 882struct 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,
986int ieee80211_mgd_disassoc(struct ieee80211_sub_if_data *sdata, 988int 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);
989int 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);
994ieee80211_rx_result ieee80211_sta_rx_mgmt(struct ieee80211_sub_if_data *sdata,
995 struct sk_buff *skb);
996void ieee80211_send_pspoll(struct ieee80211_local *local, 991void ieee80211_send_pspoll(struct ieee80211_local *local,
997 struct ieee80211_sub_if_data *sdata); 992 struct ieee80211_sub_if_data *sdata);
998void ieee80211_recalc_ps(struct ieee80211_local *local, s32 latency); 993void 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);
1006void ieee80211_sta_quiesce(struct ieee80211_sub_if_data *sdata); 1001void ieee80211_sta_quiesce(struct ieee80211_sub_if_data *sdata);
1007void ieee80211_sta_restart(struct ieee80211_sub_if_data *sdata); 1002void ieee80211_sta_restart(struct ieee80211_sub_if_data *sdata);
1003void ieee80211_sta_work(struct ieee80211_sub_if_data *sdata);
1004void ieee80211_sta_rx_queued_mgmt(struct ieee80211_sub_if_data *sdata,
1005 struct sk_buff *skb);
1008 1006
1009/* IBSS code */ 1007/* IBSS code */
1010void ieee80211_ibss_notify_scan_completed(struct ieee80211_local *local); 1008void ieee80211_ibss_notify_scan_completed(struct ieee80211_local *local);
1011void ieee80211_ibss_setup_sdata(struct ieee80211_sub_if_data *sdata); 1009void ieee80211_ibss_setup_sdata(struct ieee80211_sub_if_data *sdata);
1012ieee80211_rx_result
1013ieee80211_ibss_rx_mgmt(struct ieee80211_sub_if_data *sdata, struct sk_buff *skb);
1014struct sta_info *ieee80211_ibss_add_sta(struct ieee80211_sub_if_data *sdata, 1010struct 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,
1019int ieee80211_ibss_leave(struct ieee80211_sub_if_data *sdata); 1015int ieee80211_ibss_leave(struct ieee80211_sub_if_data *sdata);
1020void ieee80211_ibss_quiesce(struct ieee80211_sub_if_data *sdata); 1016void ieee80211_ibss_quiesce(struct ieee80211_sub_if_data *sdata);
1021void ieee80211_ibss_restart(struct ieee80211_sub_if_data *sdata); 1017void ieee80211_ibss_restart(struct ieee80211_sub_if_data *sdata);
1018void ieee80211_ibss_work(struct ieee80211_sub_if_data *sdata);
1019void ieee80211_ibss_rx_queued_mgmt(struct ieee80211_sub_if_data *sdata,
1020 struct sk_buff *skb);
1021
1022/* mesh code */
1023void ieee80211_mesh_work(struct ieee80211_sub_if_data *sdata);
1024void 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 */
1024void ieee80211_scan_work(struct work_struct *work); 1028void 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
1109void ___ieee80211_stop_rx_ba_session(struct sta_info *sta, u16 tid,
1110 u16 initiator, u16 reason);
1105void __ieee80211_stop_rx_ba_session(struct sta_info *sta, u16 tid, 1111void __ieee80211_stop_rx_ba_session(struct sta_info *sta, u16 tid,
1106 u16 initiator, u16 reason); 1112 u16 initiator, u16 reason);
1107void ieee80211_sta_tear_down_BA_sessions(struct sta_info *sta); 1113void 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);
1122int ___ieee80211_stop_tx_ba_session(struct sta_info *sta, u16 tid, 1128int ___ieee80211_stop_tx_ba_session(struct sta_info *sta, u16 tid,
1123 enum ieee80211_back_parties initiator); 1129 enum ieee80211_back_parties initiator);
1130void ieee80211_start_tx_ba_cb(struct ieee80211_vif *vif, u8 *ra, u16 tid);
1131void ieee80211_stop_tx_ba_cb(struct ieee80211_vif *vif, u8 *ra, u8 tid);
1132void ieee80211_ba_session_work(struct work_struct *work);
1133void ieee80211_tx_ba_session_handle_start(struct sta_info *sta, int tid);
1124 1134
1125/* Spectrum management */ 1135/* Spectrum management */
1126void ieee80211_process_measurement_req(struct ieee80211_sub_if_data *sdata, 1136void ieee80211_process_measurement_req(struct ieee80211_sub_if_data *sdata,