Hi Antoine,
quoted hunk ↗ jump to hunk
@@ -2922,7 +3300,27 @@ static int macsec_changelink(struct net_device
*dev, struct nlattr *tb[],
data[IFLA_MACSEC_PORT])
return -EINVAL;
- return macsec_changelink_common(dev, data);
+ /* If h/w offloading is available, propagate to the device */
+ if (macsec_is_offloaded(macsec)) {
+ const struct macsec_ops *ops;
+ struct macsec_context ctx;
+ int ret;
+
+ ops = macsec_get_ops(netdev_priv(dev), &ctx);
+ if (!ops)
+ return -EOPNOTSUPP;
+
+ ctx.secy = &macsec->secy;
+ ret = macsec_offload(ops->mdo_upd_secy, &ctx);
+ if (ret)
+ return ret;
+ }
+
+ ret = macsec_changelink_common(dev, data);
In our mac driver verification we see that propagating upd_secy to device before doing
macsec_changelink_common is actually useless, since in this case underlying device
can't fetch any of the updated parameters from the macsec structures.
Isn't it logical first doing `macsec_changelink_common` and then propagate the event?
--
Regards,
Igor