diff options
author | Johannes Berg <johannes@sipsolutions.net> | 2007-12-18 20:03:33 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-01-28 18:09:38 -0500 |
commit | 5dfdaf58d61f06a458529430c24b1191ea4d1a27 (patch) | |
tree | bd3fac57f66e80bf2a31d253af19093f4020ba79 /net/mac80211/ieee80211_i.h | |
parent | 51fb61e76d952e6bc2fbdd9f0d38425fbab1cf31 (diff) |
mac80211: add beacon configuration via cfg80211
This patch implements the cfg80211 hooks for configuring beaconing
on an access point interface in mac80211. While doing so, it fixes
a number of races that could badly crash the machine when the
beacon is changed while being requested by the driver.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/ieee80211_i.h')
-rw-r--r-- | net/mac80211/ieee80211_i.h | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h index 91edaad4c620..08a6c0cff690 100644 --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h | |||
@@ -190,9 +190,14 @@ typedef ieee80211_txrx_result (*ieee80211_tx_handler) | |||
190 | typedef ieee80211_txrx_result (*ieee80211_rx_handler) | 190 | typedef ieee80211_txrx_result (*ieee80211_rx_handler) |
191 | (struct ieee80211_txrx_data *rx); | 191 | (struct ieee80211_txrx_data *rx); |
192 | 192 | ||
193 | struct beacon_data { | ||
194 | u8 *head, *tail; | ||
195 | int head_len, tail_len; | ||
196 | int dtim_period; | ||
197 | }; | ||
198 | |||
193 | struct ieee80211_if_ap { | 199 | struct ieee80211_if_ap { |
194 | u8 *beacon_head, *beacon_tail; | 200 | struct beacon_data *beacon; |
195 | int beacon_head_len, beacon_tail_len; | ||
196 | 201 | ||
197 | struct list_head vlans; | 202 | struct list_head vlans; |
198 | 203 | ||
@@ -205,7 +210,7 @@ struct ieee80211_if_ap { | |||
205 | u8 tim[sizeof(unsigned long) * BITS_TO_LONGS(IEEE80211_MAX_AID + 1)]; | 210 | u8 tim[sizeof(unsigned long) * BITS_TO_LONGS(IEEE80211_MAX_AID + 1)]; |
206 | atomic_t num_sta_ps; /* number of stations in PS mode */ | 211 | atomic_t num_sta_ps; /* number of stations in PS mode */ |
207 | struct sk_buff_head ps_bc_buf; | 212 | struct sk_buff_head ps_bc_buf; |
208 | int dtim_period, dtim_count; | 213 | int dtim_count; |
209 | int force_unicast_rateidx; /* forced TX rateidx for unicast frames */ | 214 | int force_unicast_rateidx; /* forced TX rateidx for unicast frames */ |
210 | int max_ratectrl_rateidx; /* max TX rateidx for rate control */ | 215 | int max_ratectrl_rateidx; /* max TX rateidx for rate control */ |
211 | int num_beacons; /* number of TXed beacon frames for this BSS */ | 216 | int num_beacons; /* number of TXed beacon frames for this BSS */ |
@@ -360,14 +365,11 @@ struct ieee80211_sub_if_data { | |||
360 | struct dentry *drop_unencrypted; | 365 | struct dentry *drop_unencrypted; |
361 | struct dentry *ieee802_1x_pac; | 366 | struct dentry *ieee802_1x_pac; |
362 | struct dentry *num_sta_ps; | 367 | struct dentry *num_sta_ps; |
363 | struct dentry *dtim_period; | ||
364 | struct dentry *dtim_count; | 368 | struct dentry *dtim_count; |
365 | struct dentry *num_beacons; | 369 | struct dentry *num_beacons; |
366 | struct dentry *force_unicast_rateidx; | 370 | struct dentry *force_unicast_rateidx; |
367 | struct dentry *max_ratectrl_rateidx; | 371 | struct dentry *max_ratectrl_rateidx; |
368 | struct dentry *num_buffered_multicast; | 372 | struct dentry *num_buffered_multicast; |
369 | struct dentry *beacon_head_len; | ||
370 | struct dentry *beacon_tail_len; | ||
371 | } ap; | 373 | } ap; |
372 | struct { | 374 | struct { |
373 | struct dentry *channel_use; | 375 | struct dentry *channel_use; |