From: Johannes Berg <johannes@sipsolutions.net>
To: Kalle Valo <kalle.valo@nokia.com>
Cc: Vivek Natarajan <vnatarajan@atheros.com>,
linux-wireless <linux-wireless@vger.kernel.org>
Subject: Re: [RFC v2] mac80211: extend/document powersave API
Date: Wed, 07 Jan 2009 16:56:43 +0100 [thread overview]
Message-ID: <1231343803.3545.50.camel@johannes> (raw)
In-Reply-To: <878wpn5d64.fsf@nokia.com>
[-- Attachment #1: Type: text/plain, Size: 3838 bytes --]
On Wed, 2009-01-07 at 17:49 +0200, Kalle Valo wrote:
> > + * First, it can support hardware that handles all powersaving by
> > + * itself, such hardware should simply set the %IEEE80211_HW_SUPPORTS_PS
> > + * hardware flag. In that case, it will be told about the desired
> > + * powersave mode regardless of association status, and the driver or
> > + * hardware must take care of enabling/disabling powersave depending on
> > + * the association status and TIM bit and send nullfunc frames by
> > + itself.
>
> Actually I'm not aware of any hardware designs which enables and
> disables power save according to association status (modulo fullmac
> design, of course). Even iwlwifi, which I think has the most
> sophisticated power save support, requires the host to enable power
> save according to the association status. Hence I would like to have
> the power save enable/disable logic based on association status in
> mac80211.
Yeah, good point. But iwlwifi is confusing me ;) Since iwlwifi is the
only user, I'll clean that up along with cleaning up iwlwifi, would you
mind leaving it as-is, and I'll fix it in the short term?
> We already have this support in ieee80211_set_associated()
>
> [Reads the function again]
>
> Or, actually we had it. I think Vivek's patch changed the
> functionality. But anyway, it's very easy to add the support back.
>
> The reason why I would like to have this in mac80211 is to avoid
> having duplicate bugs in different drivers and make the driver
> implementation easier.
Makes sense.
> > + * Additionally, such hardware may set the %IEEE80211_HW_SUPPORTS_DYNAMIC_PS
> > + * flag to indicate that it can support dynamic PS mode (see below).
> > + *
> > + * Other hardware designs cannot send nullfunc frames by themselves and
> > + * need to be told explicitly about powersave transitions depending on
> > + * association status, need software support for parsing the TIM bitmap
> > + * and can implement dynamic PS mode in software. This is also supported
> > + * by mac80211 by combining the %IEEE80211_HW_SUPPORTS_PS and
> > + * %IEEE80211_HW_PS_NULLFUNC_STACK flags.
>
> stlc45xx (and p54spi) wakeup for multicast frames automatically, but
> ath5/9k need the host to do it. I think we will need a separate flag
> for that, but I can add it later.
Good point, we need to add that later.
> > @@ -858,8 +861,17 @@ static int ieee80211_ioctl_siwpower(stru
> > if (wrq->flags & ~(IW_POWER_MODE | IW_POWER_TIMEOUT))
> > return -EINVAL;
> >
> > - if (wrq->flags & IW_POWER_TIMEOUT)
> > + if (wrq->flags & IW_POWER_TIMEOUT) {
> > + /*
> > + * dynamic PS only supported if nullfunc handling in stack
> > + * or hardware supports dynamic PS itself
> > + */
> > + if (!(local->hw.flags & IEEE80211_HW_SUPPORTS_DYNAMIC_PS) &&
> > + !(local->hw.flags & IEEE80211_HW_PS_NULLFUNC_STACK))
> > + return -EOPNOTSUPP;
> > +
> > timeout = wrq->value / 1000;
> > + }
>
> Actually there are hardware designs which don't have dynamic power
> save but have null frame creation in firmware (and hence don't need
> IEEE80211_HW_PS_NULLFUNC_STACK). So IEEE80211_HW_SUPPORTS_DYNAMIC_PS
> and IEEE80211_HW_PS_NULLFUNC_STACK are not related to each other in
> any way. I suspect at76_usb is such design, but I need to recheck
> that.
But if they don't have dynps but nullfunc in firmware then we can't
support dynamic ps at all, can we?
> So I would like to implement this so that if
> IEEE80211_HW_SUPPORTS_DYNAMIC_PS is not set mac80211 will always use
> it's own timer, independent of IEEE80211_HW_PS_NULLFUNC_STACK. If you
> agree, I can create a separate patch for this.
Oh, I see now, so the firmware just creates the nullfunc whenever you
tell it to? bit strange, I guess.
johannes
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
next prev parent reply other threads:[~2009-01-07 15:56 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-06 17:53 [RFC] mac80211: extend/document powersave API Johannes Berg
2009-01-06 20:25 ` [RFC v2] " Johannes Berg
2009-01-07 15:49 ` Kalle Valo
2009-01-07 15:56 ` Johannes Berg [this message]
2009-01-07 16:22 ` Kalle Valo
2009-01-07 16:43 ` [RFC v3] " Johannes Berg
2009-01-07 17:25 ` Kalle Valo
2009-01-07 17:31 ` Johannes Berg
2009-01-07 17:49 ` Kalle Valo
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=1231343803.3545.50.camel@johannes \
--to=johannes@sipsolutions.net \
--cc=kalle.valo@nokia.com \
--cc=linux-wireless@vger.kernel.org \
--cc=vnatarajan@atheros.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).