aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/agg-tx.c
diff options
context:
space:
mode:
authorSimon Wunderlich <simon.wunderlich@s2003.tu-chemnitz.de>2011-11-30 10:56:33 -0500
committerJohn W. Linville <linville@tuxdriver.com>2011-12-06 16:05:25 -0500
commitff3cc5f40f36db1a60a8f1051be7fbc92233419b (patch)
tree9348704f13be3aa3985aa1dc54cb8bf7e4d9af32 /net/mac80211/agg-tx.c
parent54858ee5bf659f80a784303e41ee8898fd163f98 (diff)
mac80211: handle protection mode, RIFS and ADDBA for HT IBSS
* Follow 802.11n-2009 9.13.3.1 for protection mode and ADDBA * Send ADDBA only to HT STAs - implement 11.5.1.1 partially Signed-off-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de> Signed-off-by: Mathias Kretschmer <mathias.kretschmer@fokus.fraunhofer.de> Reviewed-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/agg-tx.c')
-rw-r--r--net/mac80211/agg-tx.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/net/mac80211/agg-tx.c b/net/mac80211/agg-tx.c
index 2c2e9519a2e7..9bfe28c9ab59 100644
--- a/net/mac80211/agg-tx.c
+++ b/net/mac80211/agg-tx.c
@@ -430,6 +430,27 @@ int ieee80211_start_tx_ba_session(struct ieee80211_sta *pubsta, u16 tid,
430 return -EINVAL; 430 return -EINVAL;
431 } 431 }
432 432
433 /*
434 * 802.11n-2009 11.5.1.1: If the initiating STA is an HT STA, is a
435 * member of an IBSS, and has no other existing Block Ack agreement
436 * with the recipient STA, then the initiating STA shall transmit a
437 * Probe Request frame to the recipient STA and shall not transmit an
438 * ADDBA Request frame unless it receives a Probe Response frame
439 * from the recipient within dot11ADDBAFailureTimeout.
440 *
441 * The probe request mechanism for ADDBA is currently not implemented,
442 * but we only build up Block Ack session with HT STAs. This information
443 * is set when we receive a bss info from a probe response or a beacon.
444 */
445 if (sta->sdata->vif.type == NL80211_IFTYPE_ADHOC &&
446 !sta->sta.ht_cap.ht_supported) {
447#ifdef CONFIG_MAC80211_HT_DEBUG
448 printk(KERN_DEBUG "BA request denied - IBSS STA %pM"
449 "does not advertise HT support\n", pubsta->addr);
450#endif /* CONFIG_MAC80211_HT_DEBUG */
451 return -EINVAL;
452 }
453
433 spin_lock_bh(&sta->lock); 454 spin_lock_bh(&sta->lock);
434 455
435 /* we have tried too many times, receiver does not want A-MPDU */ 456 /* we have tried too many times, receiver does not want A-MPDU */