aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211
diff options
context:
space:
mode:
Diffstat (limited to 'net/mac80211')
-rw-r--r--net/mac80211/agg-tx.c21
-rw-r--r--net/mac80211/ibss.c18
-rw-r--r--net/mac80211/util.c5
3 files changed, 44 insertions, 0 deletions
diff --git a/net/mac80211/agg-tx.c b/net/mac80211/agg-tx.c
index 2c2e9519a2e..9bfe28c9ab5 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 */
diff --git a/net/mac80211/ibss.c b/net/mac80211/ibss.c
index 7d84af70132..a82f6b4adb5 100644
--- a/net/mac80211/ibss.c
+++ b/net/mac80211/ibss.c
@@ -896,6 +896,7 @@ int ieee80211_ibss_join(struct ieee80211_sub_if_data *sdata,
896 struct cfg80211_ibss_params *params) 896 struct cfg80211_ibss_params *params)
897{ 897{
898 struct sk_buff *skb; 898 struct sk_buff *skb;
899 u32 changed = 0;
899 900
900 skb = dev_alloc_skb(sdata->local->hw.extra_tx_headroom + 901 skb = dev_alloc_skb(sdata->local->hw.extra_tx_headroom +
901 36 /* bitrates */ + 902 36 /* bitrates */ +
@@ -951,6 +952,23 @@ int ieee80211_ibss_join(struct ieee80211_sub_if_data *sdata,
951 ieee80211_recalc_idle(sdata->local); 952 ieee80211_recalc_idle(sdata->local);
952 mutex_unlock(&sdata->local->mtx); 953 mutex_unlock(&sdata->local->mtx);
953 954
955 /*
956 * 802.11n-2009 9.13.3.1: In an IBSS, the HT Protection field is
957 * reserved, but an HT STA shall protect HT transmissions as though
958 * the HT Protection field were set to non-HT mixed mode.
959 *
960 * In an IBSS, the RIFS Mode field of the HT Operation element is
961 * also reserved, but an HT STA shall operate as though this field
962 * were set to 1.
963 */
964
965 sdata->vif.bss_conf.ht_operation_mode |=
966 IEEE80211_HT_OP_MODE_PROTECTION_NONHT_MIXED
967 | IEEE80211_HT_PARAM_RIFS_MODE;
968
969 changed |= BSS_CHANGED_HT;
970 ieee80211_bss_info_change_notify(sdata, changed);
971
954 ieee80211_queue_work(&sdata->local->hw, &sdata->work); 972 ieee80211_queue_work(&sdata->local->hw, &sdata->work);
955 973
956 return 0; 974 return 0;
diff --git a/net/mac80211/util.c b/net/mac80211/util.c
index 5243c2cadee..ac7ea2949de 100644
--- a/net/mac80211/util.c
+++ b/net/mac80211/util.c
@@ -1587,6 +1587,11 @@ u8 *ieee80211_ie_build_ht_info(u8 *pos,
1587 } 1587 }
1588 if (ht_cap->cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40) 1588 if (ht_cap->cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40)
1589 ht_info->ht_param |= IEEE80211_HT_PARAM_CHAN_WIDTH_ANY; 1589 ht_info->ht_param |= IEEE80211_HT_PARAM_CHAN_WIDTH_ANY;
1590
1591 /*
1592 * Note: According to 802.11n-2009 9.13.3.1, HT Protection field and
1593 * RIFS Mode are reserved in IBSS mode, therefore keep them at 0
1594 */
1590 ht_info->operation_mode = 0x0000; 1595 ht_info->operation_mode = 0x0000;
1591 ht_info->stbc_param = 0x0000; 1596 ht_info->stbc_param = 0x0000;
1592 1597