diff options
author | Ron Rindjunsky <ron.rindjunsky@intel.com> | 2007-12-25 10:00:34 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-01-28 18:01:00 -0500 |
commit | 16c5f15c73e97e22a1fcc6518da32bdcf98aec3d (patch) | |
tree | df9d253ff8c85b093f28dc7aa1f89aef42e1f523 | |
parent | 07db218396650933abff3c5c1ad1e2a6e0cfedeb (diff) |
mac80211: A-MPDU Rx MLME data initialization
This patch initialize A-MPDU MLME data for Rx sessions.
Signed-off-by: Ron Rindjunsky <ron.rindjunsky@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/mac80211/sta_info.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c index 60ca07804056..1257c7aab2a5 100644 --- a/net/mac80211/sta_info.c +++ b/net/mac80211/sta_info.c | |||
@@ -136,6 +136,7 @@ struct sta_info * sta_info_add(struct ieee80211_local *local, | |||
136 | struct net_device *dev, u8 *addr, gfp_t gfp) | 136 | struct net_device *dev, u8 *addr, gfp_t gfp) |
137 | { | 137 | { |
138 | struct sta_info *sta; | 138 | struct sta_info *sta; |
139 | int i; | ||
139 | DECLARE_MAC_BUF(mac); | 140 | DECLARE_MAC_BUF(mac); |
140 | 141 | ||
141 | sta = kzalloc(sizeof(*sta), gfp); | 142 | sta = kzalloc(sizeof(*sta), gfp); |
@@ -155,6 +156,19 @@ struct sta_info * sta_info_add(struct ieee80211_local *local, | |||
155 | memcpy(sta->addr, addr, ETH_ALEN); | 156 | memcpy(sta->addr, addr, ETH_ALEN); |
156 | sta->local = local; | 157 | sta->local = local; |
157 | sta->dev = dev; | 158 | sta->dev = dev; |
159 | spin_lock_init(&sta->ampdu_mlme.ampdu_rx); | ||
160 | for (i = 0; i < STA_TID_NUM; i++) { | ||
161 | /* timer_to_tid must be initialized with identity mapping to | ||
162 | * enable session_timer's data differentiation. refer to | ||
163 | * sta_rx_agg_session_timer_expired for useage */ | ||
164 | sta->timer_to_tid[i] = i; | ||
165 | /* rx timers */ | ||
166 | sta->ampdu_mlme.tid_rx[i].session_timer.function = | ||
167 | sta_rx_agg_session_timer_expired; | ||
168 | sta->ampdu_mlme.tid_rx[i].session_timer.data = | ||
169 | (unsigned long)&sta->timer_to_tid[i]; | ||
170 | init_timer(&sta->ampdu_mlme.tid_rx[i].session_timer); | ||
171 | } | ||
158 | skb_queue_head_init(&sta->ps_tx_buf); | 172 | skb_queue_head_init(&sta->ps_tx_buf); |
159 | skb_queue_head_init(&sta->tx_filtered); | 173 | skb_queue_head_init(&sta->tx_filtered); |
160 | __sta_info_get(sta); /* sta used by caller, decremented by | 174 | __sta_info_get(sta); /* sta used by caller, decremented by |