All of lore.kernel.org
 help / color / mirror / Atom feed
From: Scott Feldman <sfeldma@gmail.com>
To: Jamal Hadi Salim <jhs@mojatatu.com>
Cc: "David Miller" <davem@davemloft.net>,
	"Toshiaki Makita" <makita.toshiaki@lab.ntt.co.jp>,
	Netdev <netdev@vger.kernel.org>, "Jiří Pírko" <jiri@resnulli.us>,
	"simon.horman@netronome.com" <simon.horman@netronome.com>
Subject: Re: [PATCH net-next 5/5] rocker: remove support for legacy VLAN ndo ops
Date: Tue, 2 Jun 2015 07:30:40 -0700	[thread overview]
Message-ID: <CAE4R7bAXA27cqBLv6MP0kak-L=1bXUoZPw7vxUyYpP=-dk=eAg@mail.gmail.com> (raw)
In-Reply-To: <556D96ED.9010309@mojatatu.com>

On Tue, Jun 2, 2015 at 4:43 AM, Jamal Hadi Salim <jhs@mojatatu.com> wrote:
> On 06/02/15 03:10, Scott Feldman wrote:
>
>
>> Actually, we're now consistent with bridge man page which says master
>> is the default.
>>
>> Want we want, I believe, is to adjust what the man page says (and the
>> bridge vlan command itself), by making the default master and self.
>> The kernel and driver are fine, it's the default in the bridge command
>> that needs adjusting.  Once we do this, we'll be back to transparent
>> with software-only bridge.
>>
>
> Question to ask when looking at something of this nature:
> Will it work with no suprises if you used today's unmodified app?
> The default behavior shouldnt change and unfortunately it does here.

The default behavior does change, yes, but there shouldn't be any
surprises even if using today's unmodified app.  The reason why is no
in-kernel driver is using ndo_bridge_setlink for VLAN setup.  The
three drivers that have ndo_bridge_setlink use if to set hwmode to
VEBA|VEB.  For VLAN setup, they use the (default master) bridge's
ndo_bridge_setlink->ndo_vlan_rx_add_vid.  If the default changes from
master to master|self, the bridge's
ndo_bridge_setlink->ndo_vlan_rx_add_vid is still called for those
driver's using ndo_vlan_rx_add_vid, and if they implement
ndo_bridge_setlink, they'll get called a second time but will noop
because there will be no IFLA_BRIDGE_MODE (hwmode) attr to process.

So it comes down to two choices:

1) break ABI, which is inconsequential for in-kernel drivers and
preserve (iproute2) command transparency, or

2) embrace existing behavior which is consistent with man pages but
breaks command transparency for any driver implementing
ndo_bridge_setlink for VLAN setup, which currently is just rocker.  I
can see the DSA going down this path also based on another concurrent
thread.

We're at option 2) right now.

> It is not just iproute2 - since this is breaking ABI expectations.
> Looking at some app i wrote a while back based on analyzing kernel
> expectations at the time, I see the following logic:
>
> user can set master or self on command line.
> ...
> ....
> if (user DID NOT set master_on || user set self on)
>    then set self to on
>
> iow, current behavior:
>  01: master is only set if user explicitly asked.
>  11: master|self when user explicitly sets both
>  10: self is on by default when the user doesnt specify anything
>  00: and the last option is to have none set which is not
>      possible since we have defaults.
>
> cheers,
> jamal
>
>
> So this is very similar to iproute2 - if nothing is set
> it defaults to self.

Ha, you're giving the behavior for "bridge fdb" command, where self is
the default.

For "bridge link" and "bridge vlan", the default is master.  The user
must explicitly specify "self" to act on the device side of the port.

It's unfortunate the iproute2 defaults aren't consistent between
commands.  Maybe someone knows the history here and can explain.

-scott

  reply	other threads:[~2015-06-02 14:31 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-01 18:39 [PATCH net-next 0/5] rocker: enable by default untagged VLAN support sfeldma
2015-06-01 18:39 ` [PATCH net-next 1/5] rocker: zero allocate ports array sfeldma
2015-06-01 18:39 ` [PATCH net-next 2/5] rocker: cleanup vlan table on error adding vlan sfeldma
2015-06-01 18:39 ` [PATCH net-next 3/5] rocker: install untagged VLAN (vid=0) support for each port sfeldma
2015-06-01 18:39 ` [PATCH net-next 4/5] rocker: install/remove router MAC for untagged VLAN when joining/leaving bridge sfeldma
2015-06-01 18:39 ` [PATCH net-next 5/5] rocker: remove support for legacy VLAN ndo ops sfeldma
2015-06-02  4:51   ` Toshiaki Makita
2015-06-02  5:24     ` David Miller
2015-06-02  6:47       ` Toshiaki Makita
2015-06-02  7:10       ` Scott Feldman
2015-06-02 11:43         ` Jamal Hadi Salim
2015-06-02 14:30           ` Scott Feldman [this message]
2015-06-02 16:58             ` roopa
2015-06-02 19:01               ` Scott Feldman
2015-06-03 15:43                 ` Toshiaki Makita
2015-06-03 18:41                   ` roopa
2015-06-04 15:04                     ` Toshiaki Makita
2015-06-04 15:09                       ` roopa
2015-06-04  6:05                   ` Scott Feldman
2015-06-04 14:35                     ` Toshiaki Makita
2015-06-03 15:44                 ` roopa
2015-06-03 12:08             ` Jamal Hadi Salim
2015-06-11 13:00               ` Jamal Hadi Salim
2015-06-11 18:25                 ` Scott Feldman
2015-06-02  0:01 ` [PATCH net-next 0/5] rocker: enable by default untagged VLAN support David Miller

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='CAE4R7bAXA27cqBLv6MP0kak-L=1bXUoZPw7vxUyYpP=-dk=eAg@mail.gmail.com' \
    --to=sfeldma@gmail.com \
    --cc=davem@davemloft.net \
    --cc=jhs@mojatatu.com \
    --cc=jiri@resnulli.us \
    --cc=makita.toshiaki@lab.ntt.co.jp \
    --cc=netdev@vger.kernel.org \
    --cc=simon.horman@netronome.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 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.