Date: Wed, 06 May 2026 20:52:28 +0000 From: Konstantin Belousov <kib@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Cc: Ariel Ehrenberg <aehrenberg@nvidia.com> Subject: git: bf636accdde4 - main - mlx5en: destroy TIR before DEK during TLS RX teardown Message-ID: <69fbaa0c.229d5.2dc77e0e@gitrepo.freebsd.org>
index | next in thread | raw e-mail
The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=bf636accdde4bb9af2c6c07af5420dffffd82332 commit bf636accdde4bb9af2c6c07af5420dffffd82332 Author: Ariel Ehrenberg <aehrenberg@nvidia.com> AuthorDate: 2026-04-15 21:45:07 +0000 Commit: Konstantin Belousov <kib@FreeBSD.org> CommitDate: 2026-05-06 20:52:12 +0000 mlx5en: destroy TIR before DEK during TLS RX teardown Reorder the TLS RX teardown sequence so the TIR is destroyed before the DEK. DESTROY_TIR for a TLS-enabled TIR issues a TRA RX fence that drains all in-flight packets from the crypto pipeline. If the DEK is destroyed first, packets still in flight hit a TPT encryption error (vendor syndrome 0x55) because the key they reference is already gone. Reviewed by: kib Sponsored by: Nvidia networking MFC after: 1 week --- sys/dev/mlx5/mlx5_en/mlx5_en_hw_tls_rx.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/sys/dev/mlx5/mlx5_en/mlx5_en_hw_tls_rx.c b/sys/dev/mlx5/mlx5_en/mlx5_en_hw_tls_rx.c index 89d2010656c5..b6a9a0c01d09 100644 --- a/sys/dev/mlx5/mlx5_en/mlx5_en_hw_tls_rx.c +++ b/sys/dev/mlx5/mlx5_en/mlx5_en_hw_tls_rx.c @@ -596,14 +596,21 @@ mlx5e_tls_rx_work(struct work_struct *work) if (ptag->flow_rule != NULL) mlx5e_accel_fs_del_inpcb(ptag->flow_rule); + /* + * Destroy TIR before DEK. DESTROY_TIR for a TLS- + * enabled TIR issues a TRA RX fence that drains all + * in-flight packets from the crypto pipeline. If the + * DEK were destroyed first, packets still in flight + * would hit a TPT encryption error (vendor syndrome + * 0x55) because the key they reference is already gone. + */ + if (ptag->tirn != 0) + mlx5_tls_close_tir(priv->mdev, ptag->tirn); + /* try to destroy DEK context by ID */ if (ptag->dek_index_ok) mlx5_encryption_key_destroy(priv->mdev, ptag->dek_index); - /* try to destroy TIR context by ID */ - if (ptag->tirn != 0) - mlx5_tls_close_tir(priv->mdev, ptag->tirn); - /* free tag */ mlx5e_tls_rx_tag_zfree(ptag); break;home | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69fbaa0c.229d5.2dc77e0e>
