linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Luca Coelho <luca@coelho.fi>
To: Michal Kazior <michal.kazior@tieto.com>
Cc: Johannes Berg <johannes@sipsolutions.net>,
	linux-wireless <linux-wireless@vger.kernel.org>,
	Simon Wunderlich <sw@simonwunderlich.de>
Subject: Re: [PATCH v5] mac80211: implement multi-vif in-place reservations
Date: Wed, 07 May 2014 13:16:00 +0300	[thread overview]
Message-ID: <1399457760.6800.7.camel@dubbel> (raw)
In-Reply-To: <CA+BoTQmXb=_jjE4-dL8U_-8=CxRMgo4qckUKF9LizfV2W0iC7A@mail.gmail.com>

On Wed, 2014-05-07 at 12:02 +0200, Michal Kazior wrote:
> On 7 May 2014 11:40, Luca Coelho <luca@coelho.fi> wrote:
> > On Wed, 2014-05-07 at 10:07 +0200, Johannes Berg wrote:
> >> On Wed, 2014-05-07 at 08:05 +0200, Michal Kazior wrote:
> >>
> >> > Hmm... Now that I think about the atomic swap - it actually becomes a
> >> > little bit of an issue in some cases.
> >> >
> >> > For one you might need to overcommit number of chanctx since swapping
> >> > requires both chanctx (old and new) to exist but that's the least of
> >> > the eproblem. If you have more than one interface you end up with
> >> > temporarily breaking interface combinations from driver point of view
> >> > while switching (first swap breaks it, last swap fixes it). Driver
> >> > won't know whether given swap is first/last unless we somehow pass it
> >> > through the switch_vif_chanctx(). IOW we actually need a "chanctx
> >> > transaction" (sort of a start-stop) that can batch up a couple of
> >> > chanctx switches for different vifs as an atomic op.
> >>
> >> Hmmm. Don't you already have that problem? Or you don't because you'd do
> >>
> >> for_each_affected_vif: unassign
> >> del chanctx [optional depending on reservation]
> >> add chanctx [ditto]
> >> for_each_affected_vif: assign
> >>
> >> right now?
> >>
> >> I suppose a sort of transaction API, if designed the right way, would
> >> also work somehow - Luca?
> >
> > Yeah, I think this is a good idea.  If we have an atomic transaction API
> > towards the driver, we can solve the problems of switching several vifs
> > at once.
> 
> Hmm.. I assume all chanctx calls would be subject to the transaction
> API, i.e. add_chanctx/remove_chanctx/switch_vif_chanctx/change_chanctx.
> Then all calls except begin/commit would return void - I guess this
> could make handling errors a little saner.
> 
> Another approach would be to merge all separate chanctx ops into a
> single one. This would have the benefit of providing driver all
> information in one place and possibly making it easier to handle
> errors internally (due to single function flow instead of having stuff
> all over the place). But I imagine this could become a little
> ambiguous in some parameter combinations. Any thoughts?

I think the latter is a better option.  Instead of having multiple calls
and requiring the driver to save all the new information until it's
committed (as would be the case with the first approach), the driver
would have all the information it needs at once.

Maybe you could have a single function call with an array of
transactions?

--
Luca.


  reply	other threads:[~2014-05-07 10:16 UTC|newest]

