diff options
author | Dmitry Bogdanov <dbogdanov@marvell.com> | 2020-03-25 15:52:35 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2020-03-26 20:17:36 -0700 |
commit | a249f8050624f92f844605274de3367e2c8ac706 (patch) | |
tree | 7ac5c56477f78642d3cb90603b474a401f00958b /drivers/net/macsec.c | |
parent | 182879f89b858fede98136ea3ad45fe9c7178387 (diff) | |
download | linux-stable-a249f8050624f92f844605274de3367e2c8ac706.tar.gz linux-stable-a249f8050624f92f844605274de3367e2c8ac706.tar.bz2 linux-stable-a249f8050624f92f844605274de3367e2c8ac706.zip |
net: macsec: allow multiple macsec devices with offload
Offload engine can setup several SecY. Each macsec interface shall have
its own mac address. It will filter a traffic by dest mac address.
Signed-off-by: Dmitry Bogdanov <dbogdanov@marvell.com>
Signed-off-by: Mark Starovoytov <mstarovoitov@marvell.com>
Signed-off-by: Igor Russkikh <irusskikh@marvell.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/macsec.c')
-rw-r--r-- | drivers/net/macsec.c | 25 |
1 files changed, 1 insertions, 24 deletions
diff --git a/drivers/net/macsec.c b/drivers/net/macsec.c index 093e81d605ec..146a7881a20a 100644 --- a/drivers/net/macsec.c +++ b/drivers/net/macsec.c @@ -2553,11 +2553,10 @@ static int macsec_upd_offload(struct sk_buff *skb, struct genl_info *info) enum macsec_offload offload, prev_offload; int (*func)(struct macsec_context *ctx); struct nlattr **attrs = info->attrs; - struct net_device *dev, *loop_dev; + struct net_device *dev; const struct macsec_ops *ops; struct macsec_context ctx; struct macsec_dev *macsec; - struct net *loop_net; int ret; if (!attrs[MACSEC_ATTR_IFINDEX]) @@ -2585,28 +2584,6 @@ static int macsec_upd_offload(struct sk_buff *skb, struct genl_info *info) !macsec_check_offload(offload, macsec)) return -EOPNOTSUPP; - if (offload == MACSEC_OFFLOAD_OFF) - goto skip_limitation; - - /* Check the physical interface isn't offloading another interface - * first. - */ - for_each_net(loop_net) { - for_each_netdev(loop_net, loop_dev) { - struct macsec_dev *priv; - - if (!netif_is_macsec(loop_dev)) - continue; - - priv = macsec_priv(loop_dev); - - if (priv->real_dev == macsec->real_dev && - priv->offload != MACSEC_OFFLOAD_OFF) - return -EBUSY; - } - } - -skip_limitation: /* Check if the net device is busy. */ if (netif_running(dev)) return -EBUSY; |