From: Hans Schultz <schultz.hans@gmail.com>
To: davem@davemloft.net, kuba@kernel.org
Cc: Ivan Vecera <ivecera@redhat.com>, Andrew Lunn <andrew@lunn.ch>,
Florian Fainelli <f.fainelli@gmail.com>,
Jiri Pirko <jiri@resnulli.us>,
Daniel Borkmann <daniel@iogearbox.net>,
netdev@vger.kernel.org, Nikolay Aleksandrov <razor@blackwall.org>,
bridge@lists.linux-foundation.org,
Eric Dumazet <edumazet@google.com>,
Ido Schimmel <idosch@nvidia.com>,
linux-kernel@vger.kernel.org,
Hans Schultz <schultz.hans+netdev@gmail.com>,
linux-kselftest@vger.kernel.org, Roopa Prabhu <roopa@nvidia.com>,
Paolo Abeni <pabeni@redhat.com>,
Vladimir Oltean <olteanv@gmail.com>,
Shuah Khan <shuah@kernel.org>,
Vivien Didelot <vivien.didelot@gmail.com>
Subject: [Bridge] [PATCH V3 net-next 2/4] net: switchdev: add support for offloading of fdb locked flag
Date: Tue, 24 May 2022 17:21:42 +0200 [thread overview]
Message-ID: <20220524152144.40527-3-schultz.hans+netdev@gmail.com> (raw)
In-Reply-To: <20220524152144.40527-1-schultz.hans+netdev@gmail.com>
Used for Mac-auth/MAB feature in the offloaded case.
Signed-off-by: Hans Schultz <schultz.hans+netdev@gmail.com>
---
include/net/dsa.h | 6 ++++++
include/net/switchdev.h | 3 ++-
net/bridge/br.c | 3 ++-
net/bridge/br_fdb.c | 7 +++++--
net/bridge/br_private.h | 2 +-
5 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/include/net/dsa.h b/include/net/dsa.h
index 14f07275852b..a5a843b2d67d 100644
--- a/include/net/dsa.h
+++ b/include/net/dsa.h
@@ -330,6 +330,12 @@ struct dsa_port {
/* List of VLANs that CPU and DSA ports are members of. */
struct mutex vlans_lock;
struct list_head vlans;
+
+ /* List and maintenance of locked ATU entries */
+ struct mutex locked_entries_list_lock;
+ struct list_head atu_locked_entries_list;
+ atomic_t atu_locked_entry_cnt;
+ struct delayed_work atu_work;
};
/* TODO: ideally DSA ports would have a single dp->link_dp member,
diff --git a/include/net/switchdev.h b/include/net/switchdev.h
index aa0171d5786d..62f4f7c9c7c2 100644
--- a/include/net/switchdev.h
+++ b/include/net/switchdev.h
@@ -245,7 +245,8 @@ struct switchdev_notifier_fdb_info {
u16 vid;
u8 added_by_user:1,
is_local:1,
- offloaded:1;
+ offloaded:1,
+ locked:1;
};
struct switchdev_notifier_port_obj_info {
diff --git a/net/bridge/br.c b/net/bridge/br.c
index 96e91d69a9a8..12933388a5a4 100644
--- a/net/bridge/br.c
+++ b/net/bridge/br.c
@@ -166,7 +166,8 @@ static int br_switchdev_event(struct notifier_block *unused,
case SWITCHDEV_FDB_ADD_TO_BRIDGE:
fdb_info = ptr;
err = br_fdb_external_learn_add(br, p, fdb_info->addr,
- fdb_info->vid, false);
+ fdb_info->vid, false,
+ fdb_info->locked);
if (err) {
err = notifier_from_errno(err);
break;
diff --git a/net/bridge/br_fdb.c b/net/bridge/br_fdb.c
index 6b83e2d6435d..92469547283a 100644
--- a/net/bridge/br_fdb.c
+++ b/net/bridge/br_fdb.c
@@ -1135,7 +1135,7 @@ static int __br_fdb_add(struct ndmsg *ndm, struct net_bridge *br,
"FDB entry towards bridge must be permanent");
return -EINVAL;
}
- err = br_fdb_external_learn_add(br, p, addr, vid, true);
+ err = br_fdb_external_learn_add(br, p, addr, vid, true, false);
} else {
spin_lock_bh(&br->hash_lock);
err = fdb_add_entry(br, p, addr, ndm, nlh_flags, vid, nfea_tb);
@@ -1365,7 +1365,7 @@ void br_fdb_unsync_static(struct net_bridge *br, struct net_bridge_port *p)
int br_fdb_external_learn_add(struct net_bridge *br, struct net_bridge_port *p,
const unsigned char *addr, u16 vid,
- bool swdev_notify)
+ bool swdev_notify, bool locked)
{
struct net_bridge_fdb_entry *fdb;
bool modified = false;
@@ -1385,6 +1385,9 @@ int br_fdb_external_learn_add(struct net_bridge *br, struct net_bridge_port *p,
if (!p)
flags |= BIT(BR_FDB_LOCAL);
+ if (locked)
+ flags |= BIT(BR_FDB_ENTRY_LOCKED);
+
fdb = fdb_create(br, p, addr, vid, flags);
if (!fdb) {
err = -ENOMEM;
diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h
index be17c99efe65..88913e6a59e1 100644
--- a/net/bridge/br_private.h
+++ b/net/bridge/br_private.h
@@ -815,7 +815,7 @@ int br_fdb_sync_static(struct net_bridge *br, struct net_bridge_port *p);
void br_fdb_unsync_static(struct net_bridge *br, struct net_bridge_port *p);
int br_fdb_external_learn_add(struct net_bridge *br, struct net_bridge_port *p,
const unsigned char *addr, u16 vid,
- bool swdev_notify);
+ bool swdev_notify, bool locked);
int br_fdb_external_learn_del(struct net_bridge *br, struct net_bridge_port *p,
const unsigned char *addr, u16 vid,
bool swdev_notify);
--
2.30.2
WARNING: multiple messages have this Message-ID (diff)
From: Hans Schultz <schultz.hans@gmail.com>
To: davem@davemloft.net, kuba@kernel.org
Cc: netdev@vger.kernel.org,
Hans Schultz <schultz.hans+netdev@gmail.com>,
Andrew Lunn <andrew@lunn.ch>,
Vivien Didelot <vivien.didelot@gmail.com>,
Florian Fainelli <f.fainelli@gmail.com>,
Vladimir Oltean <olteanv@gmail.com>,
Eric Dumazet <edumazet@google.com>,
Paolo Abeni <pabeni@redhat.com>, Jiri Pirko <jiri@resnulli.us>,
Ivan Vecera <ivecera@redhat.com>, Roopa Prabhu <roopa@nvidia.com>,
Nikolay Aleksandrov <razor@blackwall.org>,
Shuah Khan <shuah@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
Ido Schimmel <idosch@nvidia.com>,
linux-kernel@vger.kernel.org, bridge@lists.linux-foundation.org,
linux-kselftest@vger.kernel.org
Subject: [PATCH V3 net-next 2/4] net: switchdev: add support for offloading of fdb locked flag
Date: Tue, 24 May 2022 17:21:42 +0200 [thread overview]
Message-ID: <20220524152144.40527-3-schultz.hans+netdev@gmail.com> (raw)
In-Reply-To: <20220524152144.40527-1-schultz.hans+netdev@gmail.com>
Used for Mac-auth/MAB feature in the offloaded case.
Signed-off-by: Hans Schultz <schultz.hans+netdev@gmail.com>
---
include/net/dsa.h | 6 ++++++
include/net/switchdev.h | 3 ++-
net/bridge/br.c | 3 ++-
net/bridge/br_fdb.c | 7 +++++--
net/bridge/br_private.h | 2 +-
5 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/include/net/dsa.h b/include/net/dsa.h
index 14f07275852b..a5a843b2d67d 100644
--- a/include/net/dsa.h
+++ b/include/net/dsa.h
@@ -330,6 +330,12 @@ struct dsa_port {
/* List of VLANs that CPU and DSA ports are members of. */
struct mutex vlans_lock;
struct list_head vlans;
+
+ /* List and maintenance of locked ATU entries */
+ struct mutex locked_entries_list_lock;
+ struct list_head atu_locked_entries_list;
+ atomic_t atu_locked_entry_cnt;
+ struct delayed_work atu_work;
};
/* TODO: ideally DSA ports would have a single dp->link_dp member,
diff --git a/include/net/switchdev.h b/include/net/switchdev.h
index aa0171d5786d..62f4f7c9c7c2 100644
--- a/include/net/switchdev.h
+++ b/include/net/switchdev.h
@@ -245,7 +245,8 @@ struct switchdev_notifier_fdb_info {
u16 vid;
u8 added_by_user:1,
is_local:1,
- offloaded:1;
+ offloaded:1,
+ locked:1;
};
struct switchdev_notifier_port_obj_info {
diff --git a/net/bridge/br.c b/net/bridge/br.c
index 96e91d69a9a8..12933388a5a4 100644
--- a/net/bridge/br.c
+++ b/net/bridge/br.c
@@ -166,7 +166,8 @@ static int br_switchdev_event(struct notifier_block *unused,
case SWITCHDEV_FDB_ADD_TO_BRIDGE:
fdb_info = ptr;
err = br_fdb_external_learn_add(br, p, fdb_info->addr,
- fdb_info->vid, false);
+ fdb_info->vid, false,
+ fdb_info->locked);
if (err) {
err = notifier_from_errno(err);
break;
diff --git a/net/bridge/br_fdb.c b/net/bridge/br_fdb.c
index 6b83e2d6435d..92469547283a 100644
--- a/net/bridge/br_fdb.c
+++ b/net/bridge/br_fdb.c
@@ -1135,7 +1135,7 @@ static int __br_fdb_add(struct ndmsg *ndm, struct net_bridge *br,
"FDB entry towards bridge must be permanent");
return -EINVAL;
}
- err = br_fdb_external_learn_add(br, p, addr, vid, true);
+ err = br_fdb_external_learn_add(br, p, addr, vid, true, false);
} else {
spin_lock_bh(&br->hash_lock);
err = fdb_add_entry(br, p, addr, ndm, nlh_flags, vid, nfea_tb);
@@ -1365,7 +1365,7 @@ void br_fdb_unsync_static(struct net_bridge *br, struct net_bridge_port *p)
int br_fdb_external_learn_add(struct net_bridge *br, struct net_bridge_port *p,
const unsigned char *addr, u16 vid,
- bool swdev_notify)
+ bool swdev_notify, bool locked)
{
struct net_bridge_fdb_entry *fdb;
bool modified = false;
@@ -1385,6 +1385,9 @@ int br_fdb_external_learn_add(struct net_bridge *br, struct net_bridge_port *p,
if (!p)
flags |= BIT(BR_FDB_LOCAL);
+ if (locked)
+ flags |= BIT(BR_FDB_ENTRY_LOCKED);
+
fdb = fdb_create(br, p, addr, vid, flags);
if (!fdb) {
err = -ENOMEM;
diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h
index be17c99efe65..88913e6a59e1 100644
--- a/net/bridge/br_private.h
+++ b/net/bridge/br_private.h
@@ -815,7 +815,7 @@ int br_fdb_sync_static(struct net_bridge *br, struct net_bridge_port *p);
void br_fdb_unsync_static(struct net_bridge *br, struct net_bridge_port *p);
int br_fdb_external_learn_add(struct net_bridge *br, struct net_bridge_port *p,
const unsigned char *addr, u16 vid,
- bool swdev_notify);
+ bool swdev_notify, bool locked);
int br_fdb_external_learn_del(struct net_bridge *br, struct net_bridge_port *p,
const unsigned char *addr, u16 vid,
bool swdev_notify);
--
2.30.2
next prev parent reply other threads:[~2022-05-24 15:21 UTC|newest]
Thread overview: 108+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-24 15:21 [Bridge] [PATCH V3 net-next 0/4] Extend locked port feature with FDB locked flag (MAC-Auth/MAB) Hans Schultz
2022-05-24 15:21 ` Hans Schultz
2022-05-24 15:21 ` [Bridge] [PATCH V3 net-next 1/4] net: bridge: add fdb flag to extent locked port feature Hans Schultz
2022-05-24 15:21 ` Hans Schultz
2022-05-24 15:39 ` [Bridge] " Nikolay Aleksandrov
2022-05-24 15:39 ` Nikolay Aleksandrov
2022-05-24 16:08 ` [Bridge] " Hans Schultz
2022-05-24 16:08 ` Hans Schultz
2022-05-24 16:21 ` [Bridge] " Hans Schultz
2022-05-24 16:21 ` Hans Schultz
2022-05-25 8:06 ` [Bridge] " Nikolay Aleksandrov
2022-05-25 8:06 ` Nikolay Aleksandrov
2022-05-25 8:34 ` [Bridge] " Hans Schultz
2022-05-25 8:34 ` Hans Schultz
2022-05-25 8:38 ` [Bridge] " Nikolay Aleksandrov
2022-05-25 8:38 ` Nikolay Aleksandrov
2022-05-25 9:11 ` [Bridge] " Hans Schultz
2022-05-25 9:11 ` Hans Schultz
2022-05-25 10:18 ` [Bridge] " Nikolay Aleksandrov
2022-05-25 10:18 ` Nikolay Aleksandrov
2022-07-06 18:13 ` [Bridge] " Vladimir Oltean
2022-07-06 18:13 ` Vladimir Oltean
2022-07-06 19:38 ` [Bridge] " Nikolay Aleksandrov
2022-07-06 19:38 ` Nikolay Aleksandrov
2022-07-06 20:21 ` [Bridge] " Vladimir Oltean
2022-07-06 20:21 ` Vladimir Oltean
2022-07-06 21:01 ` [Bridge] " Nikolay Aleksandrov
2022-07-06 21:01 ` Nikolay Aleksandrov
2022-07-07 14:08 ` [Bridge] " Nikolay Aleksandrov
2022-07-07 14:08 ` Nikolay Aleksandrov
2022-07-07 17:15 ` [Bridge] " Vladimir Oltean
2022-07-07 17:15 ` Vladimir Oltean
2022-07-07 17:26 ` [Bridge] " Nikolay Aleksandrov
2022-07-07 17:26 ` Nikolay Aleksandrov
2022-07-08 6:38 ` [Bridge] " Hans S
2022-07-08 6:38 ` Hans S
2022-05-26 14:13 ` [Bridge] " Ido Schimmel
2022-05-26 14:13 ` Ido Schimmel
2022-05-27 8:52 ` [Bridge] " Hans Schultz
2022-05-27 8:52 ` Hans Schultz
2022-05-27 9:58 ` [Bridge] " Ido Schimmel
2022-05-27 9:58 ` Ido Schimmel
2022-05-27 16:00 ` [Bridge] " Hans Schultz
2022-05-27 16:00 ` Hans Schultz
2022-05-31 9:34 ` [Bridge] " Hans Schultz
2022-05-31 9:34 ` Hans Schultz
2022-05-31 14:23 ` [Bridge] " Ido Schimmel
2022-05-31 14:23 ` Ido Schimmel
2022-05-31 15:49 ` [Bridge] " Hans Schultz
2022-05-31 15:49 ` Hans Schultz
2022-06-02 9:17 ` [Bridge] " Hans Schultz
2022-06-02 9:17 ` Hans Schultz
2022-06-02 9:33 ` [Bridge] " Nikolay Aleksandrov
2022-06-02 9:33 ` Nikolay Aleksandrov
2022-06-02 10:17 ` [Bridge] " Hans Schultz
2022-06-02 10:17 ` Hans Schultz
2022-06-02 10:30 ` [Bridge] " Nikolay Aleksandrov
2022-06-02 10:30 ` Nikolay Aleksandrov
2022-06-02 10:39 ` [Bridge] " Ido Schimmel
2022-06-02 10:39 ` Ido Schimmel
2022-06-02 11:36 ` [Bridge] " Hans Schultz
2022-06-02 11:36 ` Hans Schultz
2022-06-02 11:55 ` [Bridge] " Ido Schimmel
2022-06-02 11:55 ` Ido Schimmel
2022-06-02 12:08 ` [Bridge] " Hans Schultz
2022-06-02 12:08 ` Hans Schultz
2022-06-02 12:18 ` [Bridge] " Ido Schimmel
2022-06-02 12:18 ` Ido Schimmel
2022-06-02 12:53 ` [Bridge] " Hans S
2022-06-02 13:27 ` Hans S
2022-06-02 13:27 ` Hans S
2022-05-24 15:21 ` Hans Schultz [this message]
2022-05-24 15:21 ` [PATCH V3 net-next 2/4] net: switchdev: add support for offloading of fdb locked flag Hans Schultz
2022-06-27 16:06 ` [Bridge] " Vladimir Oltean
2022-06-27 16:06 ` Vladimir Oltean
2022-05-24 15:21 ` [Bridge] [PATCH V3 net-next 3/4] net: dsa: mv88e6xxx: mac-auth/MAB implementation Hans Schultz
2022-05-24 15:21 ` Hans Schultz
2022-05-24 21:36 ` kernel test robot
2022-06-27 12:58 ` [Bridge] " Hans S
2022-06-27 12:58 ` Hans S
2022-06-27 18:05 ` [Bridge] " Vladimir Oltean
2022-06-27 18:05 ` Vladimir Oltean
2022-06-28 12:26 ` [Bridge] " Hans S
2022-06-28 12:26 ` Hans S
2022-07-05 15:05 ` [Bridge] " Hans S
2022-07-05 15:05 ` Hans S
2022-07-06 13:28 ` [Bridge] " Vladimir Oltean
2022-07-06 13:28 ` Vladimir Oltean
2022-07-06 13:48 ` [Bridge] " Hans S
2022-07-06 13:48 ` Hans S
2022-07-06 8:55 ` [Bridge] " Vladimir Oltean
2022-07-06 8:55 ` Vladimir Oltean
2022-07-06 10:12 ` [Bridge] " Hans S
2022-07-06 10:12 ` Hans S
2022-07-06 14:23 ` [Bridge] " Hans S
2022-07-06 14:23 ` Hans S
2022-07-06 14:33 ` [Bridge] " Vladimir Oltean
2022-07-06 14:33 ` Vladimir Oltean
2022-07-06 15:38 ` [Bridge] " Hans S
2022-07-06 15:38 ` Hans S
2022-07-07 6:54 ` [Bridge] " Hans S
2022-07-07 6:54 ` Hans S
2022-05-24 15:21 ` [Bridge] [PATCH V3 net-next 4/4] selftests: forwarding: add test of MAC-Auth Bypass to locked port tests Hans Schultz
2022-05-24 15:21 ` Hans Schultz
2022-05-26 14:27 ` [Bridge] " Ido Schimmel
2022-05-26 14:27 ` Ido Schimmel
2022-05-27 9:07 ` [Bridge] " Hans Schultz
2022-05-27 9:07 ` Hans Schultz
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=20220524152144.40527-3-schultz.hans+netdev@gmail.com \
--to=schultz.hans@gmail.com \
--cc=andrew@lunn.ch \
--cc=bridge@lists.linux-foundation.org \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=f.fainelli@gmail.com \
--cc=idosch@nvidia.com \
--cc=ivecera@redhat.com \
--cc=jiri@resnulli.us \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=olteanv@gmail.com \
--cc=pabeni@redhat.com \
--cc=razor@blackwall.org \
--cc=roopa@nvidia.com \
--cc=schultz.hans+netdev@gmail.com \
--cc=shuah@kernel.org \
--cc=vivien.didelot@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.