Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mac80211: use timeout from the AddBA response instead of the request

2016 spec, section 10.24.2 specifies that the block ack
timeout in the ADD BA request is advisory.

That means we should check the value in the response and
act upon it (same as buffer size).

Signed-off-by: Sara Sharon <sara.sharon@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>

authored by

Sara Sharon and committed by
Johannes Berg
914eac24 407879b6

+6 -1
+4
net/mac80211/agg-tx.c
··· 8 8 * Copyright 2007, Michael Wu <flamingice@sourmilk.net> 9 9 * Copyright 2007-2010, Intel Corporation 10 10 * Copyright(c) 2015-2017 Intel Deutschland GmbH 11 + * Copyright (C) 2018 Intel Corporation 11 12 * 12 13 * This program is free software; you can redistribute it and/or modify 13 14 * it under the terms of the GNU General Public License version 2 as ··· 970 969 ieee80211_agg_tx_operational(local, sta, tid); 971 970 972 971 sta->ampdu_mlme.addba_req_num[tid] = 0; 972 + 973 + tid_tx->timeout = 974 + le16_to_cpu(mgmt->u.action.u.addba_resp.timeout); 973 975 974 976 if (tid_tx->timeout) { 975 977 mod_timer(&tid_tx->session_timer,
+2 -1
net/mac80211/tx.c
··· 4 4 * Copyright 2006-2007 Jiri Benc <jbenc@suse.cz> 5 5 * Copyright 2007 Johannes Berg <johannes@sipsolutions.net> 6 6 * Copyright 2013-2014 Intel Mobile Communications GmbH 7 + * Copyright (C) 2018 Intel Corporation 7 8 * 8 9 * This program is free software; you can redistribute it and/or modify 9 10 * it under the terms of the GNU General Public License version 2 as ··· 1136 1135 } 1137 1136 1138 1137 /* reset session timer */ 1139 - if (reset_agg_timer && tid_tx->timeout) 1138 + if (reset_agg_timer) 1140 1139 tid_tx->last_tx = jiffies; 1141 1140 1142 1141 return queued;