diff options
Diffstat (limited to 'net/mac80211/agg-rx.c')
| -rw-r--r-- | net/mac80211/agg-rx.c | 8 | 
1 files changed, 5 insertions, 3 deletions
| diff --git a/net/mac80211/agg-rx.c b/net/mac80211/agg-rx.c index 5c564a68fb50..10ad4ac1fa0b 100644 --- a/net/mac80211/agg-rx.c +++ b/net/mac80211/agg-rx.c @@ -79,7 +79,7 @@ void ___ieee80211_stop_rx_ba_session(struct sta_info *sta, u16 tid,  	       (int)reason);  	if (drv_ampdu_action(local, sta->sdata, IEEE80211_AMPDU_RX_STOP, -			     &sta->sta, tid, NULL, 0)) +			     &sta->sta, tid, NULL, 0, false))  		sdata_info(sta->sdata,  			   "HW problem - can not stop rx aggregation for %pM tid %d\n",  			   sta->sta.addr, tid); @@ -189,6 +189,7 @@ static void ieee80211_send_addba_resp(struct ieee80211_sub_if_data *sdata, u8 *d  	struct ieee80211_local *local = sdata->local;  	struct sk_buff *skb;  	struct ieee80211_mgmt *mgmt; +	bool amsdu = ieee80211_hw_check(&local->hw, SUPPORTS_AMSDU_IN_AMPDU);  	u16 capab;  	skb = dev_alloc_skb(sizeof(*mgmt) + local->hw.extra_tx_headroom); @@ -217,7 +218,8 @@ static void ieee80211_send_addba_resp(struct ieee80211_sub_if_data *sdata, u8 *d  	mgmt->u.action.u.addba_resp.action_code = WLAN_ACTION_ADDBA_RESP;  	mgmt->u.action.u.addba_resp.dialog_token = dialog_token; -	capab = (u16)(policy << 1);	/* bit 1 aggregation policy */ +	capab = (u16)(amsdu << 0);	/* bit 0 A-MSDU support */ +	capab |= (u16)(policy << 1);	/* bit 1 aggregation policy */  	capab |= (u16)(tid << 2); 	/* bit 5:2 TID number */  	capab |= (u16)(buf_size << 6);	/* bit 15:6 max size of aggregation */ @@ -321,7 +323,7 @@ void __ieee80211_start_rx_ba_session(struct sta_info *sta,  		__skb_queue_head_init(&tid_agg_rx->reorder_buf[i]);  	ret = drv_ampdu_action(local, sta->sdata, IEEE80211_AMPDU_RX_START, -			       &sta->sta, tid, &start_seq_num, 0); +			       &sta->sta, tid, &start_seq_num, 0, false);  	ht_dbg(sta->sdata, "Rx A-MPDU request on %pM tid %d result %d\n",  	       sta->sta.addr, tid, ret);  	if (ret) { |