Commit 182879f8 authored by Dmitry Bogdanov's avatar Dmitry Bogdanov Committed by David S. Miller

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: default avatarDmitry Bogdanov <dbogdanov@marvell.com>
Signed-off-by: default avatarMark Starovoytov <mstarovoitov@marvell.com>
Signed-off-by: default avatarIgor Russkikh <irusskikh@marvell.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 21114b7f
...@@ -1794,6 +1794,7 @@ static int macsec_add_rxsa(struct sk_buff *skb, struct genl_info *info) ...@@ -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.assoc_num = assoc_num;
ctx.sa.rx_sa = rx_sa; ctx.sa.rx_sa = rx_sa;
ctx.secy = secy;
memcpy(ctx.sa.key, nla_data(tb_sa[MACSEC_SA_ATTR_KEY]), memcpy(ctx.sa.key, nla_data(tb_sa[MACSEC_SA_ATTR_KEY]),
MACSEC_KEYID_LEN); MACSEC_KEYID_LEN);
...@@ -1841,6 +1842,7 @@ static int macsec_add_rxsc(struct sk_buff *skb, struct genl_info *info) ...@@ -1841,6 +1842,7 @@ static int macsec_add_rxsc(struct sk_buff *skb, struct genl_info *info)
struct nlattr **attrs = info->attrs; struct nlattr **attrs = info->attrs;
struct macsec_rx_sc *rx_sc; struct macsec_rx_sc *rx_sc;
struct nlattr *tb_rxsc[MACSEC_RXSC_ATTR_MAX + 1]; struct nlattr *tb_rxsc[MACSEC_RXSC_ATTR_MAX + 1];
struct macsec_secy *secy;
bool was_active; bool was_active;
int ret; int ret;
...@@ -1860,6 +1862,7 @@ static int macsec_add_rxsc(struct sk_buff *skb, struct genl_info *info) ...@@ -1860,6 +1862,7 @@ static int macsec_add_rxsc(struct sk_buff *skb, struct genl_info *info)
return PTR_ERR(dev); return PTR_ERR(dev);
} }
secy = &macsec_priv(dev)->secy;
sci = nla_get_sci(tb_rxsc[MACSEC_RXSC_ATTR_SCI]); sci = nla_get_sci(tb_rxsc[MACSEC_RXSC_ATTR_SCI]);
rx_sc = create_rx_sc(dev, 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) ...@@ -1883,6 +1886,7 @@ static int macsec_add_rxsc(struct sk_buff *skb, struct genl_info *info)
} }
ctx.rx_sc = rx_sc; ctx.rx_sc = rx_sc;
ctx.secy = secy;
ret = macsec_offload(ops->mdo_add_rxsc, &ctx); ret = macsec_offload(ops->mdo_add_rxsc, &ctx);
if (ret) if (ret)
...@@ -2032,6 +2036,7 @@ static int macsec_add_txsa(struct sk_buff *skb, struct genl_info *info) ...@@ -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.assoc_num = assoc_num;
ctx.sa.tx_sa = tx_sa; ctx.sa.tx_sa = tx_sa;
ctx.secy = secy;
memcpy(ctx.sa.key, nla_data(tb_sa[MACSEC_SA_ATTR_KEY]), memcpy(ctx.sa.key, nla_data(tb_sa[MACSEC_SA_ATTR_KEY]),
MACSEC_KEYID_LEN); MACSEC_KEYID_LEN);
...@@ -2107,6 +2112,7 @@ static int macsec_del_rxsa(struct sk_buff *skb, struct genl_info *info) ...@@ -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.assoc_num = assoc_num;
ctx.sa.rx_sa = rx_sa; ctx.sa.rx_sa = rx_sa;
ctx.secy = secy;
ret = macsec_offload(ops->mdo_del_rxsa, &ctx); ret = macsec_offload(ops->mdo_del_rxsa, &ctx);
if (ret) if (ret)
...@@ -2172,6 +2178,7 @@ static int macsec_del_rxsc(struct sk_buff *skb, struct genl_info *info) ...@@ -2172,6 +2178,7 @@ static int macsec_del_rxsc(struct sk_buff *skb, struct genl_info *info)
} }
ctx.rx_sc = rx_sc; ctx.rx_sc = rx_sc;
ctx.secy = secy;
ret = macsec_offload(ops->mdo_del_rxsc, &ctx); ret = macsec_offload(ops->mdo_del_rxsc, &ctx);
if (ret) if (ret)
goto cleanup; goto cleanup;
...@@ -2230,6 +2237,7 @@ static int macsec_del_txsa(struct sk_buff *skb, struct genl_info *info) ...@@ -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.assoc_num = assoc_num;
ctx.sa.tx_sa = tx_sa; ctx.sa.tx_sa = tx_sa;
ctx.secy = secy;
ret = macsec_offload(ops->mdo_del_txsa, &ctx); ret = macsec_offload(ops->mdo_del_txsa, &ctx);
if (ret) if (ret)
...@@ -2341,6 +2349,7 @@ static int macsec_upd_txsa(struct sk_buff *skb, struct genl_info *info) ...@@ -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.assoc_num = assoc_num;
ctx.sa.tx_sa = tx_sa; ctx.sa.tx_sa = tx_sa;
ctx.secy = secy;
ret = macsec_offload(ops->mdo_upd_txsa, &ctx); ret = macsec_offload(ops->mdo_upd_txsa, &ctx);
if (ret) if (ret)
...@@ -2433,6 +2442,7 @@ static int macsec_upd_rxsa(struct sk_buff *skb, struct genl_info *info) ...@@ -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.assoc_num = assoc_num;
ctx.sa.rx_sa = rx_sa; ctx.sa.rx_sa = rx_sa;
ctx.secy = secy;
ret = macsec_offload(ops->mdo_upd_rxsa, &ctx); ret = macsec_offload(ops->mdo_upd_rxsa, &ctx);
if (ret) if (ret)
...@@ -2503,6 +2513,7 @@ static int macsec_upd_rxsc(struct sk_buff *skb, struct genl_info *info) ...@@ -2503,6 +2513,7 @@ static int macsec_upd_rxsc(struct sk_buff *skb, struct genl_info *info)
} }
ctx.rx_sc = rx_sc; ctx.rx_sc = rx_sc;
ctx.secy = secy;
ret = macsec_offload(ops->mdo_upd_rxsc, &ctx); ret = macsec_offload(ops->mdo_upd_rxsc, &ctx);
if (ret) if (ret)
...@@ -3370,6 +3381,7 @@ static int macsec_dev_open(struct net_device *dev) ...@@ -3370,6 +3381,7 @@ static int macsec_dev_open(struct net_device *dev)
goto clear_allmulti; goto clear_allmulti;
} }
ctx.secy = &macsec->secy;
err = macsec_offload(ops->mdo_dev_open, &ctx); err = macsec_offload(ops->mdo_dev_open, &ctx);
if (err) if (err)
goto clear_allmulti; goto clear_allmulti;
...@@ -3401,9 +3413,11 @@ static int macsec_dev_stop(struct net_device *dev) ...@@ -3401,9 +3413,11 @@ static int macsec_dev_stop(struct net_device *dev)
struct macsec_context ctx; struct macsec_context ctx;
ops = macsec_get_ops(macsec, &ctx); ops = macsec_get_ops(macsec, &ctx);
if (ops) if (ops) {
ctx.secy = &macsec->secy;
macsec_offload(ops->mdo_dev_stop, &ctx); macsec_offload(ops->mdo_dev_stop, &ctx);
} }
}
dev_mc_unsync(real_dev, dev); dev_mc_unsync(real_dev, dev);
dev_uc_unsync(real_dev, dev); dev_uc_unsync(real_dev, dev);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment