Commit 1b9d8bc1 authored by Paolo Abeni's avatar Paolo Abeni
Browse files

Merge branch 'add-update_pn-flag'

Radu Pirea says:

====================
Add update_pn flag

Patches extracted from
https://lore.kernel.org/all/20230928084430.1882670-1-radu-nicolae.pirea@oss.nxp.com/
Update_pn flag will let the offloaded MACsec implementations to know when
the PN is updated.
====================

Link: https://lore.kernel.org/r/20231005180636.672791-1-radu-nicolae.pirea@oss.nxp.com


Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parents 26c29961 fde2f2d7
Loading
Loading
Loading
Loading
+9 −4
Original line number Diff line number Diff line
@@ -1357,10 +1357,12 @@ static int cn10k_mdo_upd_txsa(struct macsec_context *ctx)

	if (netif_running(secy->netdev)) {
		/* Keys cannot be changed after creation */
		if (ctx->sa.update_pn) {
			err = cn10k_write_tx_sa_pn(pfvf, txsc, sa_num,
						   sw_tx_sa->next_pn);
			if (err)
				return err;
		}

		err = cn10k_mcs_link_tx_sa2sc(pfvf, secy, txsc,
					      sa_num, sw_tx_sa->active);
@@ -1529,6 +1531,9 @@ static int cn10k_mdo_upd_rxsa(struct macsec_context *ctx)
		if (err)
			return err;

		if (!ctx->sa.update_pn)
			return 0;

		err = cn10k_mcs_write_rx_sa_pn(pfvf, rxsc, sa_num,
					       rx_sa->next_pn);
		if (err)
+2 −2
Original line number Diff line number Diff line
@@ -580,7 +580,7 @@ static int mlx5e_macsec_upd_txsa(struct macsec_context *ctx)
		goto out;
	}

	if (tx_sa->next_pn != ctx_tx_sa->next_pn_halves.lower) {
	if (ctx->sa.update_pn) {
		netdev_err(netdev, "MACsec offload: update TX sa %d PN isn't supported\n",
			   assoc_num);
		err = -EINVAL;
@@ -973,7 +973,7 @@ static int mlx5e_macsec_upd_rxsa(struct macsec_context *ctx)
		goto out;
	}

	if (rx_sa->next_pn != ctx_rx_sa->next_pn_halves.lower) {
	if (ctx->sa.update_pn) {
		netdev_err(ctx->netdev,
			   "MACsec offload update RX sa %d PN isn't supported\n",
			   assoc_num);
+2 −0
Original line number Diff line number Diff line
@@ -2383,6 +2383,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.sa.update_pn = !!prev_pn.full64;
		ctx.secy = secy;

		ret = macsec_offload(ops->mdo_upd_txsa, &ctx);
@@ -2476,6 +2477,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.sa.update_pn = !!prev_pn.full64;
		ctx.secy = secy;

		ret = macsec_offload(ops->mdo_upd_rxsa, &ctx);
+6 −0
Original line number Diff line number Diff line
@@ -849,6 +849,9 @@ static int vsc8584_macsec_upd_rxsa(struct macsec_context *ctx)
	struct macsec_flow *flow;
	int ret;

	if (ctx->sa.update_pn)
		return -EINVAL;

	flow = vsc8584_macsec_find_flow(ctx, MACSEC_INGR);
	if (IS_ERR(flow))
		return PTR_ERR(flow);
@@ -900,6 +903,9 @@ static int vsc8584_macsec_upd_txsa(struct macsec_context *ctx)
	struct macsec_flow *flow;
	int ret;

	if (ctx->sa.update_pn)
		return -EINVAL;

	flow = vsc8584_macsec_find_flow(ctx, MACSEC_EGR);
	if (IS_ERR(flow))
		return PTR_ERR(flow);
+1 −0
Original line number Diff line number Diff line
@@ -258,6 +258,7 @@ struct macsec_context {
	struct macsec_secy *secy;
	struct macsec_rx_sc *rx_sc;
	struct {
		bool update_pn;
		unsigned char assoc_num;
		u8 key[MACSEC_MAX_KEY_LEN];
		union {