mirror of
https://github.com/torvalds/linux.git
synced 2026-05-24 15:12:13 +02:00
net: phy: mscc: macsec: make the prepare phase a noop
In preparation for removing the MACsec h/w offloading preparation phase, make it a no-op in the MSCC phy driver. Signed-off-by: Antoine Tenart <atenart@kernel.org> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
aacdecda9e
commit
920d998e53
|
|
@ -706,14 +706,6 @@ static int __vsc8584_macsec_add_rxsa(struct macsec_context *ctx,
|
|||
struct phy_device *phydev = ctx->phydev;
|
||||
struct vsc8531_private *priv = phydev->priv;
|
||||
|
||||
if (!flow) {
|
||||
flow = vsc8584_macsec_alloc_flow(priv, MACSEC_INGR);
|
||||
if (IS_ERR(flow))
|
||||
return PTR_ERR(flow);
|
||||
|
||||
memcpy(flow->key, ctx->sa.key, priv->secy->key_len);
|
||||
}
|
||||
|
||||
flow->assoc_num = ctx->sa.assoc_num;
|
||||
flow->rx_sa = ctx->sa.rx_sa;
|
||||
|
||||
|
|
@ -730,24 +722,13 @@ static int __vsc8584_macsec_add_rxsa(struct macsec_context *ctx,
|
|||
static int __vsc8584_macsec_add_txsa(struct macsec_context *ctx,
|
||||
struct macsec_flow *flow, bool update)
|
||||
{
|
||||
struct phy_device *phydev = ctx->phydev;
|
||||
struct vsc8531_private *priv = phydev->priv;
|
||||
|
||||
if (!flow) {
|
||||
flow = vsc8584_macsec_alloc_flow(priv, MACSEC_EGR);
|
||||
if (IS_ERR(flow))
|
||||
return PTR_ERR(flow);
|
||||
|
||||
memcpy(flow->key, ctx->sa.key, priv->secy->key_len);
|
||||
}
|
||||
|
||||
flow->assoc_num = ctx->sa.assoc_num;
|
||||
flow->tx_sa = ctx->sa.tx_sa;
|
||||
|
||||
/* Always match untagged packets on egress */
|
||||
flow->match.untagged = 1;
|
||||
|
||||
return vsc8584_macsec_add_flow(phydev, flow, update);
|
||||
return vsc8584_macsec_add_flow(ctx->phydev, flow, update);
|
||||
}
|
||||
|
||||
static int vsc8584_macsec_dev_open(struct macsec_context *ctx)
|
||||
|
|
@ -785,12 +766,11 @@ static int vsc8584_macsec_add_secy(struct macsec_context *ctx)
|
|||
struct vsc8531_private *priv = ctx->phydev->priv;
|
||||
struct macsec_secy *secy = ctx->secy;
|
||||
|
||||
if (ctx->prepare) {
|
||||
if (priv->secy)
|
||||
return -EEXIST;
|
||||
|
||||
if (ctx->prepare)
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (priv->secy)
|
||||
return -EEXIST;
|
||||
|
||||
priv->secy = secy;
|
||||
|
||||
|
|
@ -862,33 +842,46 @@ static int vsc8584_macsec_del_rxsc(struct macsec_context *ctx)
|
|||
|
||||
static int vsc8584_macsec_add_rxsa(struct macsec_context *ctx)
|
||||
{
|
||||
struct macsec_flow *flow = NULL;
|
||||
struct phy_device *phydev = ctx->phydev;
|
||||
struct vsc8531_private *priv = phydev->priv;
|
||||
struct macsec_flow *flow;
|
||||
int ret;
|
||||
|
||||
if (ctx->prepare)
|
||||
return __vsc8584_macsec_add_rxsa(ctx, flow, false);
|
||||
return 0;
|
||||
|
||||
flow = vsc8584_macsec_find_flow(ctx, MACSEC_INGR);
|
||||
flow = vsc8584_macsec_alloc_flow(priv, MACSEC_INGR);
|
||||
if (IS_ERR(flow))
|
||||
return PTR_ERR(flow);
|
||||
|
||||
vsc8584_macsec_flow_enable(ctx->phydev, flow);
|
||||
memcpy(flow->key, ctx->sa.key, priv->secy->key_len);
|
||||
|
||||
ret = __vsc8584_macsec_add_rxsa(ctx, flow, false);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
vsc8584_macsec_flow_enable(phydev, flow);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int vsc8584_macsec_upd_rxsa(struct macsec_context *ctx)
|
||||
{
|
||||
struct macsec_flow *flow;
|
||||
int ret;
|
||||
|
||||
if (ctx->prepare)
|
||||
return 0;
|
||||
|
||||
flow = vsc8584_macsec_find_flow(ctx, MACSEC_INGR);
|
||||
if (IS_ERR(flow))
|
||||
return PTR_ERR(flow);
|
||||
|
||||
if (ctx->prepare) {
|
||||
/* Make sure the flow is disabled before updating it */
|
||||
vsc8584_macsec_flow_disable(ctx->phydev, flow);
|
||||
/* Make sure the flow is disabled before updating it */
|
||||
vsc8584_macsec_flow_disable(ctx->phydev, flow);
|
||||
|
||||
return __vsc8584_macsec_add_rxsa(ctx, flow, true);
|
||||
}
|
||||
ret = __vsc8584_macsec_add_rxsa(ctx, flow, true);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
vsc8584_macsec_flow_enable(ctx->phydev, flow);
|
||||
return 0;
|
||||
|
|
@ -898,46 +891,59 @@ static int vsc8584_macsec_del_rxsa(struct macsec_context *ctx)
|
|||
{
|
||||
struct macsec_flow *flow;
|
||||
|
||||
flow = vsc8584_macsec_find_flow(ctx, MACSEC_INGR);
|
||||
|
||||
if (IS_ERR(flow))
|
||||
return PTR_ERR(flow);
|
||||
if (ctx->prepare)
|
||||
return 0;
|
||||
|
||||
flow = vsc8584_macsec_find_flow(ctx, MACSEC_INGR);
|
||||
if (IS_ERR(flow))
|
||||
return PTR_ERR(flow);
|
||||
|
||||
vsc8584_macsec_del_flow(ctx->phydev, flow);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int vsc8584_macsec_add_txsa(struct macsec_context *ctx)
|
||||
{
|
||||
struct macsec_flow *flow = NULL;
|
||||
struct phy_device *phydev = ctx->phydev;
|
||||
struct vsc8531_private *priv = phydev->priv;
|
||||
struct macsec_flow *flow;
|
||||
int ret;
|
||||
|
||||
if (ctx->prepare)
|
||||
return __vsc8584_macsec_add_txsa(ctx, flow, false);
|
||||
return 0;
|
||||
|
||||
flow = vsc8584_macsec_find_flow(ctx, MACSEC_EGR);
|
||||
flow = vsc8584_macsec_alloc_flow(priv, MACSEC_EGR);
|
||||
if (IS_ERR(flow))
|
||||
return PTR_ERR(flow);
|
||||
|
||||
vsc8584_macsec_flow_enable(ctx->phydev, flow);
|
||||
memcpy(flow->key, ctx->sa.key, priv->secy->key_len);
|
||||
|
||||
ret = __vsc8584_macsec_add_txsa(ctx, flow, false);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
vsc8584_macsec_flow_enable(phydev, flow);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int vsc8584_macsec_upd_txsa(struct macsec_context *ctx)
|
||||
{
|
||||
struct macsec_flow *flow;
|
||||
int ret;
|
||||
|
||||
if (ctx->prepare)
|
||||
return 0;
|
||||
|
||||
flow = vsc8584_macsec_find_flow(ctx, MACSEC_EGR);
|
||||
if (IS_ERR(flow))
|
||||
return PTR_ERR(flow);
|
||||
|
||||
if (ctx->prepare) {
|
||||
/* Make sure the flow is disabled before updating it */
|
||||
vsc8584_macsec_flow_disable(ctx->phydev, flow);
|
||||
/* Make sure the flow is disabled before updating it */
|
||||
vsc8584_macsec_flow_disable(ctx->phydev, flow);
|
||||
|
||||
return __vsc8584_macsec_add_txsa(ctx, flow, true);
|
||||
}
|
||||
ret = __vsc8584_macsec_add_txsa(ctx, flow, true);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
vsc8584_macsec_flow_enable(ctx->phydev, flow);
|
||||
return 0;
|
||||
|
|
@ -947,13 +953,13 @@ static int vsc8584_macsec_del_txsa(struct macsec_context *ctx)
|
|||
{
|
||||
struct macsec_flow *flow;
|
||||
|
||||
flow = vsc8584_macsec_find_flow(ctx, MACSEC_EGR);
|
||||
|
||||
if (IS_ERR(flow))
|
||||
return PTR_ERR(flow);
|
||||
if (ctx->prepare)
|
||||
return 0;
|
||||
|
||||
flow = vsc8584_macsec_find_flow(ctx, MACSEC_EGR);
|
||||
if (IS_ERR(flow))
|
||||
return PTR_ERR(flow);
|
||||
|
||||
vsc8584_macsec_del_flow(ctx->phydev, flow);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user