Skip to content

Commit 3d42c8c

Browse files
rleonSaeed Mahameed
authored and
Saeed Mahameed
committed
net/mlx5e: Ensure that IPsec sequence packet number starts from 1
According to RFC4303, section "3.3.3. Sequence Number Generation", the first packet sent using a given SA will contain a sequence number of 1. However if user didn't set seq/oseq, the HW used zero as first sequence packet number. Such misconfiguration causes to drop of first packet if replay window protection was enabled in SA. To fix it, set sequence number to be at least 1. Fixes: 7db21ef ("net/mlx5e: Set IPsec replay sequence numbers") Signed-off-by: Leon Romanovsky <[email protected]>
1 parent a5e400a commit 3d42c8c

File tree

1 file changed

+8
-1
lines changed
  • drivers/net/ethernet/mellanox/mlx5/core/en_accel

1 file changed

+8
-1
lines changed

drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,14 @@ static bool mlx5e_ipsec_update_esn_state(struct mlx5e_ipsec_sa_entry *sa_entry)
121121
if (x->xso.type == XFRM_DEV_OFFLOAD_CRYPTO)
122122
esn_msb = xfrm_replay_seqhi(x, htonl(seq_bottom));
123123

124-
sa_entry->esn_state.esn = esn;
124+
if (sa_entry->esn_state.esn_msb)
125+
sa_entry->esn_state.esn = esn;
126+
else
127+
/* According to RFC4303, section "3.3.3. Sequence Number Generation",
128+
* the first packet sent using a given SA will contain a sequence
129+
* number of 1.
130+
*/
131+
sa_entry->esn_state.esn = max_t(u32, esn, 1);
125132
sa_entry->esn_state.esn_msb = esn_msb;
126133

127134
if (unlikely(overlap && seq_bottom < MLX5E_IPSEC_ESN_SCOPE_MID)) {

0 commit comments

Comments
 (0)