Linux wireless drivers development
 help / color / mirror / Atom feed
From: Jouni Malinen <j@w1.fi>
To: Johannes Berg <johannes@sipsolutions.net>
Cc: Jouni Malinen <jouni.malinen@atheros.com>,
	"John W. Linville" <linville@tuxdriver.com>,
	linux-wireless@vger.kernel.org
Subject: Re: [PATCH 2/3] cfg80211/mac80211: Use more generic bitrate mask for rate control
Date: Tue, 5 Jan 2010 19:58:49 +0200	[thread overview]
Message-ID: <20100105175849.GB12811@jm.kir.nu> (raw)
In-Reply-To: <1262684199.20098.19.camel@johannes.local>

On Tue, Jan 05, 2010 at 10:36:39AM +0100, Johannes Berg wrote:
> On Tue, 2009-12-29 at 12:59 +0200, Jouni Malinen wrote:
> >  	/*
> > -	 * try to enforce the maximum rate the user wanted
> > +	 * try to enforce the rateidx mask the user wanted
> >  	 */
> > -	if (sdata->max_ratectrl_rateidx > -1)
> > +	mask = sdata->rc_rateidx_mask[info->band];
> > +	if (mask != (1 << txrc->sband->n_bitrates) - 1) {
> > +		if (sta)
> > +			mask &= sta->sta.supp_rates[info->band];
> >  		for (i = 0; i < IEEE80211_TX_MAX_RATES; i++) {
> >  			if (info->control.rates[i].flags & IEEE80211_TX_RC_MCS)
> >  				continue;
> > -			info->control.rates[i].idx =
> > -				min_t(s8, info->control.rates[i].idx,
> > -				      sdata->max_ratectrl_rateidx);
> > +			for (j = info->control.rates[i].idx;
> > +			     j < txrc->sband->n_bitrates; j++) {
> > +				if (mask & (1 << j)) {
> > +					info->control.rates[i].idx = j;
> > +					break;
> > +				}
> > +			}
> 
> This could benefit from some comments :) I'm having trouble to see that
> it's correct, but the min_t probably makes it correct?

min_t? The one that was removed? ;-) In theory, this was supposed to be
trivial replacement of max-idx with idx-mask. However, the current
version is only able to increase the rate which was the direction I
really needed to get working. It could be worth considering another loop
after this to decrease the rate if no match was found before..


> > -	txrc.max_rate_idx = tx->sdata->max_ratectrl_rateidx;
> > +	txrc.rate_idx_mask = tx->sdata->rc_rateidx_mask[tx->channel->band];
> > +	if (txrc.rate_idx_mask == (1 << sband->n_bitrates) - 1)
> > +		txrc.max_rate_idx = -1;
> > +	else
> > +		txrc.max_rate_idx = fls(txrc.rate_idx_mask) - 1;
> 
> I wonder if we should maintain the rate_idx_mask separately, so it's
> outside the hotpath, or will we be removing all remaining uses of it
> very soon?

I would assume you are talking about max_rate_idx and yes, I would hope
that we can get rid of it soon. I actually already removed it in the
first iteration of the patch, but had to bring it back after noticing
that iwl-{agn,3945}-rs.c were using it and I did not want to change
the drivers with the same patch. I would expect it to be relatively
simple change to the drivers to handle the rate mask as well as they can
(which may mean just figure out the max idx and use it if the firmware
does not allow rate mask configuration).

-- 
Jouni Malinen                                            PGP id EFC895FA

  reply	other threads:[~2010-01-05 17:59 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-12-29 10:59 [PATCH 2/3] cfg80211/mac80211: Use more generic bitrate mask for rate control Jouni Malinen
2010-01-05  9:36 ` Johannes Berg
2010-01-05 17:58   ` Jouni Malinen [this message]
2010-01-06 11:09 ` [PATCH v2 " Jouni Malinen

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=20100105175849.GB12811@jm.kir.nu \
    --to=j@w1.fi \
    --cc=johannes@sipsolutions.net \
    --cc=jouni.malinen@atheros.com \
    --cc=linux-wireless@vger.kernel.org \
    --cc=linville@tuxdriver.com \
    /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