All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vlad Yasevich <vyasevic@redhat.com>
To: shemminger@vyatta.com
Cc: netdev@vger.kernel.org, bridge@lists.linux-foundation.org,
	davem@davemloft.net, shmulik.ladkani@gmail.com
Subject: Re: [Bridge] [PATCH 00/13] Add basic VLAN support to bridges
Date: Tue, 29 Jan 2013 15:09:56 -0500	[thread overview]
Message-ID: <51082C94.7050003@redhat.com> (raw)
In-Reply-To: <1359489180-10012-1-git-send-email-vyasevic@redhat.com>

This is aimed for net-next.  Sorry for any confusion.

-vlad

On 01/29/2013 02:52 PM, Vlad Yasevich wrote:
> This is another revision of the VLAN filtering patchset.  It offers
> functionality that is similar to what can be found in switches as
> far as VLAN configuration and filtering of frames according to VLAN
> tags.
>
> Each port on the bridge, as well as the bridge itself, can be configured
> with a set of VLANs that they are willing to accept.  One of the vlans
> may be chosen as PVID and any untagged traffic will be associated with it.
>
> Changes since v6:
> * VLANs are now stored in a VLAN bitmap per port.  This allows for O(1)
> lookup at ingress and egress.  We simply check to see if the bit associated
> with the vlan id is set in the map.  The drawback to this approach is that
> it wastes some space when there is only a small number of VLANs.
> * In addition to the build time configuration option, VLAN filtering also has
> a configuration paramter in sysfs.  By default the filtering is turned off
> and all traffic is permitted.  When the filtring is turned on, we do strict
> matching to the filter configured.  Thus, if there is no configuration, all
> packets are rejected.  This was done to make the behavior more streight
> forward.  Without this (and if egress policy patch is rejected), the
> decision for how to forward untagged traffic that was not filtered at ingress
> is almost impossible to make.  It would not be right to deliver to every
> port that has PVID set as, each port may have a different PVID.
> * Separate egress policy bitmap patch has been isolated and is provided last
> in the series.  This has been a more contentious piece of functionality and I
> wanted to isolate it so that it could easily be dropped and not block the whole
> series.
>
> Changes since v5:
>   - Pulled VLAN filtering into its own file and made it a configuration options.
>   - Made new vlan filtering option dependent on VLAN_8021Q.
>   - Got rid of HW filter inlines and moved then vlan_core.c.
>     (All of the above suggested by Stephen Hemminger)
>
> Changes since v4:
>   - Pull per-port vlan data into its own structures and give it to the bridge
>     device thus making bridge device behave like a regular port for vlan
>     configuration.
>   - Add a per-vlan 'untagged' bitmap that determins egress policy.  If a port
>     is part of this bitmap, traffic egresses untagged.
>   - PVID is now used for ingress policy only.  Incomming frames without VLAN tag
>     are assigned to the PVID vlan.  Egress is determined via bitmap memberships.
>   - Allow for incremental config of a vlan.  Now, PVID and untagged memberships
>     may be set on existing vlans.  They however can NOT be cleared separately.
>   - VLAN deletion is now done via RTM_DELLINK command for PF_BRIDGE family.
>     This cleans up the netlink interface.
>
> Changes since v3:
>   - Re-integrated compiler problems that got left out last time.  Appologies.
>   - checkpatches.pl errors fixed
>
> Changes since v2:
>   - Added inline functiosn to manimulate vlan hw filters and re-use in 8021q
>     and bridge code.
>   - Use rtnl_dereference (Michael Tsirkin)
>   - Remove synchronize_net() call (Eric Dumazet)
>   - Fix NULL ptr deref bug I introduced in br_ifinfo_notify.
>
> Changes since v1:
>   - Fixed some forwarding bugs.
>   - Add vlan to local fdb entries.  New local entries are created per vlan
>     to facilite correct forwarding to bridge interface.
>   - Allow configuration of vlans directly on the bridge master device
>     in addition to ports.
>
> Changes since rfc v2:
>   - Per-port vlan bitmap is gone and is replaced with a vlan list.
>   - Added bridge vlan list, which is referenced by each port.  Entries in
>     the birdge vlan list have port bitmap that shows which port are parts
>     of which vlan.
>   - Netlink API changes.
>   - Dropped sysfs support for now.  If people think this is really usefull,
>     can add it back.
>   - Support for native/untagged vlans.
>
> Changes since rfc v1:
>   - Comments addressed regarding formatting and RCU usage
>   - iocts have been removed and changed over the netlink interface.
>   - Added support of user added ndb entries.
>   - changed sysfs interface to export a bitmap.  Also added a write interface.
>     I am not sure how much I like it, but it made my testing easier/faster.  I
>     might change the write interface to take text instead of binary.
>
> Vlad Yasevich (13):
>    vlan: wrap hw-acceleration calls in separate functions.
>    bridge: Add vlan filtering infrastructure
>    bridge: Validate that vlan is permitted on ingress
>    bridge: Verify that a vlan is allowed to egress on give port
>    bridge: Add netlink interface to configure vlans on bridge ports
>    bridge: Add the ability to configure pvid
>    bridge: Implement vlan ingress/egress policy
>    bridge: Add vlan to unicast fdb entries
>    bridge: Add vlan id to multicast groups
>    bridge: Add vlan support to static neighbors
>    bridge: Add vlan support for local fdb entries
>    bridge: Dump vlan information from a bridge port
>    bridge: Separate egress policy bitmap
>
>   drivers/net/ethernet/intel/ixgbe/ixgbe_main.c |    5 +-
>   drivers/net/macvlan.c                         |    2 +-
>   drivers/net/vxlan.c                           |    3 +-
>   include/linux/if_vlan.h                       |   21 ++
>   include/linux/netdevice.h                     |    6 +-
>   include/uapi/linux/if_bridge.h                |   13 +-
>   include/uapi/linux/neighbour.h                |    1 +
>   include/uapi/linux/rtnetlink.h                |    1 +
>   net/8021q/vlan.c                              |    4 +-
>   net/8021q/vlan_core.c                         |   82 ++++-
>   net/bridge/Kconfig                            |   14 +
>   net/bridge/Makefile                           |    2 +
>   net/bridge/br_device.c                        |    7 +-
>   net/bridge/br_fdb.c                           |  259 ++++++++++++---
>   net/bridge/br_forward.c                       |    9 +
>   net/bridge/br_if.c                            |    4 +-
>   net/bridge/br_input.c                         |   28 ++-
>   net/bridge/br_multicast.c                     |   69 +++--
>   net/bridge/br_netlink.c                       |  239 ++++++++++++--
>   net/bridge/br_private.h                       |  153 ++++++++-
>   net/bridge/br_sysfs_br.c                      |   21 ++
>   net/bridge/br_vlan.c                          |  448 +++++++++++++++++++++++++
>   net/core/rtnetlink.c                          |  111 ++++++-
>   23 files changed, 1354 insertions(+), 148 deletions(-)
>   create mode 100644 net/bridge/br_vlan.c
>


