From: "Luis R. Rodriguez" <lrodriguez@atheros.com>
To: reinette chatre <reinette.chatre@intel.com>
Cc: Luis Rodriguez <Luis.Rodriguez@Atheros.com>,
"linville@tuxdriver.com" <linville@tuxdriver.com>,
"johannes@sipsolutions.net" <johannes@sipsolutions.net>,
"j@w1.fi" <j@w1.fi>,
"linux-wireless@vger.kernel.org" <linux-wireless@vger.kernel.org>,
"ath9k-devel@lists.ath9k.org" <ath9k-devel@lists.ath9k.org>,
"Zhu, Yi" <yi.zhu@intel.com>,
"ipw3945-devel@lists.sourceforge.net"
<ipw3945-devel@lists.sourceforge.net>,
Gabor Juhos <juhosg@openwrt.org>, Felix Fietkau <nbd@openwrt.org>,
Derek Smithies <derek@indranet.co.nz>,
Chittajit Mitra <Chittajit.Mitra@Atheros.com>
Subject: Re: [PATCH v2 14/15] mac80211: add helper for management / no-ack frame rate decision
Date: Mon, 8 Jun 2009 14:58:23 -0700 [thread overview]
Message-ID: <20090608215823.GB380@tesla> (raw)
In-Reply-To: <1244492902.20900.196.camel@rc-desk>
On Mon, Jun 08, 2009 at 01:28:22PM -0700, reinette chatre wrote:
> Hi Luis,
>
> On Fri, 2009-06-05 at 17:03 -0700, Luis R. Rodriguez wrote:
> > All current rate control algorithms agree to send management and no-ack
> > frames at the lowest rate. They also agree to do this when sta
> > and the private rate control data is NULL. We add a hlper to mac80211
> > for this and simplify the rate control algorithm code.
> >
> > Developers wishing to make enhancements to rate control algorithms
> > are for broadcast/multicast can opt to not use this in their
> > gate_rate() mac80211 callback.
> >
> > Cc: Zhu Yi <yi.zhu@intel.com>
> > Cc: Reinette Chatre <reinette.chatre@intel.com>
> > Cc: ipw3945-devel@lists.sourceforge.net
> > Cc: Gabor Juhos <juhosg@openwrt.org>
> > Cc: Felix Fietkau <nbd@openwrt.org>
> > Cc: Derek Smithies <derek@indranet.co.nz>
> > Cc: Chittajit Mitra <Chittajit.Mitra@Atheros.com>
> > Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
> > ---
> > drivers/net/wireless/ath/ath9k/rc.c | 14 +------------
> > drivers/net/wireless/iwlwifi/iwl-3945-rs.c | 21 ++-----------------
> > drivers/net/wireless/iwlwifi/iwl-agn-rs.c | 12 +----------
> > include/net/mac80211.h | 23 ++++++++++++++++++++++
> > net/mac80211/rate.c | 29 ++++++++++++++++++++++++++++
> > net/mac80211/rc80211_minstrel.c | 22 +--------------------
> > net/mac80211/rc80211_pid_algo.c | 11 +---------
> > 7 files changed, 59 insertions(+), 73 deletions(-)
> >
> > diff --git a/drivers/net/wireless/ath/ath9k/rc.c b/drivers/net/wireless/ath/ath9k/rc.c
> > index d8d2152..9199ce9 100644
> > diff --git a/drivers/net/wireless/iwlwifi/iwl-3945-rs.c b/drivers/net/wireless/iwlwifi/iwl-3945-rs.c
> > index bd2f709..8bd496f 100644
> > --- a/drivers/net/wireless/iwlwifi/iwl-3945-rs.c
> > +++ b/drivers/net/wireless/iwlwifi/iwl-3945-rs.c
> > @@ -673,7 +673,6 @@ static void rs_get_rate(void *priv_r, struct ieee80211_sta *sta,
> > s8 scale_action = 0;
> > unsigned long flags;
> > struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
> > - __le16 fc;
> > u16 rate_mask = 0;
> > s8 max_rate_idx = -1;
> > struct iwl_priv *priv = (struct iwl_priv *)priv_r;
> > @@ -681,24 +680,10 @@ static void rs_get_rate(void *priv_r, struct ieee80211_sta *sta,
> >
> > IWL_DEBUG_RATE(priv, "enter\n");
> >
> > - if (sta)
> > - rate_mask = sta->supp_rates[sband->band];
> > -
> > - /* Send management frames and NO_ACK data using lowest rate. */
> > - fc = hdr->frame_control;
> > - if (!ieee80211_is_data(fc) || info->flags & IEEE80211_TX_CTL_NO_ACK ||
> > - !sta || !priv_sta) {
> > - IWL_DEBUG_RATE(priv, "leave: No STA priv data to update!\n");
> > - if (!rate_mask)
> > - info->control.rates[0].idx =
> > - rate_lowest_index(sband, NULL);
> > - else
> > - info->control.rates[0].idx =
> > - rate_lowest_index(sband, sta);
> > - if (info->flags & IEEE80211_TX_CTL_NO_ACK)
> > - info->control.rates[0].count = 1;
> > + if (rate_control_send_low(sta, priv_sta, txrc))
> > return;
> > - }
> > +
> > + rate_mask = sta->supp_rates[sband->band];
> >
> > /* get user max rate if set */
> > max_rate_idx = txrc->max_rate_idx;
> > diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
> > index ff20e50..7a3e4dd 100644
> > --- a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
> > +++ b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
> > @@ -2485,18 +2485,8 @@ static void rs_get_rate(void *priv_r, struct ieee80211_sta *sta, void *priv_sta,
> > mask_bit = sta->supp_rates[sband->band];
> >
> > /* Send management frames and NO_ACK data using lowest rate. */
> > - if (!ieee80211_is_data(hdr->frame_control) ||
> > - info->flags & IEEE80211_TX_CTL_NO_ACK || !sta || !lq_sta) {
> > - if (!mask_bit)
> > - info->control.rates[0].idx =
> > - rate_lowest_index(sband, NULL);
> > - else
> > - info->control.rates[0].idx =
> > - rate_lowest_index(sband, sta);
> > - if (info->flags & IEEE80211_TX_CTL_NO_ACK)
> > - info->control.rates[0].count = 1;
> > + if (rate_control_send_low(sta, priv_r, txrc))
> > return;
> > - }
> >
> > rate_idx = lq_sta->last_txrate_idx;
>
>
> The iwlwifi way of computing rates is not captured in the new helper. We
> used to do it in the way you change it to, but run into the
> "rs_get_rate" WARN very often (see
> http://www.kerneloops.org/searchweek.php?search=rs_get_rate and
> http://www.intellinuxwireless.org/bugzilla/show_bug.cgi?id=1822 ). We
> submitted patch "iwlwifi: fix rs_get_rate WARN_ON()" to address that.
>
> Changing this back will make that warning reappear.
Point taken -- this highlights an issue we see if we apply these patches
and this needs to be dealt with properly. For example if we're a STA and
already associated I don't believe it makes sense to send data to the sta
if the sta does not support the minimum bitrate. The issue here would be
we're trying to send to the sta using a band it does not support. I'll look
into this a bit further...
Luis
next prev parent reply other threads:[~2009-06-08 21:58 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-06-06 0:03 [PATCH v2 00/15] ath9k: few rate control cleanups Luis R. Rodriguez
2009-06-06 0:03 ` [PATCH v2 01/15] ath9k: fix oops by downgrading assert in rc.c Luis R. Rodriguez
2009-06-06 0:03 ` [PATCH v2 02/15] ath9k: cleanup try count for MRR in rate control Luis R. Rodriguez
2009-06-06 0:03 ` [PATCH v2 03/15] ath9k: remove unused min rate calculation code Luis R. Rodriguez
2009-06-06 0:03 ` [PATCH v2 04/15] ath9k: remove unused stepdown when looking for the next rate Luis R. Rodriguez
2009-06-06 0:03 ` [PATCH v2 05/15] ath9k: remove pointless wrapper ath_rc_rate_getidx() Luis R. Rodriguez
2009-06-06 0:03 ` [PATCH v2 06/15] ath9k: rename ath_rc_get_nextlowervalid_txrate() Luis R. Rodriguez
2009-06-06 0:03 ` [PATCH v2 07/15] ath9k: remove unused ath_rc_isvalid_txmask() Luis R. Rodriguez
2009-06-06 0:03 ` [PATCH v2 08/15] ath9k: remove ATH9K_MODE_11B Luis R. Rodriguez
2009-06-06 7:25 ` [ath9k-devel] " Karl Hiramoto
2009-06-08 15:57 ` Luis R. Rodriguez
2009-06-06 0:03 ` [PATCH v2 09/15] ath9k: remap ATH9K_MODE_* Luis R. Rodriguez
2009-06-06 0:03 ` [PATCH v2 10/15] ath9k: rename ath_rc_ratefind_ht() to ath_rc_get_highest_rix() Luis R. Rodriguez
2009-06-06 0:03 ` [PATCH v2 11/15] ath9k: remove unnecessary IEEE80211_TX_CTL_NO_ACK checks Luis R. Rodriguez
2009-06-07 18:25 ` Gábor Stefanik
2009-06-08 15:58 ` Luis R. Rodriguez
2009-06-06 0:03 ` [PATCH v2 12/15] mac80211: make minstrel/pid RC use ieee80211_is_data(fc) Luis R. Rodriguez
2009-06-06 0:03 ` [PATCH v2 13/15] iwlwifi: " Luis R. Rodriguez
2009-06-08 17:58 ` reinette chatre
2009-06-08 18:30 ` Gábor Stefanik
2009-06-08 19:15 ` Luis R. Rodriguez
2009-06-09 0:16 ` Luis R. Rodriguez
2009-06-06 0:03 ` [PATCH v2 14/15] mac80211: add helper for management / no-ack frame rate decision Luis R. Rodriguez
2009-06-08 20:28 ` reinette chatre
2009-06-08 21:58 ` Luis R. Rodriguez [this message]
2009-06-06 0:03 ` [PATCH v2 15/15] ath9k: remove rate control wraper Luis R. Rodriguez
2009-06-06 2:59 ` [PATCH v2 00/15] ath9k: few rate control cleanups Luis R. Rodriguez
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=20090608215823.GB380@tesla \
--to=lrodriguez@atheros.com \
--cc=Chittajit.Mitra@Atheros.com \
--cc=Luis.Rodriguez@Atheros.com \
--cc=ath9k-devel@lists.ath9k.org \
--cc=derek@indranet.co.nz \
--cc=ipw3945-devel@lists.sourceforge.net \
--cc=j@w1.fi \
--cc=johannes@sipsolutions.net \
--cc=juhosg@openwrt.org \
--cc=linux-wireless@vger.kernel.org \
--cc=linville@tuxdriver.com \
--cc=nbd@openwrt.org \
--cc=reinette.chatre@intel.com \
--cc=yi.zhu@intel.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;
as well as URLs for NNTP newsgroup(s).