Message ID | 20200214150258.390-6-irusskikh@marvell.com |
---|---|
State | RFC |
Delegated to: | David Miller |
Headers | show |
Series | net: atlantic: MACSec support for AQC devices | expand |
On Fri, Feb 14, 2020 at 06:02:45PM +0300, Igor Russkikh wrote: > From: Dmitry Bogdanov <dbogdanov@marvell.com> > > This patch adds secy pointer initialization in the macsec_context. > It will be used by MAC drivers in offloading operations. > > Signed-off-by: Dmitry Bogdanov <dbogdanov@marvell.com> > Signed-off-by: Mark Starovoytov <mstarovoitov@marvell.com> > Signed-off-by: Igor Russkikh <irusskikh@marvell.com> Reviewed-by: Antoine Tenart <antoine.tenart@bootlin.com> > --- > drivers/net/macsec.c | 16 +++++++++++++++- > 1 file changed, 15 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/macsec.c b/drivers/net/macsec.c > index a88b41a79103..af41887d9a1e 100644 > --- a/drivers/net/macsec.c > +++ b/drivers/net/macsec.c > @@ -1692,6 +1692,7 @@ static int macsec_add_rxsa(struct sk_buff *skb, struct genl_info *info) > > 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); > > @@ -1733,6 +1734,7 @@ static int macsec_add_rxsc(struct sk_buff *skb, struct genl_info *info) > 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; > > @@ -1752,6 +1754,7 @@ static int macsec_add_rxsc(struct sk_buff *skb, struct genl_info *info) > 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); > @@ -1775,6 +1778,7 @@ static int macsec_add_rxsc(struct sk_buff *skb, struct genl_info *info) > } > > ctx.rx_sc = rx_sc; > + ctx.secy = secy; > > ret = macsec_offload(ops->mdo_add_rxsc, &ctx); > if (ret) > @@ -1900,6 +1904,7 @@ static int macsec_add_txsa(struct sk_buff *skb, struct genl_info *info) > > 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); > > @@ -1969,6 +1974,7 @@ static int macsec_del_rxsa(struct sk_buff *skb, struct genl_info *info) > > 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) > @@ -2034,6 +2040,7 @@ static int macsec_del_rxsc(struct sk_buff *skb, struct genl_info *info) > } > > ctx.rx_sc = rx_sc; > + ctx.secy = secy; > ret = macsec_offload(ops->mdo_del_rxsc, &ctx); > if (ret) > goto cleanup; > @@ -2092,6 +2099,7 @@ static int macsec_del_txsa(struct sk_buff *skb, struct genl_info *info) > > 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) > @@ -2189,6 +2197,7 @@ static int macsec_upd_txsa(struct sk_buff *skb, struct genl_info *info) > > 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) > @@ -2269,6 +2278,7 @@ static int macsec_upd_rxsa(struct sk_buff *skb, struct genl_info *info) > > 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) > @@ -2339,6 +2349,7 @@ static int macsec_upd_rxsc(struct sk_buff *skb, struct genl_info *info) > } > > ctx.rx_sc = rx_sc; > + ctx.secy = secy; > > ret = macsec_offload(ops->mdo_upd_rxsc, &ctx); > if (ret) > @@ -3184,6 +3195,7 @@ static int macsec_dev_open(struct net_device *dev) > goto clear_allmulti; > } > > + ctx.secy = &macsec->secy; > err = macsec_offload(ops->mdo_dev_open, &ctx); > if (err) > goto clear_allmulti; > @@ -3215,8 +3227,10 @@ static int macsec_dev_stop(struct net_device *dev) > 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); > -- > 2.17.1 >
diff --git a/drivers/net/macsec.c b/drivers/net/macsec.c index a88b41a79103..af41887d9a1e 100644 --- a/drivers/net/macsec.c +++ b/drivers/net/macsec.c @@ -1692,6 +1692,7 @@ static int macsec_add_rxsa(struct sk_buff *skb, struct genl_info *info) 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); @@ -1733,6 +1734,7 @@ static int macsec_add_rxsc(struct sk_buff *skb, struct genl_info *info) 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; @@ -1752,6 +1754,7 @@ static int macsec_add_rxsc(struct sk_buff *skb, struct genl_info *info) 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); @@ -1775,6 +1778,7 @@ static int macsec_add_rxsc(struct sk_buff *skb, struct genl_info *info) } ctx.rx_sc = rx_sc; + ctx.secy = secy; ret = macsec_offload(ops->mdo_add_rxsc, &ctx); if (ret) @@ -1900,6 +1904,7 @@ static int macsec_add_txsa(struct sk_buff *skb, struct genl_info *info) 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); @@ -1969,6 +1974,7 @@ static int macsec_del_rxsa(struct sk_buff *skb, struct genl_info *info) 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) @@ -2034,6 +2040,7 @@ static int macsec_del_rxsc(struct sk_buff *skb, struct genl_info *info) } ctx.rx_sc = rx_sc; + ctx.secy = secy; ret = macsec_offload(ops->mdo_del_rxsc, &ctx); if (ret) goto cleanup; @@ -2092,6 +2099,7 @@ static int macsec_del_txsa(struct sk_buff *skb, struct genl_info *info) 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) @@ -2189,6 +2197,7 @@ static int macsec_upd_txsa(struct sk_buff *skb, struct genl_info *info) 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) @@ -2269,6 +2278,7 @@ static int macsec_upd_rxsa(struct sk_buff *skb, struct genl_info *info) 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) @@ -2339,6 +2349,7 @@ static int macsec_upd_rxsc(struct sk_buff *skb, struct genl_info *info) } ctx.rx_sc = rx_sc; + ctx.secy = secy; ret = macsec_offload(ops->mdo_upd_rxsc, &ctx); if (ret) @@ -3184,6 +3195,7 @@ static int macsec_dev_open(struct net_device *dev) goto clear_allmulti; } + ctx.secy = &macsec->secy; err = macsec_offload(ops->mdo_dev_open, &ctx); if (err) goto clear_allmulti; @@ -3215,8 +3227,10 @@ static int macsec_dev_stop(struct net_device *dev) 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);