ctx.sa.assoc_num = assoc_num;
                ctx.sa.rx_sa = rx_sa;
+               ctx.secy = secy;
                memcpy(ctx.sa.key, nla_data(tb_sa[MACSEC_SA_ATTR_KEY]),
                       MACSEC_KEYID_LEN);
 
        struct nlattr **attrs = info->attrs;
        struct macsec_rx_sc *rx_sc;
        struct nlattr *tb_rxsc[MACSEC_RXSC_ATTR_MAX + 1];
+       struct macsec_secy *secy;
        bool was_active;
        int ret;
 
                return PTR_ERR(dev);
        }
 
+       secy = &macsec_priv(dev)->secy;
        sci = nla_get_sci(tb_rxsc[MACSEC_RXSC_ATTR_SCI]);
 
        rx_sc = create_rx_sc(dev, sci);
                }
 
                ctx.rx_sc = rx_sc;
+               ctx.secy = secy;
 
                ret = macsec_offload(ops->mdo_add_rxsc, &ctx);
                if (ret)
 
                ctx.sa.assoc_num = assoc_num;
                ctx.sa.tx_sa = tx_sa;
+               ctx.secy = secy;
                memcpy(ctx.sa.key, nla_data(tb_sa[MACSEC_SA_ATTR_KEY]),
                       MACSEC_KEYID_LEN);
 
 
                ctx.sa.assoc_num = assoc_num;
                ctx.sa.rx_sa = rx_sa;
+               ctx.secy = secy;
 
                ret = macsec_offload(ops->mdo_del_rxsa, &ctx);
                if (ret)
                }
 
                ctx.rx_sc = rx_sc;
+               ctx.secy = secy;
                ret = macsec_offload(ops->mdo_del_rxsc, &ctx);
                if (ret)
                        goto cleanup;
 
                ctx.sa.assoc_num = assoc_num;
                ctx.sa.tx_sa = tx_sa;
+               ctx.secy = secy;
 
                ret = macsec_offload(ops->mdo_del_txsa, &ctx);
                if (ret)
 
                ctx.sa.assoc_num = assoc_num;
                ctx.sa.tx_sa = tx_sa;
+               ctx.secy = secy;
 
                ret = macsec_offload(ops->mdo_upd_txsa, &ctx);
                if (ret)
 
                ctx.sa.assoc_num = assoc_num;
                ctx.sa.rx_sa = rx_sa;
+               ctx.secy = secy;
 
                ret = macsec_offload(ops->mdo_upd_rxsa, &ctx);
                if (ret)
                }
 
                ctx.rx_sc = rx_sc;
+               ctx.secy = secy;
 
                ret = macsec_offload(ops->mdo_upd_rxsc, &ctx);
                if (ret)
                        goto clear_allmulti;
                }
 
+               ctx.secy = &macsec->secy;
                err = macsec_offload(ops->mdo_dev_open, &ctx);
                if (err)
                        goto clear_allmulti;
                struct macsec_context ctx;
 
                ops = macsec_get_ops(macsec, &ctx);
-               if (ops)
+               if (ops) {
+                       ctx.secy = &macsec->secy;
                        macsec_offload(ops->mdo_dev_stop, &ctx);
+               }
        }
 
        dev_mc_unsync(real_dev, dev);