| From 182879f89b858fede98136ea3ad45fe9c7178387 Mon Sep 17 00:00:00 2001 |
| From: Dmitry Bogdanov <dbogdanov@marvell.com> |
| Date: Wed, 25 Mar 2020 15:52:34 +0300 |
| Subject: net: macsec: init secy pointer in macsec_context |
| |
| 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> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| --- |
| 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 d29c072e19af6..093e81d605ec7 100644 |
| --- a/drivers/net/macsec.c |
| +++ b/drivers/net/macsec.c |
| @@ -1794,6 +1794,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); |
| |
| @@ -1841,6 +1842,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; |
| |
| @@ -1860,6 +1862,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); |
| @@ -1883,6 +1886,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) |
| @@ -2032,6 +2036,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); |
| |
| @@ -2107,6 +2112,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) |
| @@ -2172,6 +2178,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; |
| @@ -2230,6 +2237,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) |
| @@ -2341,6 +2349,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) |
| @@ -2433,6 +2442,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) |
| @@ -2503,6 +2513,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) |
| @@ -3370,6 +3381,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; |
| @@ -3401,8 +3413,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); |
| -- |
| cgit 1.2.3-1.el7 |
| |