summaryrefslogtreecommitdiffstats
path: root/sys/netinet
diff options
context:
space:
mode:
authorhsu <hsu@FreeBSD.org>2003-01-18 19:03:26 +0000
committerhsu <hsu@FreeBSD.org>2003-01-18 19:03:26 +0000
commita18d0c206fb2bbd4eea394e1fd13aada1e17a155 (patch)
tree004e5f887e9118bb471fbd0aa67ac9aa73badae4 /sys/netinet
parentbaad1fb8f84de5b15ee509ee3042c76622f53f24 (diff)
downloadFreeBSD-src-a18d0c206fb2bbd4eea394e1fd13aada1e17a155.zip
FreeBSD-src-a18d0c206fb2bbd4eea394e1fd13aada1e17a155.tar.gz
Optimize away call to bzero() in the common case by directly checking
if a connection has any cached TAO information.
Diffstat (limited to 'sys/netinet')
-rw-r--r--sys/netinet/tcp_output.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/sys/netinet/tcp_output.c b/sys/netinet/tcp_output.c
index 1742477..34b0d84 100644
--- a/sys/netinet/tcp_output.c
+++ b/sys/netinet/tcp_output.c
@@ -105,6 +105,7 @@ SYSCTL_INT(_net_inet_tcp, OID_AUTO, local_slowstart_flightsize, CTLFLAG_RW,
int tcp_do_newreno = 1;
SYSCTL_INT(_net_inet_tcp, OID_AUTO, newreno, CTLFLAG_RW, &tcp_do_newreno,
0, "Enable NewReno Algorithms");
+
/*
* Tcp output routine: figure out what should be sent and send it.
*/
@@ -125,7 +126,6 @@ tcp_output(struct tcpcb *tp)
int maxburst = TCP_MAXBURST;
#endif
struct rmxp_tao *taop;
- struct rmxp_tao tao_noncached;
#ifdef INET6
struct ip6_hdr *ip6 = NULL;
int isipv6;
@@ -234,10 +234,7 @@ again:
*/
len = (long)ulmin(so->so_snd.sb_cc, win) - off;
- if ((taop = tcp_gettaocache(&tp->t_inpcb->inp_inc)) == NULL) {
- taop = &tao_noncached;
- bzero(taop, sizeof(*taop));
- }
+ taop = tcp_gettaocache(&tp->t_inpcb->inp_inc);
/*
* Lop off SYN bit if it has already been sent. However, if this
@@ -248,7 +245,7 @@ again:
flags &= ~TH_SYN;
off--, len++;
if (len > 0 && tp->t_state == TCPS_SYN_SENT &&
- taop->tao_ccsent == 0)
+ (taop == NULL || taop->tao_ccsent == 0))
return 0;
}
OpenPOWER on IntegriCloud