bridge.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
From: Sevinj Aghayeva <sevinj.aghayeva@gmail.com>
To: netdev@vger.kernel.org
Cc: aroulin@nvidia.com, Nikolay Aleksandrov <razor@blackwall.org>,
	bridge@lists.linux-foundation.org, linux-kernel@vger.kernel.org,
	sbrivio@redhat.com, Eric Dumazet <edumazet@google.com>,
	Sevinj Aghayeva <sevinj.aghayeva@gmail.com>,
	roopa@nvidia.com, Jakub Kicinski <kuba@kernel.org>,
	Paolo Abeni <pabeni@redhat.com>,
	"David S. Miller" <davem@davemloft.net>
Subject: [Bridge] [PATCH RFC net-next 0/5] net: vlan: fix bridge binding behavior and add selftests
Date: Sat, 17 Sep 2022 16:17:56 -0400	[thread overview]
Message-ID: <cover.1663445339.git.sevinj.aghayeva@gmail.com> (raw)

When bridge binding is enabled for a vlan interface, it is expected
that the link state of the vlan interface will track the subset of the
ports that are also members of the corresponding vlan, rather than
that of all ports.

Currently, this feature works as expected when a vlan interface is
created with bridge binding enabled:

  ip link add link br name vlan10 type vlan id 10 protocol 802.1q \
        bridge_binding on

However, the feature does not work when a vlan interface is created
with bridge binding disabled, and then enabled later:

  ip link add link br name vlan10 type vlan id 10 protocol 802.1q \
        bridge_binding off
  ip link set vlan10 type vlan bridge_binding on

After these two commands, the link state of the vlan interface
continues to track that of all ports, which is inconsistent and
confusing to users. This series fixes this bug and introduces two
tests for the valid behavior.

Sevinj Aghayeva (5):
  net: core: export call_netdevice_notifiers_info
  net: core: introduce a new notifier for link-type-specific changes
  net: 8021q: notify bridge module of bridge-binding flag change
  net: bridge: handle link-type-specific changes in the bridge module
  selftests: net: tests for bridge binding behavior

 include/linux/if_vlan.h                       |   4 +
 include/linux/netdevice.h                     |   3 +
 include/linux/notifier_info.h                 |  21 +++
 net/8021q/vlan.h                              |   2 +-
 net/8021q/vlan_dev.c                          |  20 ++-
 net/bridge/br.c                               |   5 +
 net/bridge/br_private.h                       |   7 +
 net/bridge/br_vlan.c                          |  18 +++
 net/core/dev.c                                |   7 +-
 tools/testing/selftests/net/Makefile          |   1 +
 .../selftests/net/bridge_vlan_binding_test.sh | 143 ++++++++++++++++++
 11 files changed, 223 insertions(+), 8 deletions(-)
 create mode 100644 include/linux/notifier_info.h
 create mode 100755 tools/testing/selftests/net/bridge_vlan_binding_test.sh

-- 
2.34.1


             reply	other threads:[~2022-09-17 20:17 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-17 20:17 Sevinj Aghayeva [this message]
2022-09-17 20:17 ` [Bridge] [PATCH RFC net-next 1/5] net: core: export call_netdevice_notifiers_info Sevinj Aghayeva
2022-09-17 20:17 ` [Bridge] [PATCH RFC net-next 2/5] net: core: introduce a new notifier for link-type-specific changes Sevinj Aghayeva
2022-09-17 20:17 ` [Bridge] [PATCH RFC net-next 3/5] net: 8021q: notify bridge module of bridge-binding flag change Sevinj Aghayeva
2022-09-17 20:18 ` [Bridge] [PATCH RFC net-next 4/5] net: bridge: handle link-type-specific changes in the bridge module Sevinj Aghayeva
2022-09-30 13:11   ` [Bridge] [net] f6390526ee: WARNING:at_net/core/dev.c:#unregister_netdevice_many kernel test robot
2022-09-17 20:18 ` [Bridge] [PATCH RFC net-next 5/5] selftests: net: tests for bridge binding behavior Sevinj Aghayeva
2022-09-20  9:16 ` [Bridge] [PATCH RFC net-next 0/5] net: vlan: fix bridge binding behavior and add selftests Nikolay Aleksandrov
2022-09-20 13:57   ` Sevinj Aghayeva
2022-09-20 23:29   ` Jakub Kicinski
2022-09-21  4:45     ` Nikolay Aleksandrov
2022-09-21 12:42       ` Jakub Kicinski

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=cover.1663445339.git.sevinj.aghayeva@gmail.com \
    --to=sevinj.aghayeva@gmail.com \
    --cc=aroulin@nvidia.com \
    --cc=bridge@lists.linux-foundation.org \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=razor@blackwall.org \
    --cc=roopa@nvidia.com \
    --cc=sbrivio@redhat.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 read-only IMAP folder(s) and NNTP newsgroup(s).