From 920d998e5322def988190920cfd27cd89896a2b0 Mon Sep 17 00:00:00 2001 From: Antoine Tenart Date: Wed, 21 Sep 2022 15:51:12 +0200 Subject: [PATCH 1/7] 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 Signed-off-by: Jakub Kicinski --- drivers/net/phy/mscc/mscc_macsec.c | 108 +++++++++++++++-------------- 1 file changed, 57 insertions(+), 51 deletions(-) diff --git a/drivers/net/phy/mscc/mscc_macsec.c b/drivers/net/phy/mscc/mscc_macsec.c index b7b2521c73fb..58210be879ff 100644 --- a/drivers/net/phy/mscc/mscc_macsec.c +++ b/drivers/net/phy/mscc/mscc_macsec.c @@ -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; } From 135435f90b94e02842dd52c2cf23b6c2b6a90930 Mon Sep 17 00:00:00 2001 From: Antoine Tenart Date: Wed, 21 Sep 2022 15:51:13 +0200 Subject: [PATCH 2/7] net: atlantic: 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 Atlantic driver. Signed-off-by: Antoine Tenart Signed-off-by: Jakub Kicinski --- .../ethernet/aquantia/atlantic/aq_macsec.c | 90 +++++++++---------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_macsec.c b/drivers/net/ethernet/aquantia/atlantic/aq_macsec.c index 02058fe79f52..9dbd348ac714 100644 --- a/drivers/net/ethernet/aquantia/atlantic/aq_macsec.c +++ b/drivers/net/ethernet/aquantia/atlantic/aq_macsec.c @@ -452,6 +452,9 @@ static int aq_mdo_add_secy(struct macsec_context *ctx) u32 txsc_idx; int ret = 0; + if (ctx->prepare) + return 0; + if (secy->xpn) return -EOPNOTSUPP; @@ -466,9 +469,6 @@ static int aq_mdo_add_secy(struct macsec_context *ctx) if (txsc_idx == AQ_MACSEC_MAX_SC) return -ENOSPC; - if (ctx->prepare) - return 0; - cfg->sc_sa = sc_sa; cfg->aq_txsc[txsc_idx].hw_sc_idx = aq_to_hw_sc_idx(txsc_idx, sc_sa); cfg->aq_txsc[txsc_idx].sw_secy = secy; @@ -488,13 +488,13 @@ static int aq_mdo_upd_secy(struct macsec_context *ctx) int txsc_idx; int ret = 0; + if (ctx->prepare) + return 0; + txsc_idx = aq_get_txsc_idx_from_secy(nic->macsec_cfg, secy); if (txsc_idx < 0) return -ENOENT; - if (ctx->prepare) - return 0; - if (netif_carrier_ok(nic->ndev) && netif_running(secy->netdev)) ret = aq_set_txsc(nic, txsc_idx); @@ -597,13 +597,13 @@ static int aq_mdo_add_txsa(struct macsec_context *ctx) int txsc_idx; int ret = 0; + if (ctx->prepare) + return 0; + txsc_idx = aq_get_txsc_idx_from_secy(cfg, secy); if (txsc_idx < 0) return -EINVAL; - if (ctx->prepare) - return 0; - aq_txsc = &cfg->aq_txsc[txsc_idx]; set_bit(ctx->sa.assoc_num, &aq_txsc->tx_sa_idx_busy); @@ -627,13 +627,13 @@ static int aq_mdo_upd_txsa(struct macsec_context *ctx) int txsc_idx; int ret = 0; + if (ctx->prepare) + return 0; + txsc_idx = aq_get_txsc_idx_from_secy(cfg, secy); if (txsc_idx < 0) return -EINVAL; - if (ctx->prepare) - return 0; - aq_txsc = &cfg->aq_txsc[txsc_idx]; if (netif_carrier_ok(nic->ndev) && netif_running(secy->netdev)) ret = aq_update_txsa(nic, aq_txsc->hw_sc_idx, secy, @@ -677,13 +677,13 @@ static int aq_mdo_del_txsa(struct macsec_context *ctx) int txsc_idx; int ret = 0; + if (ctx->prepare) + return 0; + txsc_idx = aq_get_txsc_idx_from_secy(cfg, ctx->secy); if (txsc_idx < 0) return -EINVAL; - if (ctx->prepare) - return 0; - ret = aq_clear_txsa(nic, &cfg->aq_txsc[txsc_idx], ctx->sa.assoc_num, AQ_CLEAR_ALL); @@ -773,6 +773,9 @@ static int aq_mdo_add_rxsc(struct macsec_context *ctx) u32 rxsc_idx; int ret = 0; + if (ctx->prepare) + return 0; + if (hweight32(cfg->rxsc_idx_busy) >= rxsc_idx_max) return -ENOSPC; @@ -780,9 +783,6 @@ static int aq_mdo_add_rxsc(struct macsec_context *ctx) if (rxsc_idx >= rxsc_idx_max) return -ENOSPC; - if (ctx->prepare) - return 0; - cfg->aq_rxsc[rxsc_idx].hw_sc_idx = aq_to_hw_sc_idx(rxsc_idx, cfg->sc_sa); cfg->aq_rxsc[rxsc_idx].sw_secy = ctx->secy; @@ -805,13 +805,13 @@ static int aq_mdo_upd_rxsc(struct macsec_context *ctx) int rxsc_idx; int ret = 0; + if (ctx->prepare) + return 0; + rxsc_idx = aq_get_rxsc_idx_from_rxsc(nic->macsec_cfg, ctx->rx_sc); if (rxsc_idx < 0) return -ENOENT; - if (ctx->prepare) - return 0; - if (netif_carrier_ok(nic->ndev) && netif_running(ctx->secy->netdev)) ret = aq_set_rxsc(nic, rxsc_idx); @@ -872,13 +872,13 @@ static int aq_mdo_del_rxsc(struct macsec_context *ctx) int rxsc_idx; int ret = 0; + if (ctx->prepare) + return 0; + rxsc_idx = aq_get_rxsc_idx_from_rxsc(nic->macsec_cfg, ctx->rx_sc); if (rxsc_idx < 0) return -ENOENT; - if (ctx->prepare) - return 0; - if (netif_carrier_ok(nic->ndev)) clear_type = AQ_CLEAR_ALL; @@ -944,13 +944,13 @@ static int aq_mdo_add_rxsa(struct macsec_context *ctx) int rxsc_idx; int ret = 0; + if (ctx->prepare) + return 0; + rxsc_idx = aq_get_rxsc_idx_from_rxsc(nic->macsec_cfg, rx_sc); if (rxsc_idx < 0) return -EINVAL; - if (ctx->prepare) - return 0; - aq_rxsc = &nic->macsec_cfg->aq_rxsc[rxsc_idx]; set_bit(ctx->sa.assoc_num, &aq_rxsc->rx_sa_idx_busy); @@ -974,13 +974,13 @@ static int aq_mdo_upd_rxsa(struct macsec_context *ctx) int rxsc_idx; int ret = 0; + if (ctx->prepare) + return 0; + rxsc_idx = aq_get_rxsc_idx_from_rxsc(cfg, rx_sc); if (rxsc_idx < 0) return -EINVAL; - if (ctx->prepare) - return 0; - if (netif_carrier_ok(nic->ndev) && netif_running(secy->netdev)) ret = aq_update_rxsa(nic, cfg->aq_rxsc[rxsc_idx].hw_sc_idx, secy, ctx->sa.rx_sa, NULL, @@ -1025,13 +1025,13 @@ static int aq_mdo_del_rxsa(struct macsec_context *ctx) int rxsc_idx; int ret = 0; + if (ctx->prepare) + return 0; + rxsc_idx = aq_get_rxsc_idx_from_rxsc(cfg, rx_sc); if (rxsc_idx < 0) return -EINVAL; - if (ctx->prepare) - return 0; - ret = aq_clear_rxsa(nic, &cfg->aq_rxsc[rxsc_idx], ctx->sa.assoc_num, AQ_CLEAR_ALL); @@ -1069,13 +1069,13 @@ static int aq_mdo_get_tx_sc_stats(struct macsec_context *ctx) struct aq_macsec_txsc *aq_txsc; int txsc_idx; + if (ctx->prepare) + return 0; + txsc_idx = aq_get_txsc_idx_from_secy(nic->macsec_cfg, ctx->secy); if (txsc_idx < 0) return -ENOENT; - if (ctx->prepare) - return 0; - aq_txsc = &nic->macsec_cfg->aq_txsc[txsc_idx]; stats = &aq_txsc->stats; aq_get_txsc_stats(hw, aq_txsc->hw_sc_idx, stats); @@ -1102,13 +1102,13 @@ static int aq_mdo_get_tx_sa_stats(struct macsec_context *ctx) u32 next_pn; int ret; + if (ctx->prepare) + return 0; + txsc_idx = aq_get_txsc_idx_from_secy(cfg, ctx->secy); if (txsc_idx < 0) return -EINVAL; - if (ctx->prepare) - return 0; - aq_txsc = &cfg->aq_txsc[txsc_idx]; sa_idx = aq_txsc->hw_sc_idx | ctx->sa.assoc_num; stats = &aq_txsc->tx_sa_stats[ctx->sa.assoc_num]; @@ -1143,13 +1143,13 @@ static int aq_mdo_get_rx_sc_stats(struct macsec_context *ctx) int ret = 0; int i; + if (ctx->prepare) + return 0; + rxsc_idx = aq_get_rxsc_idx_from_rxsc(cfg, ctx->rx_sc); if (rxsc_idx < 0) return -ENOENT; - if (ctx->prepare) - return 0; - aq_rxsc = &cfg->aq_rxsc[rxsc_idx]; for (i = 0; i < MACSEC_NUM_AN; i++) { if (!test_bit(i, &aq_rxsc->rx_sa_idx_busy)) @@ -1192,13 +1192,13 @@ static int aq_mdo_get_rx_sa_stats(struct macsec_context *ctx) u32 next_pn; int ret; + if (ctx->prepare) + return 0; + rxsc_idx = aq_get_rxsc_idx_from_rxsc(cfg, ctx->rx_sc); if (rxsc_idx < 0) return -EINVAL; - if (ctx->prepare) - return 0; - aq_rxsc = &cfg->aq_rxsc[rxsc_idx]; stats = &aq_rxsc->rx_sa_stats[ctx->sa.assoc_num]; sa_idx = aq_rxsc->hw_sc_idx | ctx->sa.assoc_num; From 854c9181738f4f38a406f3941e6797e44c3b42d6 Mon Sep 17 00:00:00 2001 From: Antoine Tenart Date: Wed, 21 Sep 2022 15:51:14 +0200 Subject: [PATCH 3/7] net: macsec: remove the prepare phase when offloading The hardware offloading in MACsec was initially supported using 2 phases. This was proposed in the RFC as this could have allowed easier fallback to the software implementation if the hardware did not support a feature or had enough entries already. But this fallback wasn't implemented and might not be a good idea after all. In addition it turned out this logic didn't mapped well the hardware logic and device drivers were mostly ignoring the preparation phase. Let's remove this as it does not offer any advantage and is ignored by drivers. Signed-off-by: Antoine Tenart Signed-off-by: Jakub Kicinski --- drivers/net/macsec.c | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/drivers/net/macsec.c b/drivers/net/macsec.c index 617f850bdb3a..160976929dfe 100644 --- a/drivers/net/macsec.c +++ b/drivers/net/macsec.c @@ -1663,22 +1663,9 @@ static int macsec_offload(int (* const func)(struct macsec_context *), if (ctx->offload == MACSEC_OFFLOAD_PHY) mutex_lock(&ctx->phydev->lock); - /* Phase I: prepare. The drive should fail here if there are going to be - * issues in the commit phase. - */ - ctx->prepare = true; - ret = (*func)(ctx); - if (ret) - goto phy_unlock; - - /* Phase II: commit. This step cannot fail. */ ctx->prepare = false; ret = (*func)(ctx); - /* This should never happen: commit is not allowed to fail */ - if (unlikely(ret)) - WARN(1, "MACsec offloading commit failed (%d)\n", ret); -phy_unlock: if (ctx->offload == MACSEC_OFFLOAD_PHY) mutex_unlock(&ctx->phydev->lock); From 6b701f4101e0d7db1084147e1413aaf26811cda5 Mon Sep 17 00:00:00 2001 From: Antoine Tenart Date: Wed, 21 Sep 2022 15:51:15 +0200 Subject: [PATCH 4/7] net: phy: mscc: macsec: remove checks on the prepare phase Remove checks on the prepare phase as it is now unused by the MACsec core implementation. Signed-off-by: Antoine Tenart Signed-off-by: Jakub Kicinski --- drivers/net/phy/mscc/mscc_macsec.c | 41 ------------------------------ 1 file changed, 41 deletions(-) diff --git a/drivers/net/phy/mscc/mscc_macsec.c b/drivers/net/phy/mscc/mscc_macsec.c index 58210be879ff..ee5b17edca39 100644 --- a/drivers/net/phy/mscc/mscc_macsec.c +++ b/drivers/net/phy/mscc/mscc_macsec.c @@ -736,10 +736,6 @@ static int vsc8584_macsec_dev_open(struct macsec_context *ctx) struct vsc8531_private *priv = ctx->phydev->priv; struct macsec_flow *flow, *tmp; - /* No operation to perform before the commit step */ - if (ctx->prepare) - return 0; - list_for_each_entry_safe(flow, tmp, &priv->macsec_flows, list) vsc8584_macsec_flow_enable(ctx->phydev, flow); @@ -751,10 +747,6 @@ static int vsc8584_macsec_dev_stop(struct macsec_context *ctx) struct vsc8531_private *priv = ctx->phydev->priv; struct macsec_flow *flow, *tmp; - /* No operation to perform before the commit step */ - if (ctx->prepare) - return 0; - list_for_each_entry_safe(flow, tmp, &priv->macsec_flows, list) vsc8584_macsec_flow_disable(ctx->phydev, flow); @@ -766,9 +758,6 @@ 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) - return 0; - if (priv->secy) return -EEXIST; @@ -787,10 +776,6 @@ static int vsc8584_macsec_del_secy(struct macsec_context *ctx) struct vsc8531_private *priv = ctx->phydev->priv; struct macsec_flow *flow, *tmp; - /* No operation to perform before the commit step */ - if (ctx->prepare) - return 0; - list_for_each_entry_safe(flow, tmp, &priv->macsec_flows, list) vsc8584_macsec_del_flow(ctx->phydev, flow); @@ -803,10 +788,6 @@ static int vsc8584_macsec_del_secy(struct macsec_context *ctx) static int vsc8584_macsec_upd_secy(struct macsec_context *ctx) { - /* No operation to perform before the commit step */ - if (ctx->prepare) - return 0; - vsc8584_macsec_del_secy(ctx); return vsc8584_macsec_add_secy(ctx); } @@ -827,10 +808,6 @@ static int vsc8584_macsec_del_rxsc(struct macsec_context *ctx) struct vsc8531_private *priv = ctx->phydev->priv; struct macsec_flow *flow, *tmp; - /* No operation to perform before the commit step */ - if (ctx->prepare) - return 0; - list_for_each_entry_safe(flow, tmp, &priv->macsec_flows, list) { if (flow->bank == MACSEC_INGR && flow->rx_sa && flow->rx_sa->sc->sci == ctx->rx_sc->sci) @@ -847,9 +824,6 @@ static int vsc8584_macsec_add_rxsa(struct macsec_context *ctx) struct macsec_flow *flow; int ret; - if (ctx->prepare) - return 0; - flow = vsc8584_macsec_alloc_flow(priv, MACSEC_INGR); if (IS_ERR(flow)) return PTR_ERR(flow); @@ -869,9 +843,6 @@ 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); @@ -891,9 +862,6 @@ static int vsc8584_macsec_del_rxsa(struct macsec_context *ctx) { struct macsec_flow *flow; - if (ctx->prepare) - return 0; - flow = vsc8584_macsec_find_flow(ctx, MACSEC_INGR); if (IS_ERR(flow)) return PTR_ERR(flow); @@ -909,9 +877,6 @@ static int vsc8584_macsec_add_txsa(struct macsec_context *ctx) struct macsec_flow *flow; int ret; - if (ctx->prepare) - return 0; - flow = vsc8584_macsec_alloc_flow(priv, MACSEC_EGR); if (IS_ERR(flow)) return PTR_ERR(flow); @@ -931,9 +896,6 @@ 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); @@ -953,9 +915,6 @@ static int vsc8584_macsec_del_txsa(struct macsec_context *ctx) { struct macsec_flow *flow; - if (ctx->prepare) - return 0; - flow = vsc8584_macsec_find_flow(ctx, MACSEC_EGR); if (IS_ERR(flow)) return PTR_ERR(flow); From 27418b55f094c3c8bb125759338f6476ab70f043 Mon Sep 17 00:00:00 2001 From: Antoine Tenart Date: Wed, 21 Sep 2022 15:51:16 +0200 Subject: [PATCH 5/7] net: atlantic: macsec: remove checks on the prepare phase Remove checks on the prepare phase as it is now unused by the MACsec core implementation. Signed-off-by: Antoine Tenart Signed-off-by: Jakub Kicinski --- .../ethernet/aquantia/atlantic/aq_macsec.c | 57 ------------------- 1 file changed, 57 deletions(-) diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_macsec.c b/drivers/net/ethernet/aquantia/atlantic/aq_macsec.c index 9dbd348ac714..3d0e16791e1c 100644 --- a/drivers/net/ethernet/aquantia/atlantic/aq_macsec.c +++ b/drivers/net/ethernet/aquantia/atlantic/aq_macsec.c @@ -292,9 +292,6 @@ static int aq_mdo_dev_open(struct macsec_context *ctx) struct aq_nic_s *nic = netdev_priv(ctx->netdev); int ret = 0; - if (ctx->prepare) - return 0; - if (netif_carrier_ok(nic->ndev)) ret = aq_apply_secy_cfg(nic, ctx->secy); @@ -306,9 +303,6 @@ static int aq_mdo_dev_stop(struct macsec_context *ctx) struct aq_nic_s *nic = netdev_priv(ctx->netdev); int i; - if (ctx->prepare) - return 0; - for (i = 0; i < AQ_MACSEC_MAX_SC; i++) { if (nic->macsec_cfg->txsc_idx_busy & BIT(i)) aq_clear_secy(nic, nic->macsec_cfg->aq_txsc[i].sw_secy, @@ -452,9 +446,6 @@ static int aq_mdo_add_secy(struct macsec_context *ctx) u32 txsc_idx; int ret = 0; - if (ctx->prepare) - return 0; - if (secy->xpn) return -EOPNOTSUPP; @@ -488,9 +479,6 @@ static int aq_mdo_upd_secy(struct macsec_context *ctx) int txsc_idx; int ret = 0; - if (ctx->prepare) - return 0; - txsc_idx = aq_get_txsc_idx_from_secy(nic->macsec_cfg, secy); if (txsc_idx < 0) return -ENOENT; @@ -543,9 +531,6 @@ static int aq_mdo_del_secy(struct macsec_context *ctx) struct aq_nic_s *nic = netdev_priv(ctx->netdev); int ret = 0; - if (ctx->prepare) - return 0; - if (!nic->macsec_cfg) return 0; @@ -597,9 +582,6 @@ static int aq_mdo_add_txsa(struct macsec_context *ctx) int txsc_idx; int ret = 0; - if (ctx->prepare) - return 0; - txsc_idx = aq_get_txsc_idx_from_secy(cfg, secy); if (txsc_idx < 0) return -EINVAL; @@ -627,9 +609,6 @@ static int aq_mdo_upd_txsa(struct macsec_context *ctx) int txsc_idx; int ret = 0; - if (ctx->prepare) - return 0; - txsc_idx = aq_get_txsc_idx_from_secy(cfg, secy); if (txsc_idx < 0) return -EINVAL; @@ -677,9 +656,6 @@ static int aq_mdo_del_txsa(struct macsec_context *ctx) int txsc_idx; int ret = 0; - if (ctx->prepare) - return 0; - txsc_idx = aq_get_txsc_idx_from_secy(cfg, ctx->secy); if (txsc_idx < 0) return -EINVAL; @@ -773,9 +749,6 @@ static int aq_mdo_add_rxsc(struct macsec_context *ctx) u32 rxsc_idx; int ret = 0; - if (ctx->prepare) - return 0; - if (hweight32(cfg->rxsc_idx_busy) >= rxsc_idx_max) return -ENOSPC; @@ -805,9 +778,6 @@ static int aq_mdo_upd_rxsc(struct macsec_context *ctx) int rxsc_idx; int ret = 0; - if (ctx->prepare) - return 0; - rxsc_idx = aq_get_rxsc_idx_from_rxsc(nic->macsec_cfg, ctx->rx_sc); if (rxsc_idx < 0) return -ENOENT; @@ -872,9 +842,6 @@ static int aq_mdo_del_rxsc(struct macsec_context *ctx) int rxsc_idx; int ret = 0; - if (ctx->prepare) - return 0; - rxsc_idx = aq_get_rxsc_idx_from_rxsc(nic->macsec_cfg, ctx->rx_sc); if (rxsc_idx < 0) return -ENOENT; @@ -944,9 +911,6 @@ static int aq_mdo_add_rxsa(struct macsec_context *ctx) int rxsc_idx; int ret = 0; - if (ctx->prepare) - return 0; - rxsc_idx = aq_get_rxsc_idx_from_rxsc(nic->macsec_cfg, rx_sc); if (rxsc_idx < 0) return -EINVAL; @@ -974,9 +938,6 @@ static int aq_mdo_upd_rxsa(struct macsec_context *ctx) int rxsc_idx; int ret = 0; - if (ctx->prepare) - return 0; - rxsc_idx = aq_get_rxsc_idx_from_rxsc(cfg, rx_sc); if (rxsc_idx < 0) return -EINVAL; @@ -1025,9 +986,6 @@ static int aq_mdo_del_rxsa(struct macsec_context *ctx) int rxsc_idx; int ret = 0; - if (ctx->prepare) - return 0; - rxsc_idx = aq_get_rxsc_idx_from_rxsc(cfg, rx_sc); if (rxsc_idx < 0) return -EINVAL; @@ -1044,9 +1002,6 @@ static int aq_mdo_get_dev_stats(struct macsec_context *ctx) struct aq_macsec_common_stats *stats = &nic->macsec_cfg->stats; struct aq_hw_s *hw = nic->aq_hw; - if (ctx->prepare) - return 0; - aq_get_macsec_common_stats(hw, stats); ctx->stats.dev_stats->OutPktsUntagged = stats->out.untagged_pkts; @@ -1069,9 +1024,6 @@ static int aq_mdo_get_tx_sc_stats(struct macsec_context *ctx) struct aq_macsec_txsc *aq_txsc; int txsc_idx; - if (ctx->prepare) - return 0; - txsc_idx = aq_get_txsc_idx_from_secy(nic->macsec_cfg, ctx->secy); if (txsc_idx < 0) return -ENOENT; @@ -1102,9 +1054,6 @@ static int aq_mdo_get_tx_sa_stats(struct macsec_context *ctx) u32 next_pn; int ret; - if (ctx->prepare) - return 0; - txsc_idx = aq_get_txsc_idx_from_secy(cfg, ctx->secy); if (txsc_idx < 0) return -EINVAL; @@ -1143,9 +1092,6 @@ static int aq_mdo_get_rx_sc_stats(struct macsec_context *ctx) int ret = 0; int i; - if (ctx->prepare) - return 0; - rxsc_idx = aq_get_rxsc_idx_from_rxsc(cfg, ctx->rx_sc); if (rxsc_idx < 0) return -ENOENT; @@ -1192,9 +1138,6 @@ static int aq_mdo_get_rx_sa_stats(struct macsec_context *ctx) u32 next_pn; int ret; - if (ctx->prepare) - return 0; - rxsc_idx = aq_get_rxsc_idx_from_rxsc(cfg, ctx->rx_sc); if (rxsc_idx < 0) return -EINVAL; From 36c2ebced3a808d6fa3cc2847a4f20ef7c5d5b5b Mon Sep 17 00:00:00 2001 From: Antoine Tenart Date: Wed, 21 Sep 2022 15:51:17 +0200 Subject: [PATCH 6/7] net/mlx5e: macsec: remove checks on the prepare phase Remove checks on the prepare phase as it is now unused by the MACsec core implementation. Signed-off-by: Antoine Tenart Signed-off-by: Jakub Kicinski --- .../mellanox/mlx5/core/en_accel/macsec.c | 36 ------------------- 1 file changed, 36 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/macsec.c b/drivers/net/ethernet/mellanox/mlx5/core/en_accel/macsec.c index a13169723153..5da746da898d 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/macsec.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_accel/macsec.c @@ -519,9 +519,6 @@ static int mlx5e_macsec_add_txsa(struct macsec_context *ctx) struct mlx5e_macsec *macsec; int err = 0; - if (ctx->prepare) - return 0; - mutex_lock(&priv->macsec->lock); macsec = priv->macsec; @@ -595,9 +592,6 @@ static int mlx5e_macsec_upd_txsa(struct macsec_context *ctx) struct net_device *netdev; int err = 0; - if (ctx->prepare) - return 0; - mutex_lock(&priv->macsec->lock); macsec = priv->macsec; @@ -658,9 +652,6 @@ static int mlx5e_macsec_del_txsa(struct macsec_context *ctx) struct mlx5e_macsec *macsec; int err = 0; - if (ctx->prepare) - return 0; - mutex_lock(&priv->macsec->lock); macsec = priv->macsec; macsec_device = mlx5e_macsec_get_macsec_device_context(macsec, ctx); @@ -713,9 +704,6 @@ static int mlx5e_macsec_add_rxsc(struct macsec_context *ctx) struct mlx5e_macsec *macsec; int err = 0; - if (ctx->prepare) - return 0; - mutex_lock(&priv->macsec->lock); macsec = priv->macsec; macsec_device = mlx5e_macsec_get_macsec_device_context(macsec, ctx); @@ -793,9 +781,6 @@ static int mlx5e_macsec_upd_rxsc(struct macsec_context *ctx) int i; int err = 0; - if (ctx->prepare) - return 0; - mutex_lock(&priv->macsec->lock); macsec = priv->macsec; @@ -844,9 +829,6 @@ static int mlx5e_macsec_del_rxsc(struct macsec_context *ctx) int err = 0; int i; - if (ctx->prepare) - return 0; - mutex_lock(&priv->macsec->lock); macsec = priv->macsec; @@ -912,9 +894,6 @@ static int mlx5e_macsec_add_rxsa(struct macsec_context *ctx) struct list_head *list; int err = 0; - if (ctx->prepare) - return 0; - mutex_lock(&priv->macsec->lock); macsec = priv->macsec; @@ -999,9 +978,6 @@ static int mlx5e_macsec_upd_rxsa(struct macsec_context *ctx) struct list_head *list; int err = 0; - if (ctx->prepare) - return 0; - mutex_lock(&priv->macsec->lock); macsec = priv->macsec; @@ -1058,9 +1034,6 @@ static int mlx5e_macsec_del_rxsa(struct macsec_context *ctx) struct list_head *list; int err = 0; - if (ctx->prepare) - return 0; - mutex_lock(&priv->macsec->lock); macsec = priv->macsec; @@ -1110,9 +1083,6 @@ static int mlx5e_macsec_add_secy(struct macsec_context *ctx) struct mlx5e_macsec *macsec; int err = 0; - if (ctx->prepare) - return 0; - if (!mlx5e_macsec_secy_features_validate(ctx)) return -EINVAL; @@ -1213,9 +1183,6 @@ static int mlx5e_macsec_upd_secy(struct macsec_context *ctx) struct mlx5e_macsec *macsec; int i, err = 0; - if (ctx->prepare) - return 0; - if (!mlx5e_macsec_secy_features_validate(ctx)) return -EINVAL; @@ -1274,9 +1241,6 @@ static int mlx5e_macsec_del_secy(struct macsec_context *ctx) int err = 0; int i; - if (ctx->prepare) - return 0; - mutex_lock(&priv->macsec->lock); macsec = priv->macsec; macsec_device = mlx5e_macsec_get_macsec_device_context(macsec, ctx); From 99383f1298ee25901b1f6a665bdcc3344acb2382 Mon Sep 17 00:00:00 2001 From: Antoine Tenart Date: Wed, 21 Sep 2022 15:51:18 +0200 Subject: [PATCH 7/7] net: macsec: remove the prepare flag from the MACsec offloading context Now that the MACsec offloading preparation phase was removed from the MACsec core implementation as well as from drivers implementing it, we can safely remove the flag representing it. Signed-off-by: Antoine Tenart Signed-off-by: Jakub Kicinski --- drivers/net/macsec.c | 1 - include/net/macsec.h | 2 -- 2 files changed, 3 deletions(-) diff --git a/drivers/net/macsec.c b/drivers/net/macsec.c index 160976929dfe..8193ab39206f 100644 --- a/drivers/net/macsec.c +++ b/drivers/net/macsec.c @@ -1663,7 +1663,6 @@ static int macsec_offload(int (* const func)(struct macsec_context *), if (ctx->offload == MACSEC_OFFLOAD_PHY) mutex_lock(&ctx->phydev->lock); - ctx->prepare = false; ret = (*func)(ctx); if (ctx->offload == MACSEC_OFFLOAD_PHY) diff --git a/include/net/macsec.h b/include/net/macsec.h index 871599b11707..5b9c61c4d3a6 100644 --- a/include/net/macsec.h +++ b/include/net/macsec.h @@ -271,8 +271,6 @@ struct macsec_context { struct macsec_rx_sa_stats *rx_sa_stats; struct macsec_dev_stats *dev_stats; } stats; - - u8 prepare:1; }; /**