WARNING: multiple messages have this Message-ID (diff)
From: Vlad Yasevich <vyasevic@redhat.com>
To: shemminger@vyatta.com
Cc: bridge@lists.linux-foundation.org, davem@davemloft.net,
	netdev@vger.kernel.org, shmulik.ladkani@gmail.com
Subject: Re: [PATCH 00/13] Add basic VLAN support to bridges
Date: Tue, 29 Jan 2013 15:09:56 -0500	[thread overview]
Message-ID: <51082C94.7050003@redhat.com> (raw)
In-Reply-To: <1359489180-10012-1-git-send-email-vyasevic@redhat.com>

This is aimed for net-next.  Sorry for any confusion.

-vlad

On 01/29/2013 02:52 PM, Vlad Yasevich wrote:
> This is another revision of the VLAN filtering patchset.  It offers
> functionality that is similar to what can be found in switches as
> far as VLAN configuration and filtering of frames according to VLAN
> tags.
>
> Each port on the bridge, as well as the bridge itself, can be configured
> with a set of VLANs that they are willing to accept.  One of the vlans
> may be chosen as PVID and any untagged traffic will be associated with it.
>
> Changes since v6:
> * VLANs are now stored in a VLAN bitmap per port.  This allows for O(1)
> lookup at ingress and egress.  We simply check to see if the bit associated
> with the vlan id is set in the map.  The drawback to this approach is that
> it wastes some space when there is only a small number of VLANs.
> * In addition to the build time configuration option, VLAN filtering also has
> a configuration paramter in sysfs.  By default the filtering is turned off
> and all traffic is permitted.  When the filtring is turned on, we do strict
> matching to the filter configured.  Thus, if there is no configuration, all
> packets are rejected.  This was done to make the behavior more streight
> forward.  Without this (and if egress policy patch is rejected), the
> decision for how to forward untagged traffic that was not filtered at ingress
> is almost impossible to make.  It would not be right to deliver to every
> port that has PVID set as, each port may have a different PVID.
> * Separate egress policy bitmap patch has been isolated and is provided last
> in the series.  This has been a more contentious piece of functionality and I
> wanted to isolate it so that it could easily be dropped and not block the whole
> series.
>
> Changes since v5:
>   - Pulled VLAN filtering into its own file and made it a configuration options.
>   - Made new vlan filtering option dependent on VLAN_8021Q.
>   - Got rid of HW filter inlines and moved then vlan_core.c.
>     (All of the above suggested by Stephen Hemminger)
>
> Changes since v4:
>   - Pull per-port vlan data into its own structures and give it to the bridge
>     device thus making bridge device behave like a regular port for vlan
>     configuration.
>   - Add a per-vlan 'untagged' bitmap that determins egress policy.  If a port
>     is part of this bitmap, traffic egresses untagged.
>   - PVID is now used for ingress policy only.  Incomming frames without VLAN tag
>     are assigned to the PVID vlan.  Egress is determined via bitmap memberships.
>   - Allow for incremental config of a vlan.  Now, PVID and untagged memberships
>     may be set on existing vlans.  They however can NOT be cleared separately.
>   - VLAN deletion is now done via RTM_DELLINK command for PF_BRIDGE family.
>     This cleans up the netlink interface.
>
> Changes since v3:
>   - Re-integrated compiler problems that got left out last time.  Appologies.
>   - checkpatches.pl errors fixed
>
> Changes since v2:
>   - Added inline functiosn to manimulate vlan hw filters and re-use in 8021q
>     and bridge code.
>   - Use rtnl_dereference (Michael Tsirkin)
>   - Remove synchronize_net() call (Eric Dumazet)
>   - Fix NULL ptr deref bug I introduced in br_ifinfo_notify.
>
> Changes since v1:
>   - Fixed some forwarding bugs.
>   - Add vlan to local fdb entries.  New local entries are created per vlan
>     to facilite correct forwarding to bridge interface.
>   - Allow configuration of vlans directly on the bridge master device
>     in addition to ports.
>
> Changes since rfc v2:
>   - Per-port vlan bitmap is gone and is replaced with a vlan list.
>   - Added bridge vlan list, which is referenced by each port.  Entries in
>     the birdge vlan list have port bitmap that shows which port are parts
>     of which vlan.
>   - Netlink API changes.
>   - Dropped sysfs support for now.  If people think this is really usefull,
>     can add it back.
>   - Support for native/untagged vlans.
>
> Changes since rfc v1:
>   - Comments addressed regarding formatting and RCU usage
>   - iocts have been removed and changed over the netlink interface.
>   - Added support of user added ndb entries.
>   - changed sysfs interface to export a bitmap.  Also added a write interface.
>     I am not sure how much I like it, but it made my testing easier/faster.  I
>     might change the write interface to take text instead of binary.
>
> Vlad Yasevich (13):
>    vlan: wrap hw-acceleration calls in separate functions.
>    bridge: Add vlan filtering infrastructure
>    bridge: Validate that vlan is permitted on ingress
>    bridge: Verify that a vlan is allowed to egress on give port
>    bridge: Add netlink interface to configure vlans on bridge ports
>    bridge: Add the ability to configure pvid
>    bridge: Implement vlan ingress/egress policy
>    bridge: Add vlan to unicast fdb entries
>    bridge: Add vlan id to multicast groups
>    bridge: Add vlan support to static neighbors
>    bridge: Add vlan support for local fdb entries
>    bridge: Dump vlan information from a bridge port
>    bridge: Separate egress policy bitmap
>
>   drivers/net/ethernet/intel/ixgbe/ixgbe_main.c |    5 +-
>   drivers/net/macvlan.c                         |    2 +-
>   drivers/net/vxlan.c                           |    3 +-
>   include/linux/if_vlan.h                       |   21 ++
>   include/linux/netdevice.h                     |    6 +-
>   include/uapi/linux/if_bridge.h                |   13 +-
>   include/uapi/linux/neighbour.h                |    1 +
>   include/uapi/linux/rtnetlink.h                |    1 +
>   net/8021q/vlan.c                              |    4 +-
>   net/8021q/vlan_core.c                         |   82 ++++-
>   net/bridge/Kconfig                            |   14 +
>   net/bridge/Makefile                           |    2 +
>   net/bridge/br_device.c                        |    7 +-
>   net/bridge/br_fdb.c                           |  259 ++++++++++++---
>   net/bridge/br_forward.c                       |    9 +
>   net/bridge/br_if.c                            |    4 +-
>   net/bridge/br_input.c                         |   28 ++-
>   net/bridge/br_multicast.c                     |   69 +++--
>   net/bridge/br_netlink.c                       |  239 ++++++++++++--
>   net/bridge/br_private.h                       |  153 ++++++++-
>   net/bridge/br_sysfs_br.c                      |   21 ++
>   net/bridge/br_vlan.c                          |  448 +++++++++++++++++++++++++
>   net/core/rtnetlink.c                          |  111 ++++++-
>   23 files changed, 1354 insertions(+), 148 deletions(-)
>   create mode 100644 net/bridge/br_vlan.c
>

  parent reply	other threads:[~2013-01-29 20:09 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-29 19:52 [Bridge] [PATCH 00/13] Add basic VLAN support to bridges Vlad Yasevich
2013-01-29 19:52 ` Vlad Yasevich
2013-01-29 19:52 ` [Bridge] [PATCH 01/13] vlan: wrap hw-acceleration calls in separate functions Vlad Yasevich
2013-01-29 19:52   ` Vlad Yasevich
2013-01-29 19:52 ` [Bridge] [PATCH 02/13] bridge: Add vlan filtering infrastructure Vlad Yasevich
2013-01-29 19:52   ` Vlad Yasevich
2013-01-29 19:52 ` [Bridge] [PATCH 03/13] bridge: Validate that vlan is permitted on ingress Vlad Yasevich
2013-01-29 19:52   ` Vlad Yasevich
2013-01-29 19:52 ` [Bridge] [PATCH 04/13] bridge: Verify that a vlan is allowed to egress on give port Vlad Yasevich
2013-01-29 19:52   ` Vlad Yasevich
2013-01-29 19:52 ` [Bridge] [PATCH 05/13] bridge: Add netlink interface to configure vlans on bridge ports Vlad Yasevich
2013-01-29 19:52   ` Vlad Yasevich
2013-01-29 19:52 ` [Bridge] [PATCH 06/13] bridge: Add the ability to configure pvid Vlad Yasevich
2013-01-29 19:52   ` Vlad Yasevich
2013-01-29 19:52 ` [Bridge] [PATCH 07/13] bridge: Implement vlan ingress/egress policy Vlad Yasevich
2013-01-29 19:52   ` Vlad Yasevich
2013-01-29 19:52 ` [Bridge] [PATCH 08/13] bridge: Add vlan to unicast fdb entries Vlad Yasevich
2013-01-29 19:52   ` Vlad Yasevich
2013-01-29 19:52 ` [Bridge] [PATCH 09/13] bridge: Add vlan id to multicast groups Vlad Yasevich
2013-01-29 19:52   ` Vlad Yasevich
2013-01-29 19:52 ` [Bridge] [PATCH 10/13] bridge: Add vlan support to static neighbors Vlad Yasevich
2013-01-29 19:52   ` Vlad Yasevich
2013-01-29 19:52 ` [Bridge] [PATCH 11/13] bridge: Add vlan support for local fdb entries Vlad Yasevich
2013-01-29 19:52   ` Vlad Yasevich
2013-01-29 19:52 ` [Bridge] [PATCH 12/13] bridge: Dump vlan information from a bridge port Vlad Yasevich
2013-01-29 19:52   ` Vlad Yasevich
2013-01-29 19:53 ` [Bridge] [PATCH 13/13] bridge: Separate egress policy bitmap Vlad Yasevich
2013-01-29 19:53   ` Vlad Yasevich
2013-01-29 20:09 ` Vlad Yasevich [this message]
2013-01-29 20:09   ` [PATCH 00/13] Add basic VLAN support to bridges Vlad Yasevich
2013-01-29 21:11 ` [Bridge] " David Miller
2013-01-29 21:11   ` 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=51082C94.7050003@redhat.com \
    --to=vyasevic@redhat.com \
    --cc=bridge@lists.linux-foundation.org \
    --cc=davem@davemloft.net \
    --cc=netdev@vger.kernel.org \
    --cc=shemminger@vyatta.com \
    --cc=shmulik.ladkani@gmail.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.