Thread overview: 199+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-18 13:53 [RFC 00/21] cfg80211/mac80211: multi-vif csa Michal Kazior
2014-03-18 13:53 ` [RFC 01/21] mac80211: add support for radar detection for reservations Michal Kazior
2014-03-18 13:53 ` [RFC 02/21] cfg80211: allow drivers to iterate over matching combinations Michal Kazior
2014-03-18 13:53 ` [RFC 03/21] mac80211: add max channel calculation utility function Michal Kazior
2014-03-18 16:17   ` Eliad Peller
2014-03-19  8:32     ` Michal Kazior
2014-03-19  8:43       ` Eliad Peller
2014-03-19  8:54         ` Michal Kazior
2014-03-19 10:18           ` Eliad Peller
2014-03-18 13:53 ` [RFC 04/21] mac80211: prevent chanctx overcommit Michal Kazior
2014-03-18 16:25   ` Eliad Peller
2014-03-18 13:53 ` [RFC 05/21] mac80211: track assigned vifs in chanctx Michal Kazior
2014-03-18 13:53 ` [RFC 06/21] mac80211: track reserved " Michal Kazior
2014-03-18 13:53 ` [RFC 07/21] mac80211: improve find_chanctx() for reservations Michal Kazior
2014-03-18 16:42   ` Eliad Peller
2014-03-19  8:34     ` Michal Kazior
2014-03-19  8:47       ` Eliad Peller
2014-03-19  9:00         ` Michal Kazior
2014-03-19 10:53           ` Eliad Peller
2014-03-18 13:53 ` [RFC 08/21] mac80211: improve chanctx reservation lookup Michal Kazior
2014-03-18 16:57   ` Eliad Peller
2014-03-19  8:45     ` Michal Kazior
2014-03-18 13:53 ` [RFC 09/21] mac80211: split ieee80211_new_chanctx() Michal Kazior
2014-03-18 13:53 ` [RFC 10/21] mac80211: split ieee80211_free_chanctx() Michal Kazior
2014-03-18 13:53 ` [RFC 11/21] mac80211: fix racy usage of chanctx->refcount Michal Kazior
2014-03-18 13:53 ` [RFC 12/21] mac80211: compute chanctx refcount on-the-fly Michal Kazior
2014-03-18 13:53 ` [RFC 13/21] mac80211: implement multi-vif in-place reservations Michal Kazior
2014-03-19 18:35   ` Eliad Peller
2014-03-20  7:25     ` Michal Kazior
2014-03-18 13:53 ` [RFC 14/21] mac80211: fix CSA tx queue locking Michal Kazior
2014-03-18 13:53 ` [RFC 15/21] mac80211: split CSA finalize function Michal Kazior
2014-03-18 13:53 ` [RFC 16/21] mac80211: make check_combinations() aware of chanctx reservation Michal Kazior
2014-03-18 13:53 ` [RFC 17/21] mac80211: use chanctx reservation for AP CSA Michal Kazior
2014-03-18 13:53 ` [RFC 18/21] mac80211: use chanctx reservation for STA CSA Michal Kazior
2014-03-18 13:53 ` [RFC 19/21] mac80211: ignore cqm during csa Michal Kazior
2014-03-18 13:53 ` [RFC 20/21] mac80211: remove old unused channel switching code Michal Kazior
2014-03-18 13:53 ` [RFC 21/21] cfg80211: remove channel_switch combination check Michal Kazior
2014-03-18 15:52 ` [RFC 00/21] cfg80211/mac80211: multi-vif csa Eliad Peller
2014-03-19  9:34   ` Luca Coelho
2014-03-21 13:47 ` [PATCH v2 00/13] cfg80211/mac80211: implement multi-vif chanctx reservations Michal Kazior
2014-03-21 13:47   ` [PATCH v2 01/13] cfg80211: allow drivers to iterate over matching combinations Michal Kazior
2014-03-28 13:05     ` Johannes Berg
2014-03-28 13:21       ` Michal Kazior
2014-03-28 13:22         ` Johannes Berg
2014-03-28 13:42           ` Michal Kazior
2014-03-28 13:49             ` Johannes Berg
2014-03-21 13:47   ` [PATCH v2 02/13] mac80211: add max channel calculation utility function Michal Kazior
2014-03-21 13:47   ` [PATCH v2 03/13] mac80211: prevent chanctx overcommit Michal Kazior
2014-03-25  7:59     ` Luca Coelho
2014-03-25  8:13       ` Luca Coelho
2014-03-25  8:37       ` Michal Kazior
2014-03-25  9:45         ` Luca Coelho
2014-03-21 13:47   ` [PATCH v2 04/13] mac80211: add support for radar detection for reservations Michal Kazior
2014-03-21 13:47   ` [PATCH v2 05/13] mac80211: track assigned vifs in chanctx Michal Kazior
2014-03-28 13:06     ` Johannes Berg
2014-03-21 13:47   ` [PATCH v2 06/13] mac80211: track reserved " Michal Kazior
2014-03-28 13:07     ` Johannes Berg
2014-03-21 13:47   ` [PATCH v2 07/13] mac80211: improve find_chanctx() for reservations Michal Kazior
2014-03-28 13:08     ` Johannes Berg
2014-03-28 13:32       ` Michal Kazior
2014-03-21 13:47   ` [PATCH v2 08/13] mac80211: improve chanctx reservation lookup Michal Kazior
2014-03-21 13:47   ` [PATCH v2 09/13] mac80211: split ieee80211_new_chanctx() Michal Kazior
2014-03-21 13:47   ` [PATCH v2 10/13] mac80211: split ieee80211_free_chanctx() Michal Kazior
2014-03-21 13:47   ` [PATCH v2 11/13] mac80211: fix racy usage of chanctx->refcount Michal Kazior
2014-03-21 13:47   ` [PATCH v2 12/13] mac80211: compute chanctx refcount on-the-fly Michal Kazior
2014-03-28 13:11     ` Johannes Berg
2014-03-28 13:22       ` Michal Kazior
2014-03-28 13:25         ` Johannes Berg
2014-03-21 13:47   ` [PATCH v2 13/13] mac80211: implement multi-vif in-place reservations Michal Kazior
2014-03-31 10:39   ` [PATCH v3 00/13] cfg80211/mac80211: implement multi-vif chanctx reservations Michal Kazior
2014-03-31 10:39     ` [PATCH v3 01/13] cfg80211: allow drivers to iterate over matching combinations Michal Kazior
2014-03-31 10:39     ` [PATCH v3 02/13] mac80211: add max channel calculation utility function Michal Kazior
2014-04-08 13:23       ` Johannes Berg
2014-03-31 10:39     ` [PATCH v3 03/13] mac80211: prevent chanctx overcommit Michal Kazior
2014-03-31 10:39     ` [PATCH v3 04/13] mac80211: add support for radar detection for reservations Michal Kazior
2014-04-08 13:25       ` Johannes Berg
2014-04-09  7:05         ` Michal Kazior
2014-03-31 10:39     ` [PATCH v3 05/13] mac80211: track assigned vifs in chanctx Michal Kazior
2014-03-31 10:39     ` [PATCH v3 06/13] mac80211: track reserved " Michal Kazior
2014-03-31 10:39     ` [PATCH v3 07/13] mac80211: improve find_chanctx() for reservations Michal Kazior
2014-03-31 10:39     ` [PATCH v3 08/13] mac80211: improve chanctx reservation lookup Michal Kazior
2014-03-31 10:39     ` [PATCH v3 09/13] mac80211: split ieee80211_new_chanctx() Michal Kazior
2014-03-31 10:39     ` [PATCH v3 10/13] mac80211: split ieee80211_free_chanctx() Michal Kazior
2014-03-31 10:39     ` [PATCH v3 11/13] mac80211: fix racy usage of chanctx->refcount Michal Kazior
2014-03-31 10:39     ` [PATCH v3 12/13] mac80211: compute chanctx refcount on-the-fly Michal Kazior
2014-03-31 10:39     ` [PATCH v3 13/13] mac80211: implement multi-vif in-place reservations Michal Kazior
2014-03-31 16:15       ` Eliad Peller
2014-04-01  5:10         ` Michal Kazior
2014-04-01  7:46           ` Eliad Peller
2014-04-01  7:54             ` Michal Kazior
2014-04-01  8:10               ` Eliad Peller
2014-04-01  8:26                 ` Michal Kazior
2014-04-08 13:30     ` [PATCH v3 00/13] cfg80211/mac80211: implement multi-vif chanctx reservations Johannes Berg
2014-04-08 14:00       ` Luca Coelho
2014-04-09  7:07         ` Michal Kazior
2014-04-09 13:29     ` [PATCH v4 " Michal Kazior
2014-04-09 13:29       ` [PATCH v4 01/13] cfg80211: allow drivers to iterate over matching combinations Michal Kazior
2014-04-09 13:29       ` [PATCH v4 02/13] mac80211: add max channel calculation utility function Michal Kazior
2014-04-09 13:29       ` [PATCH v4 03/13] mac80211: prevent chanctx overcommit Michal Kazior
2014-04-09 13:29       ` [PATCH v4 04/13] mac80211: add support for radar detection for reservations Michal Kazior
2014-04-09 13:29       ` [PATCH v4 05/13] mac80211: track assigned vifs in chanctx Michal Kazior
2014-04-09 13:29       ` [PATCH v4 06/13] mac80211: track reserved " Michal Kazior
2014-04-09 13:29       ` [PATCH v4 07/13] mac80211: improve find_chanctx() for reservations Michal Kazior
2014-04-09 13:29       ` [PATCH v4 08/13] mac80211: improve chanctx reservation lookup Michal Kazior
2014-04-09 13:29       ` [PATCH v4 09/13] mac80211: split ieee80211_new_chanctx() Michal Kazior
2014-04-09 13:29       ` [PATCH v4 10/13] mac80211: split ieee80211_free_chanctx() Michal Kazior
2014-04-09 13:29       ` [PATCH v4 11/13] mac80211: fix racy usage of chanctx->refcount Michal Kazior
2014-04-09 13:29       ` [PATCH v4 12/13] mac80211: compute chanctx refcount on-the-fly Michal Kazior
2014-04-09 13:29       ` [PATCH v4 13/13] mac80211: implement multi-vif in-place reservations Michal Kazior
2014-04-28 16:32         ` [v4 " Zhao, Gang
2014-04-29  6:10           ` Michal Kazior
2014-04-29 19:44             ` Johannes Berg
2014-04-30  9:21         ` [PATCH v5] " Michal Kazior
2014-05-06 10:41           ` Johannes Berg
2014-05-06 12:47             ` Michal Kazior
2014-05-06 14:05               ` Johannes Berg
2014-05-07  6:05                 ` Michal Kazior
2014-05-07  8:07                   ` Johannes Berg
2014-05-07  8:51                     ` Michal Kazior
2014-05-07  9:41                       ` Luca Coelho
2014-05-07  9:40                     ` Luca Coelho
2014-05-07 10:02                       ` Michal Kazior
2014-05-07 10:16                         ` Luca Coelho [this message]
2014-05-07 10:38                           ` Michal Kazior
2014-05-07 11:09                             ` Johannes Berg
2014-05-07 11:19                               ` Michal Kazior
2014-05-07 11:54                                 ` Johannes Berg
2014-05-07 12:08                                   ` Luca Coelho
2014-05-07 12:13                                     ` Johannes Berg
2014-05-07 12:20                                       ` Luca Coelho
2014-05-07 12:38                                         ` Johannes Berg
2014-05-07 12:44                                           ` Michal Kazior
2014-05-07 12:53                                             ` Johannes Berg
2014-05-07 13:03                                               ` Michal Kazior
2014-05-08 10:06                                                 ` Johannes Berg
2014-05-08 10:41                                                   ` Michal Kazior
2014-05-13 13:42                                                     ` Johannes Berg
2014-05-13 13:56                                                       ` Michal Kazior
2014-05-13 15:53                                                         ` Johannes Berg
2014-05-14  5:14                                                           ` Michal Kazior
2014-05-14  8:25                                                             ` Johannes Berg
2014-05-14  8:51                                                               ` Michal Kazior
2014-05-08 10:08                                                 ` Johannes Berg
2014-05-07 12:53                                           ` Luca Coelho
2014-05-07 13:06                                             ` Johannes Berg
2014-05-07 13:10                                               ` Luca Coelho
2014-05-08 10:03                                                 ` Johannes Berg
2014-05-07 12:27                                       ` Michal Kazior
2014-05-07 12:36                                         ` Johannes Berg
2014-05-07 12:20                                   ` Michal Kazior
2014-05-07 12:34                                     ` Johannes Berg
2014-05-07 11:48                               ` Luca Coelho
2014-05-07  9:27                   ` Luca Coelho
2014-05-07 11:09                     ` Johannes Berg
2014-05-07 11:24                       ` Luca Coelho
2014-04-25 15:20       ` [PATCH v4 00/13] cfg80211/mac80211: implement multi-vif chanctx reservations Johannes Berg
2014-04-28  6:16         ` Michal Kazior
2014-03-21 13:52 ` [PATCH v2 0/7] cfg80211/mac80211: implement multi-vif csa Michal Kazior
2014-03-21 13:52   ` [PATCH v2 1/7] cfg80211: fix radar_detect combination checking Michal Kazior
2014-03-28 12:59     ` Johannes Berg
2014-03-21 13:52   ` [PATCH v2 2/7] mac80211: make check_combinations() aware of chanctx reservation Michal Kazior
2014-03-28 13:00     ` Johannes Berg
2014-03-21 13:52   ` [PATCH v2 3/7] mac80211: use chanctx reservation for AP CSA Michal Kazior
2014-03-28 13:01     ` Johannes Berg
2014-03-21 13:52   ` [PATCH v2 4/7] mac80211: use chanctx reservation for STA CSA Michal Kazior
2014-03-21 13:52   ` [PATCH v2 5/7] mac80211: ignore cqm during csa Michal Kazior
2014-03-21 13:52   ` [PATCH v2 6/7] mac80211: remove old unused channel switching code Michal Kazior
2014-03-28 13:03     ` Johannes Berg
2014-03-21 13:52   ` [PATCH v2 7/7] cfg80211: remove channel_switch combination check Michal Kazior
2014-03-31 12:04   ` [PATCH v3 0/5] cfg80211/mac80211: implement multi-vif csa Michal Kazior
2014-03-31 12:04     ` [PATCH v3 1/5] mac80211: make check_combinations() aware of chanctx reservation Michal Kazior
2014-03-31 12:04     ` [PATCH v3 2/5] mac80211: use chanctx reservation for AP CSA Michal Kazior
2014-03-31 13:12       ` Michal Kazior
2014-03-31 12:04     ` [PATCH v3 3/5] mac80211: use chanctx reservation for STA CSA Michal Kazior
2014-03-31 12:04     ` [PATCH v3 4/5] mac80211: ignore cqm during csa Michal Kazior
2014-03-31 12:04     ` [PATCH v3 5/5] cfg80211: remove channel_switch combination check Michal Kazior
2014-04-09 13:45     ` [PATCH v4 0/5] cfg80211/mac80211: implement multi-vif csa Michal Kazior
2014-04-09 13:45       ` [PATCH v4 1/5] mac80211: make check_combinations() aware of chanctx reservation Michal Kazior
2014-04-09 13:45       ` [PATCH v4 2/5] mac80211: use chanctx reservation for AP CSA Michal Kazior
2014-05-06 14:42         ` Johannes Berg
2014-05-07  7:25           ` Michal Kazior
2014-05-07  8:05             ` Johannes Berg
2014-05-07  9:05               ` Michal Kazior
2014-05-07  9:06                 ` Michal Kazior
2014-05-07  9:07                 ` Johannes Berg
2014-05-07  9:41                   ` Michal Kazior
2014-05-07 11:17                     ` Johannes Berg
2014-05-07 11:43                       ` Michal Kazior
2014-05-07 11:50                         ` Johannes Berg
2014-05-07 12:12                           ` Michal Kazior
2014-04-09 13:45       ` [PATCH v4 3/5] mac80211: use chanctx reservation for STA CSA Michal Kazior
2014-05-06 14:43         ` Johannes Berg
2014-05-07  7:35           ` Michal Kazior
2014-05-07  8:03             ` Johannes Berg
2014-04-09 13:45       ` [PATCH v4 4/5] mac80211: ignore cqm during csa Michal Kazior
2014-05-06 14:45         ` Johannes Berg
2014-04-09 13:45       ` [PATCH v4 5/5] cfg80211: remove channel_switch combination check Michal Kazior
2014-05-06 14:45         ` Johannes Berg
2014-05-07  7:40           ` Michal Kazior

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=1399457760.6800.7.camel@dubbel \
    --to=luca@coelho.fi \
    --cc=johannes@sipsolutions.net \
    --cc=linux-wireless@vger.kernel.org \
    --cc=michal.kazior@tieto.com \
    --cc=sw@simonwunderlich.de \
    /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).