mac80211: reject aggregation sessions with non-HT peers
If a peer or some local agent (rate control, ...) decides to start an aggregation session but doesn't support HT (which also implies QoS), reject it. This is mostly a corner case as such peers normally won't try to use block-ack sessions and rate control wouldn't start them, but technically QoS stations could request it according to the spec. However, since drivers don't really support such non-HT sessions it's better to reject them. Also, while at it, move the tracing for TX sessions earlier so it captures the error cases as well. Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
@@ -509,11 +509,14 @@ int ieee80211_start_tx_ba_session(struct ieee80211_sta *pubsta, u16 tid,
|
||||
struct tid_ampdu_tx *tid_tx;
|
||||
int ret = 0;
|
||||
|
||||
trace_api_start_tx_ba_session(pubsta, tid);
|
||||
|
||||
if (WARN(sta->reserved_tid == tid,
|
||||
"Requested to start BA session on reserved tid=%d", tid))
|
||||
return -EINVAL;
|
||||
|
||||
trace_api_start_tx_ba_session(pubsta, tid);
|
||||
if (!pubsta->ht_cap.ht_supported)
|
||||
return -EINVAL;
|
||||
|
||||
if (WARN_ON_ONCE(!local->ops->ampdu_action))
|
||||
return -EINVAL;
|
||||
|
Reference in New Issue
Block a user