diff mbox

mac80211: Always check rates and capabilities in mesh mode

Message ID CAAnMG+MdokAvP4YNHnPX+o+0vi2vDfYB8Bj0x-kSci0yDa+bEg@mail.gmail.com (mailing list archive)
State Changes Requested
Delegated to: Johannes Berg
Headers show

Commit Message

Alexis Green May 29, 2015, 10:24 p.m. UTC
In mesh mode there is a race between establishing links and processing rates
and capabilities in beacons. This is very noticeable with slow beacons (e.g.
beacon intervals of 1s) and manifested for us as stations using minstrel when
minstrel_ht should be used. Fixed by changing mesh_sta_info_init so that it
always checks rates and such if it has not already done so.

Signed-off-by: Alexis Green <agreen@cococorp.com>
CC: Jesse Jones <jjones@cococorp.com>

---

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Johannes Berg June 9, 2015, 7:44 p.m. UTC | #1
On Fri, 2015-05-29 at 15:24 -0700, Alexis Green wrote:
> In mesh mode there is a race between establishing links and processing rates
> and capabilities in beacons. This is very noticeable with slow beacons (e.g.
> beacon intervals of 1s) and manifested for us as stations using minstrel when
> minstrel_ht should be used. Fixed by changing mesh_sta_info_init so that it
> always checks rates and such if it has not already done so.
> 
> Signed-off-by: Alexis Green <agreen@cococorp.com>
> CC: Jesse Jones <jjones@cococorp.com>

This patch doesn't apply, it's line-broken and whitespace damaged.

johannes

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Alexis Green June 9, 2015, 7:45 p.m. UTC | #2
Will resend using a better mail client. Just found out that web-gmail is no-go.

On Tue, Jun 9, 2015 at 12:44 PM, Johannes Berg
<johannes@sipsolutions.net> wrote:
> On Fri, 2015-05-29 at 15:24 -0700, Alexis Green wrote:
>> In mesh mode there is a race between establishing links and processing rates
>> and capabilities in beacons. This is very noticeable with slow beacons (e.g.
>> beacon intervals of 1s) and manifested for us as stations using minstrel when
>> minstrel_ht should be used. Fixed by changing mesh_sta_info_init so that it
>> always checks rates and such if it has not already done so.
>>
>> Signed-off-by: Alexis Green <agreen@cococorp.com>
>> CC: Jesse Jones <jjones@cococorp.com>
>
> This patch doesn't apply, it's line-broken and whitespace damaged.
>
> johannes
>
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Kalle Valo June 10, 2015, 7:13 a.m. UTC | #3
Alexis Green <agreen@cococorp.com> writes:

> Will resend using a better mail client. Just found out that web-gmail is no-go.

Just use git send-email, anything else is waste of time IMHO.
diff mbox

Patch

diff --git a/net/mac80211/mesh_plink.c b/net/mac80211/mesh_plink.c
index ac843fc..4f9f23c 100644
--- a/net/mac80211/mesh_plink.c
+++ b/net/mac80211/mesh_plink.c
@@ -394,8 +394,9 @@  static void mesh_sta_info_init(struct
ieee80211_sub_if_data *sdata,
        sta->last_rx = jiffies;

        /* rates and capabilities don't change during peering */
-       if (sta->plink_state == NL80211_PLINK_ESTAB)
+       if (sta->plink_state == NL80211_PLINK_ESTAB && sta->processedBeacon)
                goto out;
+       sta->processedBeacon = true;

        if (sta->sta.supp_rates[band] != rates)
                changed |= IEEE80211_RC_SUPP_RATES_CHANGED;
diff --git a/net/mac80211/sta_info.h b/net/mac80211/sta_info.h
index 9bd1e97..e3ae2b0 100644
--- a/net/mac80211/sta_info.h
+++ b/net/mac80211/sta_info.h
@@ -369,6 +369,8 @@  struct ieee80211_fast_tx {
  * @rx_msdu: MSDUs received from this station, using IEEE80211_NUM_TID
  *     entry for non-QoS frames
  * @fast_tx: TX fastpath information
+ * @processedBeacon: set to true after peer rates and capabilities are
+ *     processed
  */
 struct sta_info {
        /* General information, mostly static */
@@ -473,6 +475,7 @@  struct sta_info {
        enum nl80211_mesh_power_mode local_pm;
        enum nl80211_mesh_power_mode peer_pm;
        enum nl80211_mesh_power_mode nonpeer_pm;
+       bool processedBeacon;
 #endif

 #ifdef CONFIG_MAC80211_DEBUGFS