When we create an IBSS we are can define the basic rates according to the band in use. Previously only the B mode rates (1 and 2Mbps) were used unconditionally, which resulted in low thruput when using RTS/CTS. Also we should save the IBSS basic rates configuration when we join an IBSS. Signed-off-by: Bruno Randolf <br1@xxxxxxxxxxx> --- net/mac80211/ibss.c | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-) diff --git a/net/mac80211/ibss.c b/net/mac80211/ibss.c index 01974c2..05846ab 100644 --- a/net/mac80211/ibss.c +++ b/net/mac80211/ibss.c @@ -77,6 +77,10 @@ static void __ieee80211_sta_join_ibss(struct ieee80211_sub_if_data *sdata, u32 bss_change; u8 supp_rates[IEEE80211_MAX_SUPP_RATES]; +#ifdef CONFIG_MAC80211_IBSS_DEBUG + printk(KERN_DEBUG "JOIN IBSS basic_rates %x\n", basic_rates); +#endif + /* Reset own TSF to allow time synchronization work. */ drv_reset_tsf(local); @@ -165,6 +169,7 @@ static void __ieee80211_sta_join_ibss(struct ieee80211_sub_if_data *sdata, rcu_assign_pointer(ifibss->presp, skb); sdata->vif.bss_conf.beacon_int = beacon_int; + sdata->vif.bss_conf.basic_rates = basic_rates; bss_change = BSS_CHANGED_BEACON_INT; bss_change |= ieee80211_reset_erp_info(sdata); bss_change |= BSS_CHANGED_BSSID; @@ -518,7 +523,8 @@ static void ieee80211_sta_create_ibss(struct ieee80211_sub_if_data *sdata) sdata->drop_unencrypted = 0; __ieee80211_sta_join_ibss(sdata, bssid, sdata->vif.bss_conf.beacon_int, - ifibss->channel, 3, /* first two are basic */ + ifibss->channel, + ieee80211_mandatory_rates(local, sband->band), capability, 0); } -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html