aboutsummaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorAriel Ehrenberg <aehrenberg@nvidia.com>2026-04-15 21:45:07 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2026-05-06 20:52:12 +0000
commitbf636accdde4bb9af2c6c07af5420dffffd82332 (patch)
treedccf5b253c55d7b9ad63869bf03a60cb6985d570 /sys/dev
parentc316ec259011e9e22e40eaa72d834f3bfac95c28 (diff)
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/mlx5/mlx5_en/mlx5_en_hw_tls_rx.c15
1 files 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;