summaryrefslogtreecommitdiff
path: root/src/irmd/reg
diff options
context:
space:
mode:
authorDimitri Staessens <dimitri@ouroboros.rocks>2026-08-16 19:46:34 +0000
committerSander Vrijders <sander@ouroboros.rocks>2026-08-31 08:31:46 +0200
commitf921e50952334d99b6c25ee8df09e7fb1523e92f (patch)
treeaa25e0c1745ada1300f5c214198399d12706ec61 /src/irmd/reg
parent016c3c438e9b066bb45d4934ad039a49bde7014d (diff)
downloadouroboros-f921e50952334d99b6c25ee8df09e7fb1523e92f.tar.gz
ouroboros-f921e50952334d99b6c25ee8df09e7fb1523e92f.zip
lib: Update FRCT loss recovery
Some more stability fixes in FRCT. Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks> Signed-off-by: Sander Vrijders <sander@ouroboros.rocks>
Diffstat (limited to 'src/irmd/reg')
-rw-r--r--src/irmd/reg/flow.c5
-rw-r--r--src/irmd/reg/reg.c12
2 files changed, 9 insertions, 8 deletions
diff --git a/src/irmd/reg/flow.c b/src/irmd/reg/flow.c
index 63c9199b..61e2a14b 100644
--- a/src/irmd/reg/flow.c
+++ b/src/irmd/reg/flow.c
@@ -172,8 +172,9 @@ int reg_flow_update(struct reg_flow * flow,
assert(flow->info.n_pid != 0);
assert(info->mpl != 0);
- flow->info.mpl = info->mpl;
- flow->info.mtu = info->mtu;
+ flow->info.mpl = info->mpl;
+ flow->info.mtu = info->mtu;
+ flow->info.max_rtt = info->max_rtt;
if (flow->info.state == FLOW_ALLOC_PENDING)
break;
diff --git a/src/irmd/reg/reg.c b/src/irmd/reg/reg.c
index a302fa15..e19566d4 100644
--- a/src/irmd/reg/reg.c
+++ b/src/irmd/reg/reg.c
@@ -2425,7 +2425,7 @@ int reg_flow_store_pending(int flow_id,
flow->rk.has_pending = true;
/* Doorbell raised only after the seed is parked. */
if (flow->n_rb != NULL)
- ssm_rbuff_set_bits(flow->n_rb, RB_REKEY);
+ ssm_rbuff_set_flags(flow->n_rb, RB_REKEY);
ret = 0;
} else {
ret = -ENOMEM;
@@ -2484,10 +2484,10 @@ int reg_flow_store_pending_direct(int flow_id,
flow->rk.pulled |= RK_N_1_PID;
if (flow->n_rb != NULL && !(flow->rk.pulled & RK_N_PID))
- ssm_rbuff_set_bits(flow->n_rb, RB_REKEY);
+ ssm_rbuff_set_flags(flow->n_rb, RB_REKEY);
if (flow->n_1_rb != NULL && !(flow->rk.pulled & RK_N_1_PID))
- ssm_rbuff_set_bits(flow->n_1_rb, RB_REKEY);
+ ssm_rbuff_set_flags(flow->n_1_rb, RB_REKEY);
ret = 0;
out:
@@ -2526,11 +2526,11 @@ static void __take_pending_direct(struct reg_flow * flow,
if (allocator) {
flow->rk.pulled |= RK_N_1_PID;
if (flow->n_1_rb != NULL)
- ssm_rbuff_clr_bits(flow->n_1_rb, RB_REKEY);
+ ssm_rbuff_clr_flags(flow->n_1_rb, RB_REKEY);
} else {
flow->rk.pulled |= RK_N_PID;
if (flow->n_rb != NULL)
- ssm_rbuff_clr_bits(flow->n_rb, RB_REKEY);
+ ssm_rbuff_clr_flags(flow->n_rb, RB_REKEY);
}
if ((flow->rk.pulled & RK_PID_MASK) != RK_PID_MASK)
@@ -2575,7 +2575,7 @@ int reg_flow_take_pending(int flow_id,
flow->rk.has_pending = false;
crypt_secure_clear(flow->rk.pending_seed, SYMMKEYSZ);
if (flow->n_rb != NULL)
- ssm_rbuff_clr_bits(flow->n_rb, RB_REKEY);
+ ssm_rbuff_clr_flags(flow->n_rb, RB_REKEY);
ret = 0;
out: