diff options
Diffstat (limited to 'net/mac80211/agg-rx.c')
-rw-r--r-- | net/mac80211/agg-rx.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/net/mac80211/agg-rx.c b/net/mac80211/agg-rx.c index ce8e0e772bab..51c7dc3c4c3b 100644 --- a/net/mac80211/agg-rx.c +++ b/net/mac80211/agg-rx.c | |||
@@ -41,7 +41,8 @@ void __ieee80211_stop_rx_ba_session(struct sta_info *sta, u16 tid, | |||
41 | sta->sta.addr, tid); | 41 | sta->sta.addr, tid); |
42 | #endif /* CONFIG_MAC80211_HT_DEBUG */ | 42 | #endif /* CONFIG_MAC80211_HT_DEBUG */ |
43 | 43 | ||
44 | if (drv_ampdu_action(local, IEEE80211_AMPDU_RX_STOP, | 44 | if (drv_ampdu_action(local, &sta->sdata->vif, |
45 | IEEE80211_AMPDU_RX_STOP, | ||
45 | &sta->sta, tid, NULL)) | 46 | &sta->sta, tid, NULL)) |
46 | printk(KERN_DEBUG "HW problem - can not stop rx " | 47 | printk(KERN_DEBUG "HW problem - can not stop rx " |
47 | "aggregation for tid %d\n", tid); | 48 | "aggregation for tid %d\n", tid); |
@@ -166,7 +167,7 @@ static void ieee80211_send_addba_resp(struct ieee80211_sub_if_data *sdata, u8 *d | |||
166 | mgmt->u.action.u.addba_resp.timeout = cpu_to_le16(timeout); | 167 | mgmt->u.action.u.addba_resp.timeout = cpu_to_le16(timeout); |
167 | mgmt->u.action.u.addba_resp.status = cpu_to_le16(status); | 168 | mgmt->u.action.u.addba_resp.status = cpu_to_le16(status); |
168 | 169 | ||
169 | ieee80211_tx_skb(sdata, skb, 1); | 170 | ieee80211_tx_skb(sdata, skb); |
170 | } | 171 | } |
171 | 172 | ||
172 | void ieee80211_process_addba_request(struct ieee80211_local *local, | 173 | void ieee80211_process_addba_request(struct ieee80211_local *local, |
@@ -206,9 +207,9 @@ void ieee80211_process_addba_request(struct ieee80211_local *local, | |||
206 | * check if configuration can support the BA policy | 207 | * check if configuration can support the BA policy |
207 | * and if buffer size does not exceeds max value */ | 208 | * and if buffer size does not exceeds max value */ |
208 | /* XXX: check own ht delayed BA capability?? */ | 209 | /* XXX: check own ht delayed BA capability?? */ |
209 | if (((ba_policy != 1) | 210 | if (((ba_policy != 1) && |
210 | && (!(sta->sta.ht_cap.cap & IEEE80211_HT_CAP_DELAY_BA))) | 211 | (!(sta->sta.ht_cap.cap & IEEE80211_HT_CAP_DELAY_BA))) || |
211 | || (buf_size > IEEE80211_MAX_AMPDU_BUF)) { | 212 | (buf_size > IEEE80211_MAX_AMPDU_BUF)) { |
212 | status = WLAN_STATUS_INVALID_QOS_PARAM; | 213 | status = WLAN_STATUS_INVALID_QOS_PARAM; |
213 | #ifdef CONFIG_MAC80211_HT_DEBUG | 214 | #ifdef CONFIG_MAC80211_HT_DEBUG |
214 | if (net_ratelimit()) | 215 | if (net_ratelimit()) |
@@ -280,7 +281,8 @@ void ieee80211_process_addba_request(struct ieee80211_local *local, | |||
280 | goto end; | 281 | goto end; |
281 | } | 282 | } |
282 | 283 | ||
283 | ret = drv_ampdu_action(local, IEEE80211_AMPDU_RX_START, | 284 | ret = drv_ampdu_action(local, &sta->sdata->vif, |
285 | IEEE80211_AMPDU_RX_START, | ||
284 | &sta->sta, tid, &start_seq_num); | 286 | &sta->sta, tid, &start_seq_num); |
285 | #ifdef CONFIG_MAC80211_HT_DEBUG | 287 | #ifdef CONFIG_MAC80211_HT_DEBUG |
286 | printk(KERN_DEBUG "Rx A-MPDU request on tid %d result %d\n", tid, ret); | 288 | printk(KERN_DEBUG "Rx A-MPDU request on tid %d result %d\n", tid, ret); |