linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Adam Wozniak <awozniak@irobot.com>
To: Christian Lamparter <chunkeey@googlemail.com>
Cc: Derek Smithies <derek@indranet.co.nz>,
	linux-wireless@vger.kernel.org, nbd@openwrt.org
Subject: Re: compat-wireless and minstrel
Date: Thu, 12 Nov 2009 14:41:17 -0800	[thread overview]
Message-ID: <4AFC8F0D.5020700@irobot.com> (raw)
In-Reply-To: <4AFC8E4F.5090307@irobot.com>

Whoops, patch was slightly incorrect.  This is better:

*** compat-wireless-2009-11-09/net/mac80211/ibss.c    2009-11-08 
21:15:06.000000000 -0800
--- compat-wireless-2009-11-09b/net/mac80211/ibss.c    2009-11-12 
14:39:12.391545084 -0800
***************
*** 246,254 ****
      if (!channel || channel->flags & IEEE80211_CHAN_DISABLED)
          return;
 
      if (sdata->vif.type == NL80211_IFTYPE_ADHOC && elems->supp_rates &&
          memcmp(mgmt->bssid, sdata->u.ibss.bssid, ETH_ALEN) == 0) {
-         supp_rates = ieee80211_sta_get_rates(local, elems, band);
 
          rcu_read_lock();
 
--- 246,258 ----
      if (!channel || channel->flags & IEEE80211_CHAN_DISABLED)
          return;
 
+     supp_rates = ieee80211_sta_get_rates(local, elems, band);
+
+     /* make sure mandatory rates are always added */
+     supp_rates = supp_rates |= ieee80211_mandatory_rates(local, band);
+
      if (sdata->vif.type == NL80211_IFTYPE_ADHOC && elems->supp_rates &&
          memcmp(mgmt->bssid, sdata->u.ibss.bssid, ETH_ALEN) == 0) {
 
          rcu_read_lock();
 
***************
*** 257,268 ****
              u32 prev_rates;
 
              prev_rates = sta->sta.supp_rates[band];
!             /* make sure mandatory rates are always added */
!             sta->sta.supp_rates[band] = supp_rates |
!                 ieee80211_mandatory_rates(local, band);
 
  #ifdef CONFIG_MAC80211_IBSS_DEBUG
-             if (sta->sta.supp_rates[band] != prev_rates)
                  printk(KERN_DEBUG "%s: updated supp_rates set "
                      "for %pM based on beacon info (0x%llx | "
                      "0x%llx -> 0x%llx)\n",
--- 261,270 ----
              u32 prev_rates;
 
              prev_rates = sta->sta.supp_rates[band];
!             sta->sta.supp_rates[band] = supp_rates;
 
+             if (sta->sta.supp_rates[band] != prev_rates) {
  #ifdef CONFIG_MAC80211_IBSS_DEBUG
                  printk(KERN_DEBUG "%s: updated supp_rates set "
                      "for %pM based on beacon info (0x%llx | "
                      "0x%llx -> 0x%llx)\n",
***************
*** 272,277 ****
--- 274,285 ----
                      (unsigned long long) supp_rates,
                      (unsigned long long) sta->sta.supp_rates[band]);
  #endif
+
+                 /* TODO: implement rate_update in minstrel/pid,
+                  * then change this to rate_control_rate_update.
+                  */
+                 rate_control_rate_init(sta);
+             }
          } else
              ieee80211_ibss_add_sta(sdata, mgmt->bssid, mgmt->sa, 
supp_rates);
 



Adam Wozniak wrote:
> I see what you're doing there.  That didn't quite work, but I'm fairly 
> confident this one will.  I'm running my long term test now.  Note the 
> added call to rate_control_init() when the rate is updated.  This 
> *should* be rate_control_rate_update, but it doesn't look to me like 
> that method is implemented in minstrel or the PID code.
>
> *** compat-wireless-2009-11-09/net/mac80211/ibss.c    2009-11-08 
> 21:15:06.000000000 -0800
> --- compat-wireless-2009-11-09b/net/mac80211/ibss.c    2009-11-12 
> 14:29:16.308550923 -0800
> ***************
> *** 246,254 ****
>      if (!channel || channel->flags & IEEE80211_CHAN_DISABLED)
>          return;
>
>      if (sdata->vif.type == NL80211_IFTYPE_ADHOC && elems->supp_rates &&
>          memcmp(mgmt->bssid, sdata->u.ibss.bssid, ETH_ALEN) == 0) {
> -         supp_rates = ieee80211_sta_get_rates(local, elems, band);
>
>          rcu_read_lock();
>
> --- 246,258 ----
>      if (!channel || channel->flags & IEEE80211_CHAN_DISABLED)
>          return;
>
> +     supp_rates = ieee80211_sta_get_rates(local, elems, band);
> +
> +     /* make sure mandatory rates are always added */
> +     supp_rates = supp_rates |= ieee80211_mandatory_rates(local, band);
> +
>      if (sdata->vif.type == NL80211_IFTYPE_ADHOC && elems->supp_rates &&
>          memcmp(mgmt->bssid, sdata->u.ibss.bssid, ETH_ALEN) == 0) {
>
>          rcu_read_lock();
>
> ***************
> *** 257,268 ****
>              u32 prev_rates;
>
>              prev_rates = sta->sta.supp_rates[band];
> !             /* make sure mandatory rates are always added */
> !             sta->sta.supp_rates[band] = supp_rates |
> !                 ieee80211_mandatory_rates(local, band);
>
>  #ifdef CONFIG_MAC80211_IBSS_DEBUG
> !             if (sta->sta.supp_rates[band] != prev_rates)
>                  printk(KERN_DEBUG "%s: updated supp_rates set "
>                      "for %pM based on beacon info (0x%llx | "
>                      "0x%llx -> 0x%llx)\n",
> --- 261,270 ----
>              u32 prev_rates;
>
>              prev_rates = sta->sta.supp_rates[band];
> !             sta->sta.supp_rates[band] = supp_rates;
>
>  #ifdef CONFIG_MAC80211_IBSS_DEBUG
> !             if (sta->sta.supp_rates[band] != prev_rates) {
>                  printk(KERN_DEBUG "%s: updated supp_rates set "
>                      "for %pM based on beacon info (0x%llx | "
>                      "0x%llx -> 0x%llx)\n",
> ***************
> *** 271,276 ****
> --- 273,284 ----
>                      (unsigned long long) prev_rates,
>                      (unsigned long long) supp_rates,
>                      (unsigned long long) sta->sta.supp_rates[band]);
> +
> +                 /* TODO: implement rate_update in minstrel/pid,
> +                  * then change this to rate_control_rate_update.
> +                  */
> +                 rate_control_rate_init(sta);
> +             }
>  #endif
>          } else
>              ieee80211_ibss_add_sta(sdata, mgmt->bssid, mgmt->sa, 
> supp_rates);
>
>
>
> Christian Lamparter wrote:
>> On Thursday 12 November 2009 20:43:22 Adam Wozniak wrote:
>>  
>>> I was hoping for more of an "ah-ha!" response. =)
>>>
>>> It worked well initially, but when I let it run overnight it fell 
>>> back into that same failure mode.
>>>
>>>     
>>
>> great... :\
>>
>> what about this patch?
>> ---
>> diff --git a/net/mac80211/ibss.c b/net/mac80211/ibss.c
>> index fbffce9..bde89f7 100644
>> --- a/net/mac80211/ibss.c
>> +++ b/net/mac80211/ibss.c
>> @@ -250,6 +250,9 @@ static void ieee80211_rx_bss_info(struct 
>> ieee80211_sub_if_data *sdata,
>>          memcmp(mgmt->bssid, sdata->u.ibss.bssid, ETH_ALEN) == 0) {
>>          supp_rates = ieee80211_sta_get_rates(local, elems, band);
>>  
>> +        /* make sure mandatory rates are always added */
>> +        supp_rates |= ieee80211_mandatory_rates(local, band);
>> +
>>          rcu_read_lock();
>>  
>>          sta = sta_info_get(local, mgmt->sa);
>> @@ -257,9 +260,7 @@ static void ieee80211_rx_bss_info(struct 
>> ieee80211_sub_if_data *sdata,
>>              u32 prev_rates;
>>  
>>              prev_rates = sta->sta.supp_rates[band];
>> -            /* make sure mandatory rates are always added */
>> -            sta->sta.supp_rates[band] = supp_rates |
>> -                ieee80211_mandatory_rates(local, band);
>> +            sta->sta.supp_rates[band] = supp_rates;
>>  
>>  #ifdef CONFIG_MAC80211_IBSS_DEBUG
>>              if (sta->sta.supp_rates[band] != prev_rates)
>>   
>
> -- 
> 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


  reply	other threads:[~2009-11-12 22:41 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-11-04  1:13 compat-wireless and minstrel Adam Wozniak
2009-11-04 15:53 ` Christian Lamparter
2009-11-04 15:57   ` Luis R. Rodriguez
2009-11-04 21:01   ` Derek Smithies
2009-11-04 21:42     ` Christian Lamparter
2009-11-04 21:46       ` Adam Wozniak
2009-11-04 21:50         ` Luis R. Rodriguez
2009-11-04 21:53           ` Adam Wozniak
2009-11-04 21:55             ` Luis R. Rodriguez
2009-11-04 22:18           ` Christian Lamparter
2009-11-04 22:20             ` Luis R. Rodriguez
2009-11-04 22:31               ` Christian Lamparter
2009-11-04 22:34                 ` Luis R. Rodriguez
2009-11-10 22:59     ` Adam Wozniak
2009-11-11  0:55       ` Derek Smithies
2009-11-11  1:08         ` Adam Wozniak
2009-11-11  2:09           ` Derek Smithies
2009-11-12 19:43             ` Adam Wozniak
2009-11-12 20:03               ` Christian Lamparter
2009-11-12 22:38                 ` Adam Wozniak
2009-11-12 22:41                   ` Adam Wozniak [this message]
2009-11-13  7:29                     ` Johannes Berg
2009-11-13 22:35                       ` Adam Wozniak
2009-11-14  9:30                         ` Johannes Berg
2009-11-16 17:25                           ` Adam Wozniak
2009-11-16 17:27                             ` Johannes Berg
2009-11-16 17:57                               ` Adam Wozniak
2009-11-16 18:07                                 ` Johannes Berg
2009-11-16 21:02                                 ` Adhoc networking, was " Derek Smithies
2009-11-16 22:39                                   ` Adam Wozniak
2009-11-16 23:13                                     ` Derek Smithies
2009-11-16 23:39                                       ` Adam Wozniak
2009-11-16 23:43                                         ` Felix Fietkau
2009-11-17  0:20                                         ` Derek Smithies
2009-11-17  7:38                                           ` Johannes Berg
2009-11-17 17:39                                             ` Adam Wozniak
2009-11-23 20:21                                               ` Adam Wozniak
2009-11-23 23:27                                                 ` Johannes Berg
2009-11-24  0:57                                                   ` [PATCH 0/2] mac80211: IBSS rates Adam Wozniak
2009-11-24 17:05                                                     ` [PATCH v2 " Adam Wozniak
2009-11-24  0:57                                                   ` [PATCH 1/2] mac80211: supp_rates initialization and rate control notification Adam Wozniak
2009-11-24  1:16                                                     ` Johannes Berg
2009-11-24 17:05                                                     ` [PATCH v2 " Adam Wozniak
2009-11-24 17:13                                                       ` Johannes Berg
2009-11-24  0:57                                                   ` [PATCH 2/2] mac80211: minstrel try all rates Adam Wozniak
2009-11-24  1:11                                                     ` Johannes Berg
2009-11-24 16:13                                                       ` Adam Wozniak
2009-11-24 16:17                                                         ` Adam Wozniak
2009-11-24 17:17                                                       ` Adam Wozniak
2009-11-24 17:41                                                         ` Johannes Berg
2009-11-24 17:55                                                           ` Adam Wozniak
2009-11-24 17:58                                                             ` Johannes Berg
2009-11-24 18:34                                                               ` Adam Wozniak
2009-11-24 18:36                                                                 ` Johannes Berg
2009-11-24 18:43                                                                   ` Adam Wozniak
2009-11-24 19:00                                                                     ` Johannes Berg
2009-11-24 19:44                                                                       ` Adam Wozniak
2009-11-24 19:47                                                                         ` Johannes Berg
2009-11-24 19:58                                                                           ` Adam Wozniak
2009-11-24 17:05                                                     ` [PATCH v2 " Adam Wozniak
2009-11-24 17:14                                                       ` Johannes Berg
2009-11-12 23:35                   ` compat-wireless and minstrel Christian Lamparter
2009-11-13  0:25                     ` Adam Wozniak
2009-11-13  0:32                     ` Adam Wozniak

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4AFC8F0D.5020700@irobot.com \
    --to=awozniak@irobot.com \
    --cc=chunkeey@googlemail.com \
    --cc=derek@indranet.co.nz \
    --cc=linux-wireless@vger.kernel.org \
    --cc=nbd@openwrt.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).