* [PATCH net-next 1/2] macsec: add support for IFLA_MACSEC_OFFLOAD in macsec_changelink
@ 2022-12-27 8:25 ehakim
2022-12-27 8:25 ` [PATCH net-next 2/2] macsec: dump IFLA_MACSEC_OFFLOAD attribute as part of macsec dump ehakim
2023-01-03 8:55 ` [PATCH net-next 1/2] macsec: add support for IFLA_MACSEC_OFFLOAD in macsec_changelink Emeel Hakim
0 siblings, 2 replies; 6+ messages in thread
From: ehakim @ 2022-12-27 8:25 UTC (permalink / raw)
To: netdev; +Cc: raeds, davem, edumazet, kuba, pabeni, sd, atenart, Emeel Hakim
From: Emeel Hakim <ehakim@nvidia.com>
Add support for changing Macsec offload selection through the
netlink layer by implementing the relevant changes in
macsec_changelink.
Since the handling in macsec_changelink is similar to macsec_upd_offload,
update macsec_upd_offload to use a common helper function to avoid
duplication.
Example for setting offload for a macsec device:
ip link set macsec0 type macsec offload mac
Reviewed-by: Raed Salem <raeds@nvidia.com>
Signed-off-by: Emeel Hakim <ehakim@nvidia.com>
---
drivers/net/macsec.c | 116 +++++++++++++++++++++----------------------
1 file changed, 57 insertions(+), 59 deletions(-)
diff --git a/drivers/net/macsec.c b/drivers/net/macsec.c
index bf8ac7a3ded7..1974c59977aa 100644
--- a/drivers/net/macsec.c
+++ b/drivers/net/macsec.c
@@ -2583,95 +2583,87 @@ static bool macsec_is_configured(struct macsec_dev *macsec)
return false;
}
-static int macsec_upd_offload(struct sk_buff *skb, struct genl_info *info)
+static int macsec_update_offload(struct net_device *dev, enum macsec_offload offload)
{
- struct nlattr *tb_offload[MACSEC_OFFLOAD_ATTR_MAX + 1];
- enum macsec_offload offload, prev_offload;
- int (*func)(struct macsec_context *ctx);
- struct nlattr **attrs = info->attrs;
- struct net_device *dev;
+ enum macsec_offload prev_offload;
const struct macsec_ops *ops;
struct macsec_context ctx;
struct macsec_dev *macsec;
int ret = 0;
- if (!attrs[MACSEC_ATTR_IFINDEX])
- return -EINVAL;
-
- if (!attrs[MACSEC_ATTR_OFFLOAD])
- return -EINVAL;
-
- if (nla_parse_nested_deprecated(tb_offload, MACSEC_OFFLOAD_ATTR_MAX,
- attrs[MACSEC_ATTR_OFFLOAD],
- macsec_genl_offload_policy, NULL))
- return -EINVAL;
-
- rtnl_lock();
-
- dev = get_dev_from_nl(genl_info_net(info), attrs);
- if (IS_ERR(dev)) {
- ret = PTR_ERR(dev);
- goto out;
- }
macsec = macsec_priv(dev);
- if (!tb_offload[MACSEC_OFFLOAD_ATTR_TYPE]) {
- ret = -EINVAL;
- goto out;
- }
-
- offload = nla_get_u8(tb_offload[MACSEC_OFFLOAD_ATTR_TYPE]);
if (macsec->offload == offload)
- goto out;
+ return 0;
/* Check if the offloading mode is supported by the underlying layers */
if (offload != MACSEC_OFFLOAD_OFF &&
!macsec_check_offload(offload, macsec)) {
- ret = -EOPNOTSUPP;
- goto out;
+ return -EOPNOTSUPP;
}
/* Check if the net device is busy. */
- if (netif_running(dev)) {
- ret = -EBUSY;
- goto out;
- }
-
- prev_offload = macsec->offload;
- macsec->offload = offload;
+ if (netif_running(dev))
+ return -EBUSY;
/* Check if the device already has rules configured: we do not support
* rules migration.
*/
- if (macsec_is_configured(macsec)) {
- ret = -EBUSY;
- goto rollback;
- }
+ if (macsec_is_configured(macsec))
+ return -EBUSY;
+
+ prev_offload = macsec->offload;
ops = __macsec_get_ops(offload == MACSEC_OFFLOAD_OFF ? prev_offload : offload,
macsec, &ctx);
- if (!ops) {
- ret = -EOPNOTSUPP;
- goto rollback;
- }
+ if (!ops)
+ return -EOPNOTSUPP;
- if (prev_offload == MACSEC_OFFLOAD_OFF)
- func = ops->mdo_add_secy;
- else
- func = ops->mdo_del_secy;
+ macsec->offload = offload;
ctx.secy = &macsec->secy;
- ret = macsec_offload(func, &ctx);
+ ret = offload == MACSEC_OFFLOAD_OFF ? macsec_offload(ops->mdo_del_secy, &ctx)
+ : macsec_offload(ops->mdo_add_secy, &ctx);
if (ret)
- goto rollback;
+ macsec->offload = prev_offload;
- rtnl_unlock();
- return 0;
+ return ret;
+}
+
+static int macsec_upd_offload(struct sk_buff *skb, struct genl_info *info)
+{
+ struct nlattr *tb_offload[MACSEC_OFFLOAD_ATTR_MAX + 1];
+ struct nlattr **attrs = info->attrs;
+ enum macsec_offload offload;
+ struct net_device *dev;
+ int ret;
+
+ if (!attrs[MACSEC_ATTR_IFINDEX])
+ return -EINVAL;
+
+ if (!attrs[MACSEC_ATTR_OFFLOAD])
+ return -EINVAL;
+
+ if (nla_parse_nested_deprecated(tb_offload, MACSEC_OFFLOAD_ATTR_MAX,
+ attrs[MACSEC_ATTR_OFFLOAD],
+ macsec_genl_offload_policy, NULL))
+ return -EINVAL;
+
+ dev = get_dev_from_nl(genl_info_net(info), attrs);
+ if (IS_ERR(dev))
+ return PTR_ERR(dev);
+
+ if (!tb_offload[MACSEC_OFFLOAD_ATTR_TYPE])
+ return -EINVAL;
+
+ offload = nla_get_u8(tb_offload[MACSEC_OFFLOAD_ATTR_TYPE]);
+
+ rtnl_lock();
+
+ ret = macsec_update_offload(dev, offload);
-rollback:
- macsec->offload = prev_offload;
-out:
rtnl_unlock();
+
return ret;
}
@@ -3840,6 +3832,12 @@ static int macsec_changelink(struct net_device *dev, struct nlattr *tb[],
if (ret)
goto cleanup;
+ if (data[IFLA_MACSEC_OFFLOAD]) {
+ ret = macsec_update_offload(dev, nla_get_u8(data[IFLA_MACSEC_OFFLOAD]));
+ if (ret)
+ goto cleanup;
+ }
+
/* If h/w offloading is available, propagate to the device */
if (macsec_is_offloaded(macsec)) {
const struct macsec_ops *ops;
--
2.21.3
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH net-next 2/2] macsec: dump IFLA_MACSEC_OFFLOAD attribute as part of macsec dump
2022-12-27 8:25 [PATCH net-next 1/2] macsec: add support for IFLA_MACSEC_OFFLOAD in macsec_changelink ehakim
@ 2022-12-27 8:25 ` ehakim
2023-01-03 8:55 ` [PATCH net-next 1/2] macsec: add support for IFLA_MACSEC_OFFLOAD in macsec_changelink Emeel Hakim
1 sibling, 0 replies; 6+ messages in thread
From: ehakim @ 2022-12-27 8:25 UTC (permalink / raw)
To: netdev; +Cc: raeds, davem, edumazet, kuba, pabeni, sd, atenart, Emeel Hakim
From: Emeel Hakim <ehakim@nvidia.com>
Support dumping offload netlink attribute in macsec's device
attributes dump.
Change macsec_get_size to consider the offload attribute in
the calculations of the required room for dumping the device
netlink attributes.
Reviewed-by: Raed Salem <raeds@nvidia.com>
Signed-off-by: Emeel Hakim <ehakim@nvidia.com>
---
drivers/net/macsec.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/drivers/net/macsec.c b/drivers/net/macsec.c
index 1974c59977aa..0cff5083e661 100644
--- a/drivers/net/macsec.c
+++ b/drivers/net/macsec.c
@@ -4238,16 +4238,22 @@ static size_t macsec_get_size(const struct net_device *dev)
nla_total_size(1) + /* IFLA_MACSEC_SCB */
nla_total_size(1) + /* IFLA_MACSEC_REPLAY_PROTECT */
nla_total_size(1) + /* IFLA_MACSEC_VALIDATION */
+ nla_total_size(1) + /* IFLA_MACSEC_OFFLOAD */
0;
}
static int macsec_fill_info(struct sk_buff *skb,
const struct net_device *dev)
{
- struct macsec_secy *secy = &macsec_priv(dev)->secy;
- struct macsec_tx_sc *tx_sc = &secy->tx_sc;
+ struct macsec_tx_sc *tx_sc;
+ struct macsec_dev *macsec;
+ struct macsec_secy *secy;
u64 csid;
+ macsec = macsec_priv(dev);
+ secy = &macsec->secy;
+ tx_sc = &secy->tx_sc;
+
switch (secy->key_len) {
case MACSEC_GCM_AES_128_SAK_LEN:
csid = secy->xpn ? MACSEC_CIPHER_ID_GCM_AES_XPN_128 : MACSEC_DEFAULT_CIPHER_ID;
@@ -4272,6 +4278,7 @@ static int macsec_fill_info(struct sk_buff *skb,
nla_put_u8(skb, IFLA_MACSEC_SCB, tx_sc->scb) ||
nla_put_u8(skb, IFLA_MACSEC_REPLAY_PROTECT, secy->replay_protect) ||
nla_put_u8(skb, IFLA_MACSEC_VALIDATION, secy->validate_frames) ||
+ nla_put_u8(skb, IFLA_MACSEC_OFFLOAD, macsec->offload) ||
0)
goto nla_put_failure;
--
2.21.3
^ permalink raw reply related [flat|nested] 6+ messages in thread* RE: [PATCH net-next 1/2] macsec: add support for IFLA_MACSEC_OFFLOAD in macsec_changelink
2022-12-27 8:25 [PATCH net-next 1/2] macsec: add support for IFLA_MACSEC_OFFLOAD in macsec_changelink ehakim
2022-12-27 8:25 ` [PATCH net-next 2/2] macsec: dump IFLA_MACSEC_OFFLOAD attribute as part of macsec dump ehakim
@ 2023-01-03 8:55 ` Emeel Hakim
2023-01-03 20:51 ` Jakub Kicinski
1 sibling, 1 reply; 6+ messages in thread
From: Emeel Hakim @ 2023-01-03 8:55 UTC (permalink / raw)
To: netdev@vger.kernel.org
Cc: Raed Salem, davem@davemloft.net, edumazet@google.com,
kuba@kernel.org, pabeni@redhat.com, sd@queasysnail.net,
atenart@kernel.org
I see in Patchwork that this patch status is "Deferred" , I was asked to send
a fix for accessing a net device prior to holding a lock and that is done (fix is accepted).
Is there a reason of the deferred status , is it pending anything from my side?
> -----Original Message-----
> From: Emeel Hakim <ehakim@nvidia.com>
> Sent: Tuesday, 27 December 2022 10:25
> To: netdev@vger.kernel.org
> Cc: Raed Salem <raeds@nvidia.com>; davem@davemloft.net;
> edumazet@google.com; kuba@kernel.org; pabeni@redhat.com;
> sd@queasysnail.net; atenart@kernel.org; Emeel Hakim <ehakim@nvidia.com>
> Subject: [PATCH net-next 1/2] macsec: add support for IFLA_MACSEC_OFFLOAD in
> macsec_changelink
>
> From: Emeel Hakim <ehakim@nvidia.com>
>
> Add support for changing Macsec offload selection through the netlink layer by
> implementing the relevant changes in macsec_changelink.
>
> Since the handling in macsec_changelink is similar to macsec_upd_offload, update
> macsec_upd_offload to use a common helper function to avoid duplication.
>
> Example for setting offload for a macsec device:
> ip link set macsec0 type macsec offload mac
>
> Reviewed-by: Raed Salem <raeds@nvidia.com>
> Signed-off-by: Emeel Hakim <ehakim@nvidia.com>
> ---
> drivers/net/macsec.c | 116 +++++++++++++++++++++----------------------
> 1 file changed, 57 insertions(+), 59 deletions(-)
>
> diff --git a/drivers/net/macsec.c b/drivers/net/macsec.c index
> bf8ac7a3ded7..1974c59977aa 100644
> --- a/drivers/net/macsec.c
> +++ b/drivers/net/macsec.c
> @@ -2583,95 +2583,87 @@ static bool macsec_is_configured(struct macsec_dev
> *macsec)
> return false;
> }
>
> -static int macsec_upd_offload(struct sk_buff *skb, struct genl_info *info)
> +static int macsec_update_offload(struct net_device *dev, enum
> +macsec_offload offload)
> {
> - struct nlattr *tb_offload[MACSEC_OFFLOAD_ATTR_MAX + 1];
> - enum macsec_offload offload, prev_offload;
> - int (*func)(struct macsec_context *ctx);
> - struct nlattr **attrs = info->attrs;
> - struct net_device *dev;
> + enum macsec_offload prev_offload;
> const struct macsec_ops *ops;
> struct macsec_context ctx;
> struct macsec_dev *macsec;
> int ret = 0;
>
> - if (!attrs[MACSEC_ATTR_IFINDEX])
> - return -EINVAL;
> -
> - if (!attrs[MACSEC_ATTR_OFFLOAD])
> - return -EINVAL;
> -
> - if (nla_parse_nested_deprecated(tb_offload,
> MACSEC_OFFLOAD_ATTR_MAX,
> - attrs[MACSEC_ATTR_OFFLOAD],
> - macsec_genl_offload_policy, NULL))
> - return -EINVAL;
> -
> - rtnl_lock();
> -
> - dev = get_dev_from_nl(genl_info_net(info), attrs);
> - if (IS_ERR(dev)) {
> - ret = PTR_ERR(dev);
> - goto out;
> - }
> macsec = macsec_priv(dev);
>
> - if (!tb_offload[MACSEC_OFFLOAD_ATTR_TYPE]) {
> - ret = -EINVAL;
> - goto out;
> - }
> -
> - offload = nla_get_u8(tb_offload[MACSEC_OFFLOAD_ATTR_TYPE]);
> if (macsec->offload == offload)
> - goto out;
> + return 0;
>
> /* Check if the offloading mode is supported by the underlying layers */
> if (offload != MACSEC_OFFLOAD_OFF &&
> !macsec_check_offload(offload, macsec)) {
> - ret = -EOPNOTSUPP;
> - goto out;
> + return -EOPNOTSUPP;
> }
>
> /* Check if the net device is busy. */
> - if (netif_running(dev)) {
> - ret = -EBUSY;
> - goto out;
> - }
> -
> - prev_offload = macsec->offload;
> - macsec->offload = offload;
> + if (netif_running(dev))
> + return -EBUSY;
>
> /* Check if the device already has rules configured: we do not support
> * rules migration.
> */
> - if (macsec_is_configured(macsec)) {
> - ret = -EBUSY;
> - goto rollback;
> - }
> + if (macsec_is_configured(macsec))
> + return -EBUSY;
> +
> + prev_offload = macsec->offload;
>
> ops = __macsec_get_ops(offload == MACSEC_OFFLOAD_OFF ? prev_offload
> : offload,
> macsec, &ctx);
> - if (!ops) {
> - ret = -EOPNOTSUPP;
> - goto rollback;
> - }
> + if (!ops)
> + return -EOPNOTSUPP;
>
> - if (prev_offload == MACSEC_OFFLOAD_OFF)
> - func = ops->mdo_add_secy;
> - else
> - func = ops->mdo_del_secy;
> + macsec->offload = offload;
>
> ctx.secy = &macsec->secy;
> - ret = macsec_offload(func, &ctx);
> + ret = offload == MACSEC_OFFLOAD_OFF ? macsec_offload(ops-
> >mdo_del_secy, &ctx)
> + : macsec_offload(ops->mdo_add_secy,
> &ctx);
> if (ret)
> - goto rollback;
> + macsec->offload = prev_offload;
>
> - rtnl_unlock();
> - return 0;
> + return ret;
> +}
> +
> +static int macsec_upd_offload(struct sk_buff *skb, struct genl_info
> +*info) {
> + struct nlattr *tb_offload[MACSEC_OFFLOAD_ATTR_MAX + 1];
> + struct nlattr **attrs = info->attrs;
> + enum macsec_offload offload;
> + struct net_device *dev;
> + int ret;
> +
> + if (!attrs[MACSEC_ATTR_IFINDEX])
> + return -EINVAL;
> +
> + if (!attrs[MACSEC_ATTR_OFFLOAD])
> + return -EINVAL;
> +
> + if (nla_parse_nested_deprecated(tb_offload,
> MACSEC_OFFLOAD_ATTR_MAX,
> + attrs[MACSEC_ATTR_OFFLOAD],
> + macsec_genl_offload_policy, NULL))
> + return -EINVAL;
> +
> + dev = get_dev_from_nl(genl_info_net(info), attrs);
> + if (IS_ERR(dev))
> + return PTR_ERR(dev);
> +
> + if (!tb_offload[MACSEC_OFFLOAD_ATTR_TYPE])
> + return -EINVAL;
> +
> + offload = nla_get_u8(tb_offload[MACSEC_OFFLOAD_ATTR_TYPE]);
> +
> + rtnl_lock();
> +
> + ret = macsec_update_offload(dev, offload);
>
> -rollback:
> - macsec->offload = prev_offload;
> -out:
> rtnl_unlock();
> +
> return ret;
> }
>
> @@ -3840,6 +3832,12 @@ static int macsec_changelink(struct net_device *dev,
> struct nlattr *tb[],
> if (ret)
> goto cleanup;
>
> + if (data[IFLA_MACSEC_OFFLOAD]) {
> + ret = macsec_update_offload(dev,
> nla_get_u8(data[IFLA_MACSEC_OFFLOAD]));
> + if (ret)
> + goto cleanup;
> + }
> +
> /* If h/w offloading is available, propagate to the device */
> if (macsec_is_offloaded(macsec)) {
> const struct macsec_ops *ops;
> --
> 2.21.3
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH net-next 1/2] macsec: add support for IFLA_MACSEC_OFFLOAD in macsec_changelink
2023-01-03 8:55 ` [PATCH net-next 1/2] macsec: add support for IFLA_MACSEC_OFFLOAD in macsec_changelink Emeel Hakim
@ 2023-01-03 20:51 ` Jakub Kicinski
0 siblings, 0 replies; 6+ messages in thread
From: Jakub Kicinski @ 2023-01-03 20:51 UTC (permalink / raw)
To: Emeel Hakim
Cc: netdev@vger.kernel.org, Raed Salem, davem@davemloft.net,
edumazet@google.com, pabeni@redhat.com, sd@queasysnail.net,
atenart@kernel.org
On Tue, 3 Jan 2023 08:55:56 +0000 Emeel Hakim wrote:
> I see in Patchwork that this patch status is "Deferred" , I was asked to send
> a fix for accessing a net device prior to holding a lock and that is done (fix is accepted).
> Is there a reason of the deferred status , is it pending anything from my side?
net-next was closed, please resend now.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH net-next 1/2] macsec: add support for IFLA_MACSEC_OFFLOAD in macsec_changelink
@ 2023-01-04 7:46 ehakim
2023-01-04 16:56 ` Jiri Pirko
0 siblings, 1 reply; 6+ messages in thread
From: ehakim @ 2023-01-04 7:46 UTC (permalink / raw)
To: netdev; +Cc: raeds, davem, edumazet, kuba, pabeni, sd, atenart, Emeel Hakim
From: Emeel Hakim <ehakim@nvidia.com>
Add support for changing Macsec offload selection through the
netlink layer by implementing the relevant changes in
macsec_changelink.
Since the handling in macsec_changelink is similar to macsec_upd_offload,
update macsec_upd_offload to use a common helper function to avoid
duplication.
Example for setting offload for a macsec device:
ip link set macsec0 type macsec offload mac
Reviewed-by: Raed Salem <raeds@nvidia.com>
Signed-off-by: Emeel Hakim <ehakim@nvidia.com>
---
drivers/net/macsec.c | 116 +++++++++++++++++++++----------------------
1 file changed, 57 insertions(+), 59 deletions(-)
diff --git a/drivers/net/macsec.c b/drivers/net/macsec.c
index bf8ac7a3ded7..1974c59977aa 100644
--- a/drivers/net/macsec.c
+++ b/drivers/net/macsec.c
@@ -2583,95 +2583,87 @@ static bool macsec_is_configured(struct macsec_dev *macsec)
return false;
}
-static int macsec_upd_offload(struct sk_buff *skb, struct genl_info *info)
+static int macsec_update_offload(struct net_device *dev, enum macsec_offload offload)
{
- struct nlattr *tb_offload[MACSEC_OFFLOAD_ATTR_MAX + 1];
- enum macsec_offload offload, prev_offload;
- int (*func)(struct macsec_context *ctx);
- struct nlattr **attrs = info->attrs;
- struct net_device *dev;
+ enum macsec_offload prev_offload;
const struct macsec_ops *ops;
struct macsec_context ctx;
struct macsec_dev *macsec;
int ret = 0;
- if (!attrs[MACSEC_ATTR_IFINDEX])
- return -EINVAL;
-
- if (!attrs[MACSEC_ATTR_OFFLOAD])
- return -EINVAL;
-
- if (nla_parse_nested_deprecated(tb_offload, MACSEC_OFFLOAD_ATTR_MAX,
- attrs[MACSEC_ATTR_OFFLOAD],
- macsec_genl_offload_policy, NULL))
- return -EINVAL;
-
- rtnl_lock();
-
- dev = get_dev_from_nl(genl_info_net(info), attrs);
- if (IS_ERR(dev)) {
- ret = PTR_ERR(dev);
- goto out;
- }
macsec = macsec_priv(dev);
- if (!tb_offload[MACSEC_OFFLOAD_ATTR_TYPE]) {
- ret = -EINVAL;
- goto out;
- }
-
- offload = nla_get_u8(tb_offload[MACSEC_OFFLOAD_ATTR_TYPE]);
if (macsec->offload == offload)
- goto out;
+ return 0;
/* Check if the offloading mode is supported by the underlying layers */
if (offload != MACSEC_OFFLOAD_OFF &&
!macsec_check_offload(offload, macsec)) {
- ret = -EOPNOTSUPP;
- goto out;
+ return -EOPNOTSUPP;
}
/* Check if the net device is busy. */
- if (netif_running(dev)) {
- ret = -EBUSY;
- goto out;
- }
-
- prev_offload = macsec->offload;
- macsec->offload = offload;
+ if (netif_running(dev))
+ return -EBUSY;
/* Check if the device already has rules configured: we do not support
* rules migration.
*/
- if (macsec_is_configured(macsec)) {
- ret = -EBUSY;
- goto rollback;
- }
+ if (macsec_is_configured(macsec))
+ return -EBUSY;
+
+ prev_offload = macsec->offload;
ops = __macsec_get_ops(offload == MACSEC_OFFLOAD_OFF ? prev_offload : offload,
macsec, &ctx);
- if (!ops) {
- ret = -EOPNOTSUPP;
- goto rollback;
- }
+ if (!ops)
+ return -EOPNOTSUPP;
- if (prev_offload == MACSEC_OFFLOAD_OFF)
- func = ops->mdo_add_secy;
- else
- func = ops->mdo_del_secy;
+ macsec->offload = offload;
ctx.secy = &macsec->secy;
- ret = macsec_offload(func, &ctx);
+ ret = offload == MACSEC_OFFLOAD_OFF ? macsec_offload(ops->mdo_del_secy, &ctx)
+ : macsec_offload(ops->mdo_add_secy, &ctx);
if (ret)
- goto rollback;
+ macsec->offload = prev_offload;
- rtnl_unlock();
- return 0;
+ return ret;
+}
+
+static int macsec_upd_offload(struct sk_buff *skb, struct genl_info *info)
+{
+ struct nlattr *tb_offload[MACSEC_OFFLOAD_ATTR_MAX + 1];
+ struct nlattr **attrs = info->attrs;
+ enum macsec_offload offload;
+ struct net_device *dev;
+ int ret;
+
+ if (!attrs[MACSEC_ATTR_IFINDEX])
+ return -EINVAL;
+
+ if (!attrs[MACSEC_ATTR_OFFLOAD])
+ return -EINVAL;
+
+ if (nla_parse_nested_deprecated(tb_offload, MACSEC_OFFLOAD_ATTR_MAX,
+ attrs[MACSEC_ATTR_OFFLOAD],
+ macsec_genl_offload_policy, NULL))
+ return -EINVAL;
+
+ dev = get_dev_from_nl(genl_info_net(info), attrs);
+ if (IS_ERR(dev))
+ return PTR_ERR(dev);
+
+ if (!tb_offload[MACSEC_OFFLOAD_ATTR_TYPE])
+ return -EINVAL;
+
+ offload = nla_get_u8(tb_offload[MACSEC_OFFLOAD_ATTR_TYPE]);
+
+ rtnl_lock();
+
+ ret = macsec_update_offload(dev, offload);
-rollback:
- macsec->offload = prev_offload;
-out:
rtnl_unlock();
+
return ret;
}
@@ -3840,6 +3832,12 @@ static int macsec_changelink(struct net_device *dev, struct nlattr *tb[],
if (ret)
goto cleanup;
+ if (data[IFLA_MACSEC_OFFLOAD]) {
+ ret = macsec_update_offload(dev, nla_get_u8(data[IFLA_MACSEC_OFFLOAD]));
+ if (ret)
+ goto cleanup;
+ }
+
/* If h/w offloading is available, propagate to the device */
if (macsec_is_offloaded(macsec)) {
const struct macsec_ops *ops;
--
2.21.3
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [PATCH net-next 1/2] macsec: add support for IFLA_MACSEC_OFFLOAD in macsec_changelink
2023-01-04 7:46 ehakim
@ 2023-01-04 16:56 ` Jiri Pirko
0 siblings, 0 replies; 6+ messages in thread
From: Jiri Pirko @ 2023-01-04 16:56 UTC (permalink / raw)
To: ehakim; +Cc: netdev, raeds, davem, edumazet, kuba, pabeni, sd, atenart
Wed, Jan 04, 2023 at 08:46:50AM CET, ehakim@nvidia.com wrote:
>From: Emeel Hakim <ehakim@nvidia.com>
>
>Add support for changing Macsec offload selection through the
>netlink layer by implementing the relevant changes in
>macsec_changelink.
>
>Since the handling in macsec_changelink is similar to macsec_upd_offload,
>update macsec_upd_offload to use a common helper function to avoid
>duplication.
>
>Example for setting offload for a macsec device:
> ip link set macsec0 type macsec offload mac
>
>Reviewed-by: Raed Salem <raeds@nvidia.com>
>Signed-off-by: Emeel Hakim <ehakim@nvidia.com>
Emeel, I don't follow, You had version v5 submitted the last time. All
of the sudden, you now dropped both versioning in the tag and changelog
from this patchset? Could you please add it and resubmit? Also it is
a good practise to put a cover letter when sending multiple patches in
a series, would be nice if you have it here too.
Thanks!
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2023-01-04 16:58 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-12-27 8:25 [PATCH net-next 1/2] macsec: add support for IFLA_MACSEC_OFFLOAD in macsec_changelink ehakim
2022-12-27 8:25 ` [PATCH net-next 2/2] macsec: dump IFLA_MACSEC_OFFLOAD attribute as part of macsec dump ehakim
2023-01-03 8:55 ` [PATCH net-next 1/2] macsec: add support for IFLA_MACSEC_OFFLOAD in macsec_changelink Emeel Hakim
2023-01-03 20:51 ` Jakub Kicinski
-- strict thread matches above, loose matches on Subject: below --
2023-01-04 7:46 ehakim
2023-01-04 16:56 ` Jiri Pirko
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 NNTP newsgroup(s).