From 2f4e46dfdd710c6679f233480c9de430e6c4ef9b Mon Sep 17 00:00:00 2001 From: Michael Tuexen Date: Fri, 16 Feb 2024 12:19:24 +0100 Subject: [PATCH] RACK, BBR: handle EACCES like EPERM for IP output handling The FreeBSD TCP base stack handles them also the same way. In case of packet filters dropping packets in the output path, this avoids retranmitting the dropped packet every 10ms or so. Reviewed by: rscheff MFC after: 1 week Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D43773 --- sys/netinet/tcp_stacks/bbr.c | 1 + sys/netinet/tcp_stacks/rack.c | 1 + 2 files changed, 2 insertions(+) diff --git a/sys/netinet/tcp_stacks/bbr.c b/sys/netinet/tcp_stacks/bbr.c index c643f032109..931beba7a26 100644 --- a/sys/netinet/tcp_stacks/bbr.c +++ b/sys/netinet/tcp_stacks/bbr.c @@ -13809,6 +13809,7 @@ bbr_output_wtime(struct tcpcb *tp, const struct timeval *tv) return (error); } case EPERM: + case EACCES: tp->t_softerror = error; /* FALLTHROUGH */ case EHOSTDOWN: diff --git a/sys/netinet/tcp_stacks/rack.c b/sys/netinet/tcp_stacks/rack.c index 0ec50bb5e5c..49d946dbb63 100644 --- a/sys/netinet/tcp_stacks/rack.c +++ b/sys/netinet/tcp_stacks/rack.c @@ -22376,6 +22376,7 @@ rack_output(struct tcpcb *tp) sendalot = 0; switch (error) { case EPERM: + case EACCES: tp->t_softerror = error; #ifdef TCP_ACCOUNTING crtsc = get_cyclecount();