From: Michal Kazior <michal.kazior@tieto.com>
To: Johannes Berg <johannes@sipsolutions.net>
Cc: "linux-wireless@vger.kernel.org" <linux-wireless@vger.kernel.org>
Subject: Re: [RFC v3] initial channel context implementation
Date: Thu, 28 Jun 2012 09:54:07 +0200 [thread overview]
Message-ID: <4FEC0D9F.9030000@tieto.com> (raw)
In-Reply-To: <1340868682.4491.1.camel@jlt3.sipsolutions.net>
Johannes Berg wrote:
> On Thu, 2012-06-28 at 08:04 +0200, Michal Kazior wrote:
>
>>> In any case, I think you're turning it upside down. I think we should
>>> get rid of local->oper_channel(_type) completely, and instead use the
>>> channel contexts in mac80211 everywhere. If the driver doesn't implement
>>> channel contexts it can only support a single channel. Thus, we can have
>>> at most one channel context, so whenever a new context is added (there
>>> could be zero) or any context is modified (the only one) we can set
>>> hw.conf.channel and call hw_config() with the CHANNEL_CHANGE flag.
>>>
>>> IOW, nothing in mac80211 would ever call hw_config() for the channel or
>>> channel type change, it would all do channel contexts, but the channel
>>> context code would see that if the driver doesn't support channel
>>> contexts
>>> 1) there will be at most one context in mac80211
>>> 2) this context is programmed into the device by using hw_config()
>>> instead of the context callbacks
>>
>> Yes, this is more or less what I also had in mind. I was just thinking
>> about solving the issue of channel context and hw.conf.channel
>> consistency. If we switch a channel we either modify channel in channel
>> context directly (violating the immutability of channel contexts) or we
>> iterate and re-set the new channel on each interface (because
>> single-channel drivers may still have multiple interfaces and we
>> probably want to use sdata->vif.chanctx_conf->channel instead of
>> hw.conf.channel inside mac80211).
>>
>> Now that I think about it I guess violating the immutability for the
>> single-channel case is okay. It would greatly simplify the code and we'd
>> just put a comment down in hw_config where the only violation would occur.
>
> I'm not sure why we would violate it? The way I see it, you'd never
> change the channel context channel since internally in mac80211 you'd
> never want to see a different channel, just like today we use
> local->oper_channel everywhere we'd then use sdata->vif.chanctx->channel
> throughout, right?
>
> I think the only thing we need to do is put something like this into
> hw_config:
>
> if (local->tmp_channel) {
> local->hw.conf.channel = local->tmp_channel;
> ...
> } else {
> local->hw.conf.channel = chanctx->channel;
> }
>
> No?
Using sdata->vif.chanctx_conf->channel instead of local->oper_channel
doesn't make any sense to me.
Take ieee80211_tx() for example. It does:
tx.channel = local->hw.conf.channel;
We don't use oper_channel here, but hw.conf.channel. TX can happen on
different interfaces so for multi-channel operation it should be saying:
tx.channel = sdata->vif.chanctx_conf->channel;
In this case if we want to support the swscan/tmpchan through
hw_config() we need update the channel context's channel somehow.
I'm more thinking of hw.conf.channel becoming more of a backup value for
single-channel drivers while we internally focus on channel contexts.
--
Pozdrawiam / Best regards, Michal Kazior.
next prev parent reply other threads:[~2012-06-28 7:54 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-26 12:37 [RFC v3] initial channel context implementation Michal Kazior
2012-06-26 12:37 ` [RFC v3 1/7] mac80211: introduce channel context skeleton code Michal Kazior
2012-06-26 12:37 ` [RFC v3 2/7] mac80211: introduce new ieee80211_ops Michal Kazior
2012-06-26 12:37 ` [RFC v3 3/7] mac80211: add drv_* wrappers for channel contexts Michal Kazior
2012-06-26 12:37 ` [RFC v3 4/7] mac80211: add chanctx tracing Michal Kazior
2012-06-26 12:37 ` [RFC v3 5/7] mac80211: use channel context notifications Michal Kazior
2012-06-26 13:35 ` Johannes Berg
2012-06-26 14:01 ` Michal Kazior
2012-06-26 15:34 ` Johannes Berg
2012-06-26 12:37 ` [RFC v3 6/7] mac80211: refactor set_channel_type Michal Kazior
2012-06-26 14:04 ` Eliad Peller
2012-06-26 12:37 ` [RFC v3 7/7] mac80211: reuse channels for channel contexts Michal Kazior
2012-06-26 13:41 ` Johannes Berg
2012-06-26 13:55 ` Michal Kazior
2012-06-26 15:34 ` Johannes Berg
2012-06-26 13:43 ` [RFC v3] initial channel context implementation Johannes Berg
2012-06-27 7:30 ` Michal Kazior
2012-06-27 8:10 ` Johannes Berg
2012-06-27 10:13 ` Michal Kazior
2012-06-27 11:10 ` Johannes Berg
2012-06-27 12:43 ` Michal Kazior
2012-06-27 14:02 ` Johannes Berg
2012-06-28 6:04 ` Michal Kazior
2012-06-28 7:31 ` Johannes Berg
2012-06-28 7:54 ` Michal Kazior [this message]
2012-06-28 8:13 ` Johannes Berg
2012-06-28 9:20 ` Michal Kazior
2012-06-28 9:27 ` Johannes Berg
2012-06-28 9:47 ` Michal Kazior
2012-06-28 7:01 ` Michal Kazior
2012-06-28 8:15 ` Johannes Berg
2012-06-28 8:54 ` Michal Kazior
2012-06-28 9:27 ` Johannes Berg
2012-07-25 10:22 ` Johannes Berg
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=4FEC0D9F.9030000@tieto.com \
--to=michal.kazior@tieto.com \
--cc=johannes@sipsolutions.net \
--cc=linux-wireless@vger.kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.