Lines Matching refs:tp

125 static int	tcp_pru_options_support(struct tcpcb *tp, int flags);
128 tcp_bblog_pru(struct tcpcb *tp, uint32_t pru, int error) in tcp_bblog_pru() argument
132 KASSERT(tp != NULL, ("tcp_bblog_pru: tp == NULL")); in tcp_bblog_pru()
133 INP_WLOCK_ASSERT(tptoinpcb(tp)); in tcp_bblog_pru()
134 if (tcp_bblogging_on(tp)) { in tcp_bblog_pru()
135 lgb = tcp_log_event(tp, NULL, NULL, NULL, TCP_LOG_PRU, error, in tcp_bblog_pru()
156 struct tcpcb *tp = NULL; in tcp_usr_attach() local
172 tp = tcp_newtcpcb(inp, NULL); in tcp_usr_attach()
173 if (tp == NULL) { in tcp_usr_attach()
178 tp->t_state = TCPS_CLOSED; in tcp_usr_attach()
179 tcp_bblog_pru(tp, PRU_ATTACH, error); in tcp_usr_attach()
183 TCP_PROBE2(debug__user, tp, PRU_ATTACH); in tcp_usr_attach()
197 struct tcpcb *tp; in tcp_usr_detach() local
205 tp = intotcpcb(inp); in tcp_usr_detach()
208 tp->t_state < TCPS_SYN_SENT, in tcp_usr_detach()
211 tcp_discardcb(tp); in tcp_usr_detach()
224 struct tcpcb *tp; in tcp_usr_bind() local
234 tp = intotcpcb(inp); in tcp_usr_bind()
266 tcp_bblog_pru(tp, PRU_BIND, error); in tcp_usr_bind()
267 TCP_PROBE2(debug__user, tp, PRU_BIND); in tcp_usr_bind()
280 struct tcpcb *tp; in tcp6_usr_bind() local
291 tp = intotcpcb(inp); in tcp6_usr_bind()
343 tcp_bblog_pru(tp, PRU_BIND, error); in tcp6_usr_bind()
344 TCP_PROBE2(debug__user, tp, PRU_BIND); in tcp6_usr_bind()
358 struct tcpcb *tp; in tcp_usr_listen() local
369 tp = intotcpcb(inp); in tcp_usr_listen()
385 tcp_state_change(tp, TCPS_LISTEN); in tcp_usr_listen()
389 tcp_offload_listen_start(tp); in tcp_usr_listen()
400 if (tp->t_flags & TF_FASTOPEN) in tcp_usr_listen()
401 tp->t_tfo_pending = tcp_fastopen_alloc_counter(); in tcp_usr_listen()
404 tcp_bblog_pru(tp, PRU_LISTEN, error); in tcp_usr_listen()
405 TCP_PROBE2(debug__user, tp, PRU_LISTEN); in tcp_usr_listen()
416 struct tcpcb *tp; in tcp6_usr_listen() local
428 tp = intotcpcb(inp); in tcp6_usr_listen()
449 tcp_state_change(tp, TCPS_LISTEN); in tcp6_usr_listen()
453 tcp_offload_listen_start(tp); in tcp6_usr_listen()
464 if (tp->t_flags & TF_FASTOPEN) in tcp6_usr_listen()
465 tp->t_tfo_pending = tcp_fastopen_alloc_counter(); in tcp6_usr_listen()
471 tcp_bblog_pru(tp, PRU_LISTEN, error); in tcp6_usr_listen()
472 TCP_PROBE2(debug__user, tp, PRU_LISTEN); in tcp6_usr_listen()
492 struct tcpcb *tp; in tcp_usr_connect() local
502 tp = intotcpcb(inp); in tcp_usr_connect()
531 if ((error = tcp_connect(tp, sinp, td)) != 0) in tcp_usr_connect()
539 tcp_timer_activate(tp, TT_KEEP, TP_KEEPINIT(tp)); in tcp_usr_connect()
540 error = tcp_output(tp); in tcp_usr_connect()
542 ", error code %d", tp->t_fb->tfb_tcp_block_name, tp, -error)); in tcp_usr_connect()
546 tcp_bblog_pru(tp, PRU_CONNECT, error); in tcp_usr_connect()
547 TCP_PROBE2(debug__user, tp, PRU_CONNECT); in tcp_usr_connect()
560 struct tcpcb *tp; in tcp6_usr_connect() local
572 tp = intotcpcb(inp); in tcp6_usr_connect()
630 if ((error = tcp_connect(tp, &sin, td)) != 0) in tcp6_usr_connect()
638 error = tcp_output(tp); in tcp6_usr_connect()
653 if ((error = tcp6_connect(tp, sin6, td)) != 0) in tcp6_usr_connect()
661 tcp_timer_activate(tp, TT_KEEP, TP_KEEPINIT(tp)); in tcp6_usr_connect()
662 error = tcp_output(tp); in tcp6_usr_connect()
667 ", error code %d", tp->t_fb->tfb_tcp_block_name, tp, -error)); in tcp6_usr_connect()
677 tcp_bblog_pru(tp, PRU_CONNECT, error); in tcp6_usr_connect()
678 TCP_PROBE2(debug__user, tp, PRU_CONNECT); in tcp6_usr_connect()
699 struct tcpcb *tp = NULL; in tcp_usr_disconnect() local
706 tp = intotcpcb(inp); in tcp_usr_disconnect()
708 if (tp->t_state == TCPS_TIME_WAIT) in tcp_usr_disconnect()
710 tcp_disconnect(tp); in tcp_usr_disconnect()
712 tcp_bblog_pru(tp, PRU_DISCONNECT, 0); in tcp_usr_disconnect()
713 TCP_PROBE2(debug__user, tp, PRU_DISCONNECT); in tcp_usr_disconnect()
728 struct tcpcb *tp; in tcp_usr_accept() local
738 tp = intotcpcb(inp); in tcp_usr_accept()
749 tcp_bblog_pru(tp, PRU_ACCEPT, error); in tcp_usr_accept()
750 TCP_PROBE2(debug__user, tp, PRU_ACCEPT); in tcp_usr_accept()
762 struct tcpcb *tp; in tcp6_usr_accept() local
772 tp = intotcpcb(inp); in tcp6_usr_accept()
797 tcp_bblog_pru(tp, PRU_ACCEPT, error); in tcp6_usr_accept()
798 TCP_PROBE2(debug__user, tp, PRU_ACCEPT); in tcp6_usr_accept()
813 struct tcpcb *tp = intotcpcb(inp); in tcp_usr_shutdown() local
851 tcp_usrclosed(tp); in tcp_usr_shutdown()
852 error = tcp_output_nodrop(tp); in tcp_usr_shutdown()
853 tcp_bblog_pru(tp, PRU_SHUTDOWN, error); in tcp_usr_shutdown()
854 TCP_PROBE2(debug__user, tp, PRU_SHUTDOWN); in tcp_usr_shutdown()
855 error = tcp_unlock_or_drop(tp, error); in tcp_usr_shutdown()
871 struct tcpcb *tp; in tcp_usr_rcvd() local
881 tp = intotcpcb(inp); in tcp_usr_rcvd()
891 if ((tp->t_flags & TF_FASTOPEN) && (tp->t_state == TCPS_SYN_RECEIVED)) in tcp_usr_rcvd()
894 if (tp->t_flags & TF_TOE) in tcp_usr_rcvd()
895 tcp_offload_rcvd(tp); in tcp_usr_rcvd()
898 outrv = tcp_output_nodrop(tp); in tcp_usr_rcvd()
900 tcp_bblog_pru(tp, PRU_RCVD, error); in tcp_usr_rcvd()
901 TCP_PROBE2(debug__user, tp, PRU_RCVD); in tcp_usr_rcvd()
902 (void) tcp_unlock_or_drop(tp, outrv); in tcp_usr_rcvd()
921 struct tcpcb *tp; in tcp_usr_send() local
945 tp = intotcpcb(inp); in tcp_usr_send()
963 (error = tcp_pru_options_support(tp, PRUS_OOB)) != 0) in tcp_usr_send()
966 if (nam != NULL && tp->t_state < TCPS_SYN_SENT) { in tcp_usr_send()
967 if (tp->t_state == TCPS_LISTEN) { in tcp_usr_send()
1062 if (tp->t_acktime == 0) in tcp_usr_send()
1063 tp->t_acktime = ticks; in tcp_usr_send()
1066 if (nam && tp->t_state < TCPS_SYN_SENT) { in tcp_usr_send()
1067 KASSERT(tp->t_state == TCPS_CLOSED, in tcp_usr_send()
1068 ("%s: tp %p is listening", __func__, tp)); in tcp_usr_send()
1077 error = tcp6_connect(tp, sin6, td); in tcp_usr_send()
1083 error = tcp_connect(tp, sinp, td); in tcp_usr_send()
1098 if (tp->t_flags & TF_FASTOPEN) in tcp_usr_send()
1099 tcp_fastopen_connect(tp); in tcp_usr_send()
1101 tp->snd_wnd = TTCP_CLIENT_SND_WND; in tcp_usr_send()
1102 tcp_mss(tp, -1); in tcp_usr_send()
1111 tcp_usrclosed(tp); in tcp_usr_send()
1113 if (TCPS_HAVEESTABLISHED(tp->t_state) && in tcp_usr_send()
1114 ((tp->t_flags2 & TF2_FBYTES_COMPLETE) == 0) && in tcp_usr_send()
1115 (tp->t_fbyte_out == 0) && in tcp_usr_send()
1117 tp->t_fbyte_out = ticks; in tcp_usr_send()
1118 if (tp->t_fbyte_out == 0) in tcp_usr_send()
1119 tp->t_fbyte_out = 1; in tcp_usr_send()
1120 if (tp->t_fbyte_out && tp->t_fbyte_in) in tcp_usr_send()
1121 tp->t_flags2 |= TF2_FBYTES_COMPLETE; in tcp_usr_send()
1126 tp->t_flags |= TF_MORETOCOME; in tcp_usr_send()
1127 error = tcp_output_nodrop(tp); in tcp_usr_send()
1129 tp->t_flags &= ~TF_MORETOCOME; in tcp_usr_send()
1149 if (tp->t_acktime == 0) in tcp_usr_send()
1150 tp->t_acktime = ticks; in tcp_usr_send()
1154 if (nam && tp->t_state < TCPS_SYN_SENT) { in tcp_usr_send()
1164 if (tp->t_flags & TF_FASTOPEN) in tcp_usr_send()
1165 tp->t_flags &= ~TF_FASTOPEN; in tcp_usr_send()
1168 error = tcp6_connect(tp, sin6, td); in tcp_usr_send()
1174 error = tcp_connect(tp, sinp, td); in tcp_usr_send()
1189 tp->snd_wnd = TTCP_CLIENT_SND_WND; in tcp_usr_send()
1190 tcp_mss(tp, -1); in tcp_usr_send()
1192 tp->snd_up = tp->snd_una + sbavail(&so->so_snd); in tcp_usr_send()
1194 tp->t_flags |= TF_FORCEDATA; in tcp_usr_send()
1195 error = tcp_output_nodrop(tp); in tcp_usr_send()
1196 tp->t_flags &= ~TF_FORCEDATA; in tcp_usr_send()
1199 TCP_LOG_EVENT(tp, NULL, in tcp_usr_send()
1221 tcp_bblog_pru(tp, (flags & PRUS_OOB) ? PRU_SENDOOB : in tcp_usr_send()
1223 TCP_PROBE2(debug__user, tp, (flags & PRUS_OOB) ? PRU_SENDOOB : in tcp_usr_send()
1225 error = tcp_unlock_or_drop(tp, error); in tcp_usr_send()
1235 struct tcpcb *tp; in tcp_usr_ready() local
1245 tp = intotcpcb(inp); in tcp_usr_ready()
1255 error = tcp_output_unlock(tp); in tcp_usr_ready()
1268 struct tcpcb *tp; in tcp_usr_abort() local
1283 tp = intotcpcb(inp); in tcp_usr_abort()
1284 tp = tcp_drop(tp, ECONNABORTED); in tcp_usr_abort()
1285 if (tp == NULL) in tcp_usr_abort()
1287 tcp_bblog_pru(tp, PRU_ABORT, 0); in tcp_usr_abort()
1288 TCP_PROBE2(debug__user, tp, PRU_ABORT); in tcp_usr_abort()
1306 struct tcpcb *tp; in tcp_usr_close() local
1322 tp = intotcpcb(inp); in tcp_usr_close()
1323 if (tp->t_state != TCPS_TIME_WAIT) { in tcp_usr_close()
1324 tp->t_flags |= TF_CLOSED; in tcp_usr_close()
1325 tcp_disconnect(tp); in tcp_usr_close()
1326 tcp_bblog_pru(tp, PRU_CLOSE, 0); in tcp_usr_close()
1327 TCP_PROBE2(debug__user, tp, PRU_CLOSE); in tcp_usr_close()
1339 tcp_pru_options_support(struct tcpcb *tp, int flags) in tcp_pru_options_support() argument
1350 if (tp->t_fb->tfb_pru_options) { in tcp_pru_options_support()
1351 ret = (*tp->t_fb->tfb_pru_options)(tp, flags); in tcp_pru_options_support()
1364 struct tcpcb *tp; in tcp_usr_rcvoob() local
1373 tp = intotcpcb(inp); in tcp_usr_rcvoob()
1375 error = tcp_pru_options_support(tp, PRUS_OOB); in tcp_usr_rcvoob()
1382 tp->t_oobflags & TCPOOB_HADDATA) { in tcp_usr_rcvoob()
1386 if ((tp->t_oobflags & TCPOOB_HAVEDATA) == 0) { in tcp_usr_rcvoob()
1391 *mtod(m, caddr_t) = tp->t_iobc; in tcp_usr_rcvoob()
1393 tp->t_oobflags ^= (TCPOOB_HAVEDATA | TCPOOB_HADDATA); in tcp_usr_rcvoob()
1396 tcp_bblog_pru(tp, PRU_RCVOOB, error); in tcp_usr_rcvoob()
1397 TCP_PROBE2(debug__user, tp, PRU_RCVOOB); in tcp_usr_rcvoob()
1466 tcp_connect(struct tcpcb *tp, struct sockaddr_in *sin, struct thread *td) in tcp_connect() argument
1468 struct inpcb *inp = tptoinpcb(tp); in tcp_connect()
1469 struct socket *so = tptosocket(tp); in tcp_connect()
1491 while (tp->request_r_scale < TCP_MAX_WINSHIFT && in tcp_connect()
1492 (TCP_MAXWIN << tp->request_r_scale) < sb_max) in tcp_connect()
1493 tp->request_r_scale++; in tcp_connect()
1497 tcp_state_change(tp, TCPS_SYN_SENT); in tcp_connect()
1498 tp->iss = tcp_new_isn(&inp->inp_inc); in tcp_connect()
1499 if (tp->t_flags & TF_REQ_TSTMP) in tcp_connect()
1500 tp->ts_offset = tcp_new_ts_offset(&inp->inp_inc); in tcp_connect()
1501 tcp_sendseqinit(tp); in tcp_connect()
1509 tcp6_connect(struct tcpcb *tp, struct sockaddr_in6 *sin6, struct thread *td) in tcp6_connect() argument
1511 struct inpcb *inp = tptoinpcb(tp); in tcp6_connect()
1512 struct socket *so = tptosocket(tp); in tcp6_connect()
1529 while (tp->request_r_scale < TCP_MAX_WINSHIFT && in tcp6_connect()
1530 (TCP_MAXWIN << tp->request_r_scale) < sb_max) in tcp6_connect()
1531 tp->request_r_scale++; in tcp6_connect()
1535 tcp_state_change(tp, TCPS_SYN_SENT); in tcp6_connect()
1536 tp->iss = tcp_new_isn(&inp->inp_inc); in tcp6_connect()
1537 if (tp->t_flags & TF_REQ_TSTMP) in tcp6_connect()
1538 tp->ts_offset = tcp_new_ts_offset(&inp->inp_inc); in tcp6_connect()
1539 tcp_sendseqinit(tp); in tcp6_connect()
1553 tcp_fill_info(const struct tcpcb *tp, struct tcp_info *ti) in tcp_fill_info() argument
1556 INP_LOCK_ASSERT(tptoinpcb(tp)); in tcp_fill_info()
1559 ti->tcpi_state = tp->t_state; in tcp_fill_info()
1560 if ((tp->t_flags & TF_REQ_TSTMP) && (tp->t_flags & TF_RCVD_TSTMP)) in tcp_fill_info()
1562 if (tp->t_flags & TF_SACK_PERMIT) in tcp_fill_info()
1564 if ((tp->t_flags & TF_REQ_SCALE) && (tp->t_flags & TF_RCVD_SCALE)) { in tcp_fill_info()
1566 ti->tcpi_snd_wscale = tp->snd_scale; in tcp_fill_info()
1567 ti->tcpi_rcv_wscale = tp->rcv_scale; in tcp_fill_info()
1569 switch (tp->t_flags2 & (TF2_ECN_PERMIT | TF2_ACE_PERMIT)) { in tcp_fill_info()
1581 if (tp->t_flags & TF_FASTOPEN) in tcp_fill_info()
1584 ti->tcpi_rto = tp->t_rxtcur * tick; in tcp_fill_info()
1585 ti->tcpi_last_data_recv = ((uint32_t)ticks - tp->t_rcvtime) * tick; in tcp_fill_info()
1586 ti->tcpi_rtt = ((u_int64_t)tp->t_srtt * tick) >> TCP_RTT_SHIFT; in tcp_fill_info()
1587 ti->tcpi_rttvar = ((u_int64_t)tp->t_rttvar * tick) >> TCP_RTTVAR_SHIFT; in tcp_fill_info()
1589 ti->tcpi_snd_ssthresh = tp->snd_ssthresh; in tcp_fill_info()
1590 ti->tcpi_snd_cwnd = tp->snd_cwnd; in tcp_fill_info()
1595 ti->tcpi_rcv_space = tp->rcv_wnd; in tcp_fill_info()
1596 ti->tcpi_rcv_nxt = tp->rcv_nxt; in tcp_fill_info()
1597 ti->tcpi_snd_wnd = tp->snd_wnd; in tcp_fill_info()
1599 ti->tcpi_snd_nxt = tp->snd_nxt; in tcp_fill_info()
1600 ti->tcpi_snd_mss = tp->t_maxseg; in tcp_fill_info()
1601 ti->tcpi_rcv_mss = tp->t_maxseg; in tcp_fill_info()
1602 ti->tcpi_snd_rexmitpack = tp->t_sndrexmitpack; in tcp_fill_info()
1603 ti->tcpi_rcv_ooopack = tp->t_rcvoopack; in tcp_fill_info()
1604 ti->tcpi_snd_zerowin = tp->t_sndzerowin; in tcp_fill_info()
1605 ti->tcpi_snd_una = tp->snd_una; in tcp_fill_info()
1606 ti->tcpi_snd_max = tp->snd_max; in tcp_fill_info()
1607 ti->tcpi_rcv_numsacks = tp->rcv_numsacks; in tcp_fill_info()
1608 ti->tcpi_rcv_adv = tp->rcv_adv; in tcp_fill_info()
1609 ti->tcpi_dupacks = tp->t_dupacks; in tcp_fill_info()
1610 ti->tcpi_rttmin = tp->t_rttlow; in tcp_fill_info()
1612 if (tp->t_flags & TF_TOE) { in tcp_fill_info()
1614 tcp_offload_tcp_info(tp, ti); in tcp_fill_info()
1620 if ((tp->t_flags2 & (TF2_ECN_PERMIT | TF2_ACE_PERMIT)) == in tcp_fill_info()
1626 ti->tcpi_delivered_ce = tp->t_scep - 5; in tcp_fill_info()
1628 ti->tcpi_delivered_ce = tp->t_scep; in tcp_fill_info()
1629 ti->tcpi_received_ce = tp->t_rcep; in tcp_fill_info()
1645 tp = intotcpcb(inp); \
1653 struct tcpcb *tp = intotcpcb(inp); in tcp_ctloutput_set() local
1735 if (tp->t_fb == blk) { in tcp_ctloutput_set()
1746 error = (*blk->tfb_tcp_handoff_ok)(tp); in tcp_ctloutput_set()
1756 if (tp->t_fb->tfb_tcp_timer_stop_all != NULL) in tcp_ctloutput_set()
1757 tp->t_fb->tfb_tcp_timer_stop_all(tp); in tcp_ctloutput_set()
1759 error = (*blk->tfb_tcp_fb_init)(tp, &ptr); in tcp_ctloutput_set()
1774 if (tp->t_fb->tfb_switch_failed) { in tcp_ctloutput_set()
1775 (*tp->t_fb->tfb_switch_failed)(tp); in tcp_ctloutput_set()
1780 if (tp->t_fb->tfb_tcp_fb_fini) { in tcp_ctloutput_set()
1787 (*tp->t_fb->tfb_tcp_fb_fini)(tp, 0); in tcp_ctloutput_set()
1795 refcount_release(&tp->t_fb->tfb_refcnt); in tcp_ctloutput_set()
1799 tp->t_fb = blk; in tcp_ctloutput_set()
1800 tp->t_fb_ptr = ptr; in tcp_ctloutput_set()
1802 if (tp->t_flags & TF_TOE) { in tcp_ctloutput_set()
1803 tcp_offload_ctloutput(tp, sopt->sopt_dir, in tcp_ctloutput_set()
1814 return (tp->t_fb->tfb_tcp_ctloutput(tp, sopt)); in tcp_ctloutput_set()
1821 struct tcpcb *tp = intotcpcb(inp); in tcp_ctloutput_get() local
1850 find_tcp_function_alias(tp->t_fb, &fsn); in tcp_ctloutput_get()
1853 tp->t_fb->tfb_tcp_block_name, in tcp_ctloutput_get()
1857 fsn.pcbcnt = tp->t_fb->tfb_refcnt; in tcp_ctloutput_get()
1864 return (tp->t_fb->tfb_tcp_ctloutput(tp, sopt)); in tcp_ctloutput_get()
1904 struct tcpcb *tp; in tcp_set_cc_mod() local
1964 tp = intotcpcb(inp); in tcp_set_cc_mod()
1967 cc_mem.tp = tp; in tcp_set_cc_mod()
1989 if (CC_ALGO(tp)->cb_destroy != NULL) in tcp_set_cc_mod()
1990 CC_ALGO(tp)->cb_destroy(&tp->t_ccv); in tcp_set_cc_mod()
1992 cc_detach(tp); in tcp_set_cc_mod()
1994 memcpy(&tp->t_ccv, &cc_mem, sizeof(struct cc_var)); in tcp_set_cc_mod()
1996 cc_attach(tp, algo); in tcp_set_cc_mod()
1998 if (TCPS_HAVEESTABLISHED(tp->t_state) && (CC_ALGO(tp)->conn_init != NULL)) { in tcp_set_cc_mod()
2000 CC_ALGO(tp)->conn_init(&tp->t_ccv); in tcp_set_cc_mod()
2013 tcp_default_ctloutput(struct tcpcb *tp, struct sockopt *sopt) in tcp_default_ctloutput() argument
2015 struct inpcb *inp = tptoinpcb(tp); in tcp_default_ctloutput()
2040 tcp6_use_min_mtu(tp); in tcp_default_ctloutput()
2070 if (CC_ALGO(tp)->ctl_output != NULL) in tcp_default_ctloutput()
2071 error = CC_ALGO(tp)->ctl_output(&tp->t_ccv, sopt, pbuf); in tcp_default_ctloutput()
2118 tp->t_flags |= opt; in tcp_default_ctloutput()
2120 tp->t_flags &= ~opt; in tcp_default_ctloutput()
2123 if (tp->t_flags & TF_TOE) { in tcp_default_ctloutput()
2124 tcp_offload_ctloutput(tp, sopt->sopt_dir, in tcp_default_ctloutput()
2140 tp->t_flags |= TF_NOPUSH; in tcp_default_ctloutput()
2141 else if (tp->t_flags & TF_NOPUSH) { in tcp_default_ctloutput()
2142 tp->t_flags &= ~TF_NOPUSH; in tcp_default_ctloutput()
2143 if (TCPS_HAVEESTABLISHED(tp->t_state)) { in tcp_default_ctloutput()
2147 error = tcp_output_nodrop(tp); in tcp_default_ctloutput()
2169 if (tp->t_state != TCPS_CLOSED) { in tcp_default_ctloutput()
2174 tp->t_port = htons(optval); in tcp_default_ctloutput()
2186 if (optval > 0 && optval <= tp->t_maxseg && in tcp_default_ctloutput()
2188 tp->t_maxseg = optval; in tcp_default_ctloutput()
2189 if (tp->t_maxseg < V_tcp_mssdflt) { in tcp_default_ctloutput()
2195 tp->t_flags2 |= TF2_PROC_SACK_PROHIBIT; in tcp_default_ctloutput()
2197 tp->t_flags2 &= ~TF2_PROC_SACK_PROHIBIT; in tcp_default_ctloutput()
2223 if ((tp->t_stats != NULL && sbp == NULL) || in tcp_default_ctloutput()
2224 (tp->t_stats == NULL && sbp != NULL)) { in tcp_default_ctloutput()
2225 struct statsblob *t = tp->t_stats; in tcp_default_ctloutput()
2226 tp->t_stats = sbp; in tcp_default_ctloutput()
2297 tp->t_maxunacktime = ui; in tcp_default_ctloutput()
2301 tp->t_keepidle = ui; in tcp_default_ctloutput()
2306 if ((tp->t_state > TCPS_LISTEN) && in tcp_default_ctloutput()
2307 (tp->t_state <= TCPS_CLOSING)) in tcp_default_ctloutput()
2308 tcp_timer_activate(tp, TT_KEEP, in tcp_default_ctloutput()
2309 TP_KEEPIDLE(tp)); in tcp_default_ctloutput()
2312 tp->t_keepintvl = ui; in tcp_default_ctloutput()
2313 if ((tp->t_state == TCPS_FIN_WAIT_2) && in tcp_default_ctloutput()
2314 (TP_MAXIDLE(tp) > 0)) in tcp_default_ctloutput()
2315 tcp_timer_activate(tp, TT_2MSL, in tcp_default_ctloutput()
2316 TP_MAXIDLE(tp)); in tcp_default_ctloutput()
2319 tp->t_keepinit = ui; in tcp_default_ctloutput()
2320 if (tp->t_state == TCPS_SYN_RECEIVED || in tcp_default_ctloutput()
2321 tp->t_state == TCPS_SYN_SENT) in tcp_default_ctloutput()
2322 tcp_timer_activate(tp, TT_KEEP, in tcp_default_ctloutput()
2323 TP_KEEPINIT(tp)); in tcp_default_ctloutput()
2335 tp->t_keepcnt = ui; in tcp_default_ctloutput()
2336 if ((tp->t_state == TCPS_FIN_WAIT_2) && in tcp_default_ctloutput()
2337 (TP_MAXIDLE(tp) > 0)) in tcp_default_ctloutput()
2338 tcp_timer_activate(tp, TT_2MSL, in tcp_default_ctloutput()
2339 TP_MAXIDLE(tp)); in tcp_default_ctloutput()
2356 if ((tp->t_state != TCPS_CLOSED) && in tcp_default_ctloutput()
2357 (tp->t_state != TCPS_LISTEN)) { in tcp_default_ctloutput()
2362 if (tp->t_state == TCPS_LISTEN) { in tcp_default_ctloutput()
2368 if (tp->t_tfo_pending == NULL) in tcp_default_ctloutput()
2369 tp->t_tfo_pending = in tcp_default_ctloutput()
2380 memcpy(tp->t_tfo_cookie.client, in tcp_default_ctloutput()
2383 tp->t_tfo_client_cookie_len = in tcp_default_ctloutput()
2387 tp->t_flags |= TF_FASTOPEN; in tcp_default_ctloutput()
2389 tp->t_flags &= ~TF_FASTOPEN; in tcp_default_ctloutput()
2402 error = tcp_log_state_change(tp, optval); in tcp_default_ctloutput()
2417 error = tcp_log_set_id(tp, buf); in tcp_default_ctloutput()
2431 error = tcp_log_dump_tp_logbuf(tp, buf, in tcp_default_ctloutput()
2435 tcp_log_dump_tp_bucket_logbufs(tp, buf); in tcp_default_ctloutput()
2452 tp = intotcpcb(inp); in tcp_default_ctloutput()
2464 optval = tp->t_flags & TF_NODELAY; in tcp_default_ctloutput()
2469 optval = tp->t_maxseg; in tcp_default_ctloutput()
2474 optval = ntohs(tp->t_port); in tcp_default_ctloutput()
2479 optval = tp->t_flags & TF_NOOPT; in tcp_default_ctloutput()
2484 optval = tp->t_flags & TF_NOPUSH; in tcp_default_ctloutput()
2489 tcp_fill_info(tp, &ti); in tcp_default_ctloutput()
2501 if (tp->t_stats == NULL) in tcp_default_ctloutput()
2503 else if (outsbsz >= tp->t_stats->cursz) in tcp_default_ctloutput()
2504 outsbsz = tp->t_stats->cursz; in tcp_default_ctloutput()
2530 error = stats_blob_snapshot(&sbp, outsbsz, tp->t_stats, in tcp_default_ctloutput()
2543 len = strlcpy(buf, CC_ALGO(tp)->name, TCP_CA_NAME_MAX); in tcp_default_ctloutput()
2554 ui = TP_MAXUNACKTIME(tp) / hz; in tcp_default_ctloutput()
2557 ui = TP_KEEPIDLE(tp) / hz; in tcp_default_ctloutput()
2560 ui = TP_KEEPINTVL(tp) / hz; in tcp_default_ctloutput()
2563 ui = TP_KEEPINIT(tp) / hz; in tcp_default_ctloutput()
2566 ui = TP_KEEPCNT(tp); in tcp_default_ctloutput()
2573 optval = tp->t_flags & TF_FASTOPEN; in tcp_default_ctloutput()
2579 optval = tcp_get_bblog_state(tp); in tcp_default_ctloutput()
2585 error = tcp_log_getlogbuf(sopt, tp); in tcp_default_ctloutput()
2588 len = tcp_log_get_id(tp, buf); in tcp_default_ctloutput()
2635 tcp_disconnect(struct tcpcb *tp) in tcp_disconnect() argument
2637 struct inpcb *inp = tptoinpcb(tp); in tcp_disconnect()
2638 struct socket *so = tptosocket(tp); in tcp_disconnect()
2647 if (tp->t_state < TCPS_ESTABLISHED && in tcp_disconnect()
2648 !(tp->t_state > TCPS_LISTEN && (tp->t_flags & TF_FASTOPEN))) { in tcp_disconnect()
2649 tp = tcp_close(tp); in tcp_disconnect()
2650 KASSERT(tp != NULL, in tcp_disconnect()
2653 tp = tcp_drop(tp, 0); in tcp_disconnect()
2654 KASSERT(tp != NULL, in tcp_disconnect()
2659 tcp_usrclosed(tp); in tcp_disconnect()
2662 (void)tcp_output_nodrop(tp); in tcp_disconnect()
2677 tcp_usrclosed(struct tcpcb *tp) in tcp_usrclosed() argument
2681 INP_WLOCK_ASSERT(tptoinpcb(tp)); in tcp_usrclosed()
2683 switch (tp->t_state) { in tcp_usrclosed()
2686 tcp_offload_listen_stop(tp); in tcp_usrclosed()
2688 tcp_state_change(tp, TCPS_CLOSED); in tcp_usrclosed()
2691 tp = tcp_close(tp); in tcp_usrclosed()
2696 KASSERT(tp != NULL, in tcp_usrclosed()
2702 tp->t_flags |= TF_NEEDFIN; in tcp_usrclosed()
2706 tcp_state_change(tp, TCPS_FIN_WAIT_1); in tcp_usrclosed()
2710 tcp_state_change(tp, TCPS_LAST_ACK); in tcp_usrclosed()
2713 if (tp->t_acktime == 0) in tcp_usrclosed()
2714 tp->t_acktime = ticks; in tcp_usrclosed()
2715 if (tp->t_state >= TCPS_FIN_WAIT_2) { in tcp_usrclosed()
2716 tcp_free_sackholes(tp); in tcp_usrclosed()
2717 soisdisconnected(tptosocket(tp)); in tcp_usrclosed()
2719 if (tp->t_state == TCPS_FIN_WAIT_2) { in tcp_usrclosed()
2723 tcp_finwait2_timeout : TP_MAXIDLE(tp); in tcp_usrclosed()
2724 tcp_timer_activate(tp, TT_2MSL, timeout); in tcp_usrclosed()
3047 db_print_tcpcb(struct tcpcb *tp, const char *name, int indent) in db_print_tcpcb() argument
3051 db_printf("%s at %p\n", name, tp); in db_print_tcpcb()
3057 TAILQ_FIRST(&tp->t_segq), tp->t_segqlen, tp->t_dupacks); in db_print_tcpcb()
3061 &tp->t_callout, &tp->t_timers); in db_print_tcpcb()
3064 db_printf("t_state: %d (", tp->t_state); in db_print_tcpcb()
3065 db_print_tstate(tp->t_state); in db_print_tcpcb()
3069 db_printf("t_flags: 0x%x (", tp->t_flags); in db_print_tcpcb()
3070 db_print_tflags(tp->t_flags); in db_print_tcpcb()
3074 db_printf("t_flags2: 0x%x (", tp->t_flags2); in db_print_tcpcb()
3075 db_print_tflags2(tp->t_flags2); in db_print_tcpcb()
3080 tp->snd_una, tp->snd_max, tp->snd_nxt); in db_print_tcpcb()
3084 tp->snd_up, tp->snd_wl1, tp->snd_wl2); in db_print_tcpcb()
3088 tp->iss, tp->irs, tp->rcv_nxt); in db_print_tcpcb()
3092 tp->rcv_adv, tp->rcv_wnd, tp->rcv_up); in db_print_tcpcb()
3096 tp->snd_wnd, tp->snd_cwnd); in db_print_tcpcb()
3100 "0x%08x\n", tp->snd_ssthresh, tp->snd_recover); in db_print_tcpcb()
3104 tp->t_rcvtime, tp->t_starttime); in db_print_tcpcb()
3108 tp->t_rtttime, tp->t_rtseq); in db_print_tcpcb()
3112 tp->t_rxtcur, tp->t_maxseg, tp->t_srtt); in db_print_tcpcb()
3116 tp->t_rttvar, tp->t_rxtshift, tp->t_rttmin); in db_print_tcpcb()
3120 tp->t_rttupdated, tp->max_sndwnd, tp->t_softerror); in db_print_tcpcb()
3123 db_printf("t_oobflags: 0x%x (", tp->t_oobflags); in db_print_tcpcb()
3124 db_print_toobflags(tp->t_oobflags); in db_print_tcpcb()
3125 db_printf(") t_iobc: 0x%02x\n", tp->t_iobc); in db_print_tcpcb()
3129 tp->snd_scale, tp->rcv_scale, tp->request_r_scale); in db_print_tcpcb()
3133 tp->ts_recent, tp->ts_recent_age); in db_print_tcpcb()
3137 "%u\n", tp->ts_offset, tp->last_ack_sent, tp->snd_cwnd_prev); in db_print_tcpcb()
3141 "t_badrxtwin: %u\n", tp->snd_ssthresh_prev, in db_print_tcpcb()
3142 tp->snd_recover_prev, tp->t_badrxtwin); in db_print_tcpcb()
3146 tp->snd_numholes, TAILQ_FIRST(&tp->snd_holes)); in db_print_tcpcb()
3150 tp->snd_fack, tp->rcv_numsacks); in db_print_tcpcb()
3156 tp->t_rttlow, tp->rfbuf_ts, tp->rfbuf_cnt); in db_print_tcpcb()
3161 struct tcpcb *tp; in DB_SHOW_COMMAND() local
3167 tp = (struct tcpcb *)addr; in DB_SHOW_COMMAND()
3169 db_print_tcpcb(tp, "tcpcb", 0); in DB_SHOW_COMMAND()