aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/ieee80211_i.h
diff options
context:
space:
mode:
authorJohannes Berg <johannes@sipsolutions.net>2007-12-18 20:03:33 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-28 18:09:38 -0500
commit5dfdaf58d61f06a458529430c24b1191ea4d1a27 (patch)
treebd3fac57f66e80bf2a31d253af19093f4020ba79 /net/mac80211/ieee80211_i.h
parent51fb61e76d952e6bc2fbdd9f0d38425fbab1cf31 (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.h14
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)
190typedef ieee80211_txrx_result (*ieee80211_rx_handler) 190typedef ieee80211_txrx_result (*ieee80211_rx_handler)
191(struct ieee80211_txrx_data *rx); 191(struct ieee80211_txrx_data *rx);
192 192
193struct beacon_data {
194 u8 *head, *tail;
195 int head_len, tail_len;
196 int dtim_period;
197};
198
193struct ieee80211_if_ap { 199struct 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;