tcp: improve BBLog for output events when using the FreeBSD stack

Put the return value of ip_output()/ip6_output in the output event
instead of adding another one in case of an error. This improves
consistency with other similar places.

Reviewed by:		rscheff
Sponsored by:		Netflix, Inc.
Differential Revision:	https://reviews.freebsd.org/D36085
This commit is contained in:
Michael Tuexen 2022-08-08 13:07:10 +02:00
parent bb995f2ef0
commit bd30a1216e

View File

@ -222,6 +222,7 @@ tcp_default_output(struct tcpcb *tp)
int tso, mtu;
struct tcpopt to;
struct udphdr *udp = NULL;
struct tcp_log_buffer *lgb;
unsigned int wanted_cookie = 0;
unsigned int dont_sendalot = 0;
#if 0
@ -1441,8 +1442,13 @@ tcp_default_output(struct tcpcb *tp)
TCP_PROBE3(debug__output, tp, th, m);
/* We're getting ready to send; log now. */
TCP_LOG_EVENT(tp, th, &so->so_rcv, &so->so_snd, TCP_LOG_OUT, ERRNO_UNK,
len, NULL, false);
/* XXXMT: We are not honoring verbose logging. */
if (tp->t_logstate != TCP_LOG_STATE_OFF)
lgb = tcp_log_event_(tp, th, &so->so_rcv, &so->so_snd,
TCP_LOG_OUT, ERRNO_UNK, len, NULL, false, NULL, NULL, 0,
NULL);
else
lgb = NULL;
/*
* Fill in IP length and desired time to live and
@ -1542,6 +1548,10 @@ tcp_default_output(struct tcpcb *tp)
}
#endif /* INET */
if (lgb != NULL) {
lgb->tlb_errno = error;
lgb = NULL;
}
out:
if (error == 0)
tcp_account_for_send(tp, len, (tp->snd_nxt != tp->snd_max), 0, hw_tls);
@ -1655,10 +1665,6 @@ tcp_default_output(struct tcpcb *tp)
tcp_clean_dsack_blocks(tp);
}
if (error) {
/* Record the error. */
TCP_LOG_EVENT(tp, NULL, &so->so_rcv, &so->so_snd, TCP_LOG_OUT,
error, 0, NULL, false);
/*
* We know that the packet was lost, so back out the
* sequence number advance, if any.