Lines Matching full:tp
126 static int tcp_pru_options_support(struct tcpcb *tp, int flags);
129 tcp_bblog_pru(struct tcpcb *tp, uint32_t pru, int error) in tcp_bblog_pru() argument
133 KASSERT(tp != NULL, ("tcp_bblog_pru: tp == NULL")); in tcp_bblog_pru()
134 INP_WLOCK_ASSERT(tptoinpcb(tp)); in tcp_bblog_pru()
135 if (tcp_bblogging_on(tp)) { in tcp_bblog_pru()
136 lgb = tcp_log_event(tp, NULL, NULL, NULL, TCP_LOG_PRU, error, in tcp_bblog_pru()
157 struct tcpcb *tp = NULL; in tcp_usr_attach() local
173 tp = tcp_newtcpcb(inp, NULL); in tcp_usr_attach()
174 if (tp == NULL) { in tcp_usr_attach()
179 tp->t_state = TCPS_CLOSED; in tcp_usr_attach()
180 tcp_bblog_pru(tp, PRU_ATTACH, error); in tcp_usr_attach()
184 TCP_PROBE2(debug__user, tp, PRU_ATTACH); in tcp_usr_attach()
198 struct tcpcb *tp; in tcp_usr_detach() local
206 tp = intotcpcb(inp); in tcp_usr_detach()
208 KASSERT(tp->t_flags & TF_DISCONNECTED || in tcp_usr_detach()
209 tp->t_state < TCPS_SYN_SENT, in tcp_usr_detach()
212 TCPSTATES_DEC(tp->t_state); in tcp_usr_detach()
213 tcp_discardcb(tp); in tcp_usr_detach()
225 struct tcpcb *tp = intotcpcb(inp); in tcp_usr_bind() local
230 if (__predict_false(tp->t_flags & TF_DISCONNECTED)) { in tcp_usr_bind()
263 tcp_bblog_pru(tp, PRU_BIND, error); in tcp_usr_bind()
264 TCP_PROBE2(debug__user, tp, PRU_BIND); in tcp_usr_bind()
276 struct tcpcb *tp = intotcpcb(inp); in tcp6_usr_bind() local
282 if (__predict_false(tp->t_flags & TF_DISCONNECTED)) { in tcp6_usr_bind()
333 tcp_bblog_pru(tp, PRU_BIND, error); in tcp6_usr_bind()
334 TCP_PROBE2(debug__user, tp, PRU_BIND); in tcp6_usr_bind()
348 struct tcpcb *tp = intotcpcb(inp); in tcp_usr_listen() local
353 if (__predict_false(tp->t_flags & TF_DISCONNECTED)) { in tcp_usr_listen()
370 tcp_state_change(tp, TCPS_LISTEN); in tcp_usr_listen()
374 tcp_offload_listen_start(tp); in tcp_usr_listen()
385 if (tp->t_flags & TF_FASTOPEN) in tcp_usr_listen()
386 tp->t_tfo_pending = tcp_fastopen_alloc_counter(); in tcp_usr_listen()
390 tcp_bblog_pru(tp, PRU_LISTEN, error); in tcp_usr_listen()
391 TCP_PROBE2(debug__user, tp, PRU_LISTEN); in tcp_usr_listen()
402 struct tcpcb *tp = intotcpcb(inp); in tcp6_usr_listen() local
408 if (__predict_false(tp->t_flags & TF_DISCONNECTED)) { in tcp6_usr_listen()
430 tcp_state_change(tp, TCPS_LISTEN); in tcp6_usr_listen()
434 tcp_offload_listen_start(tp); in tcp6_usr_listen()
445 if (tp->t_flags & TF_FASTOPEN) in tcp6_usr_listen()
446 tp->t_tfo_pending = tcp_fastopen_alloc_counter(); in tcp6_usr_listen()
451 tcp_bblog_pru(tp, PRU_LISTEN, error); in tcp6_usr_listen()
452 TCP_PROBE2(debug__user, tp, PRU_LISTEN); in tcp6_usr_listen()
471 struct tcpcb *tp = intotcpcb(inp); in tcp_usr_connect() local
476 if (__predict_false(tp->t_flags & TF_DISCONNECTED)) { in tcp_usr_connect()
508 if ((error = tcp_connect(tp, sinp, td)) != 0) in tcp_usr_connect()
516 tcp_timer_activate(tp, TT_KEEP, TP_KEEPINIT(tp)); in tcp_usr_connect()
517 error = tcp_output(tp); in tcp_usr_connect()
519 ", error code %d", tp->t_fb->tfb_tcp_block_name, tp, -error)); in tcp_usr_connect()
523 tcp_bblog_pru(tp, PRU_CONNECT, error); in tcp_usr_connect()
524 TCP_PROBE2(debug__user, tp, PRU_CONNECT); in tcp_usr_connect()
536 struct tcpcb *tp = intotcpcb(inp); in tcp6_usr_connect() local
543 if (__predict_false(tp->t_flags & TF_DISCONNECTED)) { in tcp6_usr_connect()
604 if ((error = tcp_connect(tp, &sin, td)) != 0) in tcp6_usr_connect()
612 error = tcp_output(tp); in tcp6_usr_connect()
627 if ((error = tcp6_connect(tp, sin6, td)) != 0) in tcp6_usr_connect()
635 tcp_timer_activate(tp, TT_KEEP, TP_KEEPINIT(tp)); in tcp6_usr_connect()
636 error = tcp_output(tp); in tcp6_usr_connect()
641 ", error code %d", tp->t_fb->tfb_tcp_block_name, tp, -error)); in tcp6_usr_connect()
651 tcp_bblog_pru(tp, PRU_CONNECT, error); in tcp6_usr_connect()
652 TCP_PROBE2(debug__user, tp, PRU_CONNECT); in tcp6_usr_connect()
673 struct tcpcb *tp = NULL; in tcp_usr_disconnect() local
680 tp = intotcpcb(inp); in tcp_usr_disconnect()
682 if (tp->t_state == TCPS_TIME_WAIT) in tcp_usr_disconnect()
684 tcp_disconnect(tp); in tcp_usr_disconnect()
686 tcp_bblog_pru(tp, PRU_DISCONNECT, 0); in tcp_usr_disconnect()
687 TCP_PROBE2(debug__user, tp, PRU_DISCONNECT); in tcp_usr_disconnect()
702 struct tcpcb *tp = intotcpcb(inp); in tcp_usr_accept() local
706 if (__predict_false(tp->t_flags & TF_DISCONNECTED)) { in tcp_usr_accept()
720 tcp_bblog_pru(tp, PRU_ACCEPT, error); in tcp_usr_accept()
721 TCP_PROBE2(debug__user, tp, PRU_ACCEPT); in tcp_usr_accept()
733 struct tcpcb *tp = intotcpcb(inp); in tcp6_usr_accept() local
737 if (__predict_false(tp->t_flags & TF_DISCONNECTED)) { in tcp6_usr_accept()
765 tcp_bblog_pru(tp, PRU_ACCEPT, error); in tcp6_usr_accept()
766 TCP_PROBE2(debug__user, tp, PRU_ACCEPT); in tcp6_usr_accept()
781 struct tcpcb *tp = intotcpcb(inp); in tcp_usr_shutdown() local
812 if (tp->t_flags & TF_DISCONNECTED) { in tcp_usr_shutdown()
819 tcp_usrclosed(tp); in tcp_usr_shutdown()
820 error = tcp_output_nodrop(tp); in tcp_usr_shutdown()
821 tcp_bblog_pru(tp, PRU_SHUTDOWN, error); in tcp_usr_shutdown()
822 TCP_PROBE2(debug__user, tp, PRU_SHUTDOWN); in tcp_usr_shutdown()
823 error = tcp_unlock_or_drop(tp, error); in tcp_usr_shutdown()
839 struct tcpcb *tp = intotcpcb(inp); in tcp_usr_rcvd() local
843 if (__predict_false(tp->t_flags & TF_DISCONNECTED)) { in tcp_usr_rcvd()
857 if ((tp->t_flags & TF_FASTOPEN) && (tp->t_state == TCPS_SYN_RECEIVED)) in tcp_usr_rcvd()
860 if (tp->t_flags & TF_TOE) in tcp_usr_rcvd()
861 tcp_offload_rcvd(tp); in tcp_usr_rcvd()
864 outrv = tcp_output_nodrop(tp); in tcp_usr_rcvd()
866 tcp_bblog_pru(tp, PRU_RCVD, error); in tcp_usr_rcvd()
867 TCP_PROBE2(debug__user, tp, PRU_RCVD); in tcp_usr_rcvd()
868 (void) tcp_unlock_or_drop(tp, outrv); in tcp_usr_rcvd()
886 struct tcpcb *tp = intotcpcb(inp); in tcp_usr_send() local
903 if (__predict_false(tp->t_flags & TF_DISCONNECTED)) { in tcp_usr_send()
926 (error = tcp_pru_options_support(tp, PRUS_OOB)) != 0) in tcp_usr_send()
929 if (nam != NULL && tp->t_state < TCPS_SYN_SENT) { in tcp_usr_send()
930 if (tp->t_state == TCPS_LISTEN) { in tcp_usr_send()
1025 if (tp->t_acktime == 0) in tcp_usr_send()
1026 tp->t_acktime = ticks; in tcp_usr_send()
1029 if (nam && tp->t_state < TCPS_SYN_SENT) { in tcp_usr_send()
1030 KASSERT(tp->t_state == TCPS_CLOSED, in tcp_usr_send()
1031 ("%s: tp %p is listening", __func__, tp)); in tcp_usr_send()
1040 error = tcp6_connect(tp, sin6, td); in tcp_usr_send()
1046 error = tcp_connect(tp, sinp, td); in tcp_usr_send()
1061 if (tp->t_flags & TF_FASTOPEN) in tcp_usr_send()
1062 tcp_fastopen_connect(tp); in tcp_usr_send()
1064 tp->snd_wnd = TTCP_CLIENT_SND_WND; in tcp_usr_send()
1065 tcp_mss(tp, -1); in tcp_usr_send()
1074 tcp_usrclosed(tp); in tcp_usr_send()
1076 if (TCPS_HAVEESTABLISHED(tp->t_state) && in tcp_usr_send()
1077 ((tp->t_flags2 & TF2_FBYTES_COMPLETE) == 0) && in tcp_usr_send()
1078 (tp->t_fbyte_out == 0) && in tcp_usr_send()
1080 tp->t_fbyte_out = ticks; in tcp_usr_send()
1081 if (tp->t_fbyte_out == 0) in tcp_usr_send()
1082 tp->t_fbyte_out = 1; in tcp_usr_send()
1083 if (tp->t_fbyte_out && tp->t_fbyte_in) in tcp_usr_send()
1084 tp->t_flags2 |= TF2_FBYTES_COMPLETE; in tcp_usr_send()
1088 tp->t_flags |= TF_MORETOCOME; in tcp_usr_send()
1089 error = tcp_output_nodrop(tp); in tcp_usr_send()
1091 tp->t_flags &= ~TF_MORETOCOME; in tcp_usr_send()
1111 if (tp->t_acktime == 0) in tcp_usr_send()
1112 tp->t_acktime = ticks; in tcp_usr_send()
1116 if (nam && tp->t_state < TCPS_SYN_SENT) { in tcp_usr_send()
1126 if (tp->t_flags & TF_FASTOPEN) in tcp_usr_send()
1127 tp->t_flags &= ~TF_FASTOPEN; in tcp_usr_send()
1130 error = tcp6_connect(tp, sin6, td); in tcp_usr_send()
1136 error = tcp_connect(tp, sinp, td); in tcp_usr_send()
1151 tp->snd_wnd = TTCP_CLIENT_SND_WND; in tcp_usr_send()
1152 tcp_mss(tp, -1); in tcp_usr_send()
1154 tp->snd_up = tp->snd_una + sbavail(&so->so_snd); in tcp_usr_send()
1156 tp->t_flags |= TF_FORCEDATA; in tcp_usr_send()
1157 error = tcp_output_nodrop(tp); in tcp_usr_send()
1158 tp->t_flags &= ~TF_FORCEDATA; in tcp_usr_send()
1161 TCP_LOG_EVENT(tp, NULL, in tcp_usr_send()
1183 tcp_bblog_pru(tp, (flags & PRUS_OOB) ? PRU_SENDOOB : in tcp_usr_send()
1185 TCP_PROBE2(debug__user, tp, (flags & PRUS_OOB) ? PRU_SENDOOB : in tcp_usr_send()
1187 error = tcp_unlock_or_drop(tp, error); in tcp_usr_send()
1197 struct tcpcb *tp = intotcpcb(inp); in tcp_usr_ready() local
1201 if (__predict_false(tp->t_flags & TF_DISCONNECTED)) { in tcp_usr_ready()
1215 error = tcp_output_unlock(tp); in tcp_usr_ready()
1229 struct tcpcb *tp = intotcpcb(inp); in tcp_usr_abort() local
1236 if (!(tp->t_flags & TF_DISCONNECTED)) { in tcp_usr_abort()
1237 tp = tcp_drop(tp, ECONNABORTED); in tcp_usr_abort()
1238 if (tp == NULL) in tcp_usr_abort()
1240 tcp_bblog_pru(tp, PRU_ABORT, 0); in tcp_usr_abort()
1241 TCP_PROBE2(debug__user, tp, PRU_ABORT); in tcp_usr_abort()
1243 if (!(tp->t_flags & TF_DISCONNECTED)) { in tcp_usr_abort()
1260 struct tcpcb *tp = intotcpcb(inp); in tcp_usr_close() local
1268 if (!(tp->t_flags & TF_DISCONNECTED)) { in tcp_usr_close()
1269 if (tp->t_state != TCPS_TIME_WAIT) { in tcp_usr_close()
1270 tp->t_flags |= TF_CLOSED; in tcp_usr_close()
1271 tcp_disconnect(tp); in tcp_usr_close()
1272 tcp_bblog_pru(tp, PRU_CLOSE, 0); in tcp_usr_close()
1273 TCP_PROBE2(debug__user, tp, PRU_CLOSE); in tcp_usr_close()
1276 if (!(tp->t_flags & TF_DISCONNECTED)) { in tcp_usr_close()
1285 tcp_pru_options_support(struct tcpcb *tp, int flags) in tcp_pru_options_support() argument
1296 if (tp->t_fb->tfb_pru_options) { in tcp_pru_options_support()
1297 ret = (*tp->t_fb->tfb_pru_options)(tp, flags); in tcp_pru_options_support()
1309 struct tcpcb *tp = intotcpcb(inp); in tcp_usr_rcvoob() local
1313 if (__predict_false(tp->t_flags & TF_DISCONNECTED)) { in tcp_usr_rcvoob()
1319 error = tcp_pru_options_support(tp, PRUS_OOB); in tcp_usr_rcvoob()
1326 tp->t_oobflags & TCPOOB_HADDATA) { in tcp_usr_rcvoob()
1330 if ((tp->t_oobflags & TCPOOB_HAVEDATA) == 0) { in tcp_usr_rcvoob()
1335 *mtod(m, caddr_t) = tp->t_iobc; in tcp_usr_rcvoob()
1337 tp->t_oobflags ^= (TCPOOB_HAVEDATA | TCPOOB_HADDATA); in tcp_usr_rcvoob()
1340 tcp_bblog_pru(tp, PRU_RCVOOB, error); in tcp_usr_rcvoob()
1341 TCP_PROBE2(debug__user, tp, PRU_RCVOOB); in tcp_usr_rcvoob()
1412 tcp_connect(struct tcpcb *tp, struct sockaddr_in *sin, struct thread *td) in tcp_connect() argument
1414 struct inpcb *inp = tptoinpcb(tp); in tcp_connect()
1415 struct socket *so = tptosocket(tp); in tcp_connect()
1441 while (tp->request_r_scale < TCP_MAX_WINSHIFT && in tcp_connect()
1442 (TCP_MAXWIN << tp->request_r_scale) < sb_max) in tcp_connect()
1443 tp->request_r_scale++; in tcp_connect()
1447 tcp_state_change(tp, TCPS_SYN_SENT); in tcp_connect()
1448 tp->iss = tcp_new_isn(&inp->inp_inc); in tcp_connect()
1449 if (tp->t_flags & TF_REQ_TSTMP) in tcp_connect()
1450 tp->ts_offset = tcp_new_ts_offset(&inp->inp_inc); in tcp_connect()
1451 tcp_sendseqinit(tp); in tcp_connect()
1459 tcp6_connect(struct tcpcb *tp, struct sockaddr_in6 *sin6, struct thread *td) in tcp6_connect() argument
1461 struct inpcb *inp = tptoinpcb(tp); in tcp6_connect()
1462 struct socket *so = tptosocket(tp); in tcp6_connect()
1484 while (tp->request_r_scale < TCP_MAX_WINSHIFT && in tcp6_connect()
1485 (TCP_MAXWIN << tp->request_r_scale) < sb_max) in tcp6_connect()
1486 tp->request_r_scale++; in tcp6_connect()
1490 tcp_state_change(tp, TCPS_SYN_SENT); in tcp6_connect()
1491 tp->iss = tcp_new_isn(&inp->inp_inc); in tcp6_connect()
1492 if (tp->t_flags & TF_REQ_TSTMP) in tcp6_connect()
1493 tp->ts_offset = tcp_new_ts_offset(&inp->inp_inc); in tcp6_connect()
1494 tcp_sendseqinit(tp); in tcp6_connect()
1508 tcp_fill_info(const struct tcpcb *tp, struct tcp_info *ti) in tcp_fill_info() argument
1511 INP_LOCK_ASSERT(tptoinpcb(tp)); in tcp_fill_info()
1514 ti->tcpi_state = tp->t_state; in tcp_fill_info()
1515 if ((tp->t_flags & TF_REQ_TSTMP) && (tp->t_flags & TF_RCVD_TSTMP)) in tcp_fill_info()
1517 if (tp->t_flags & TF_SACK_PERMIT) in tcp_fill_info()
1519 if ((tp->t_flags & TF_REQ_SCALE) && (tp->t_flags & TF_RCVD_SCALE)) { in tcp_fill_info()
1521 ti->tcpi_snd_wscale = tp->snd_scale; in tcp_fill_info()
1522 ti->tcpi_rcv_wscale = tp->rcv_scale; in tcp_fill_info()
1524 switch (tp->t_flags2 & (TF2_ECN_PERMIT | TF2_ACE_PERMIT)) { in tcp_fill_info()
1536 if (tp->t_flags & TF_FASTOPEN) in tcp_fill_info()
1539 ti->tcpi_rto = tp->t_rxtcur * tick; in tcp_fill_info()
1540 ti->tcpi_last_data_recv = ((uint32_t)ticks - tp->t_rcvtime) * tick; in tcp_fill_info()
1541 ti->tcpi_rtt = ((u_int64_t)tp->t_srtt * tick) >> TCP_RTT_SHIFT; in tcp_fill_info()
1542 ti->tcpi_rttvar = ((u_int64_t)tp->t_rttvar * tick) >> TCP_RTTVAR_SHIFT; in tcp_fill_info()
1544 ti->tcpi_snd_ssthresh = tp->snd_ssthresh; in tcp_fill_info()
1545 ti->tcpi_snd_cwnd = tp->snd_cwnd; in tcp_fill_info()
1550 ti->tcpi_rcv_space = tp->rcv_wnd; in tcp_fill_info()
1551 ti->tcpi_rcv_nxt = tp->rcv_nxt; in tcp_fill_info()
1552 ti->tcpi_snd_wnd = tp->snd_wnd; in tcp_fill_info()
1554 ti->tcpi_snd_nxt = tp->snd_nxt; in tcp_fill_info()
1555 ti->tcpi_snd_mss = tp->t_maxseg; in tcp_fill_info()
1556 ti->tcpi_rcv_mss = tp->t_maxseg; in tcp_fill_info()
1557 ti->tcpi_snd_rexmitpack = tp->t_sndrexmitpack; in tcp_fill_info()
1558 ti->tcpi_rcv_ooopack = tp->t_rcvoopack; in tcp_fill_info()
1559 ti->tcpi_snd_zerowin = tp->t_sndzerowin; in tcp_fill_info()
1560 ti->tcpi_snd_una = tp->snd_una; in tcp_fill_info()
1561 ti->tcpi_snd_max = tp->snd_max; in tcp_fill_info()
1562 ti->tcpi_rcv_numsacks = tp->rcv_numsacks; in tcp_fill_info()
1563 ti->tcpi_rcv_adv = tp->rcv_adv; in tcp_fill_info()
1564 ti->tcpi_dupacks = tp->t_dupacks; in tcp_fill_info()
1565 ti->tcpi_rttmin = tp->t_rttlow; in tcp_fill_info()
1567 if (tp->t_flags & TF_TOE) { in tcp_fill_info()
1569 tcp_offload_tcp_info(tp, ti); in tcp_fill_info()
1575 if ((tp->t_flags2 & (TF2_ECN_PERMIT | TF2_ACE_PERMIT)) == in tcp_fill_info()
1581 ti->tcpi_delivered_ce = tp->t_scep - 5; in tcp_fill_info()
1583 ti->tcpi_delivered_ce = tp->t_scep; in tcp_fill_info()
1584 ti->tcpi_received_ce = tp->t_rcep; in tcp_fill_info()
1596 if (tp->t_flags & TF_DISCONNECTED) { \
1608 struct tcpcb *tp = intotcpcb(inp); in tcp_ctloutput_set() local
1613 KASSERT((tp->t_flags & TF_DISCONNECTED) == 0, in tcp_ctloutput_set()
1614 ("tp_flags == %x", tp->t_flags)); in tcp_ctloutput_set()
1690 if (tp->t_fb == blk) { in tcp_ctloutput_set()
1701 error = (*blk->tfb_tcp_handoff_ok)(tp); in tcp_ctloutput_set()
1711 if (tp->t_fb->tfb_tcp_timer_stop_all != NULL) in tcp_ctloutput_set()
1712 tp->t_fb->tfb_tcp_timer_stop_all(tp); in tcp_ctloutput_set()
1714 error = (*blk->tfb_tcp_fb_init)(tp, &ptr); in tcp_ctloutput_set()
1729 if (tp->t_fb->tfb_switch_failed) { in tcp_ctloutput_set()
1730 (*tp->t_fb->tfb_switch_failed)(tp); in tcp_ctloutput_set()
1735 if (tp->t_fb->tfb_tcp_fb_fini) { in tcp_ctloutput_set()
1742 (*tp->t_fb->tfb_tcp_fb_fini)(tp, 0); in tcp_ctloutput_set()
1750 refcount_release(&tp->t_fb->tfb_refcnt); in tcp_ctloutput_set()
1754 tp->t_fb = blk; in tcp_ctloutput_set()
1755 tp->t_fb_ptr = ptr; in tcp_ctloutput_set()
1757 if (tp->t_flags & TF_TOE) { in tcp_ctloutput_set()
1758 tcp_offload_ctloutput(tp, sopt->sopt_dir, in tcp_ctloutput_set()
1769 return (tp->t_fb->tfb_tcp_ctloutput(tp, sopt)); in tcp_ctloutput_set()
1776 struct tcpcb *tp = intotcpcb(inp); in tcp_ctloutput_get() local
1781 KASSERT((tp->t_flags & TF_DISCONNECTED) == 0, in tcp_ctloutput_get()
1782 ("tp_flags == %x", tp->t_flags)); in tcp_ctloutput_get()
1805 find_tcp_function_alias(tp->t_fb, &fsn); in tcp_ctloutput_get()
1808 tp->t_fb->tfb_tcp_block_name, in tcp_ctloutput_get()
1812 fsn.pcbcnt = tp->t_fb->tfb_refcnt; in tcp_ctloutput_get()
1819 return (tp->t_fb->tfb_tcp_ctloutput(tp, sopt)); in tcp_ctloutput_get()
1826 struct tcpcb *tp = intotcpcb(inp); in tcp_ctloutput() local
1829 if (__predict_false(tp->t_flags & TF_DISCONNECTED)) { in tcp_ctloutput()
1857 struct tcpcb *tp = intotcpcb(inp); in tcp_set_cc_mod() local
1907 if (__predict_false(tp->t_flags & TF_DISCONNECTED)) { in tcp_set_cc_mod()
1919 cc_mem.tp = tp; in tcp_set_cc_mod()
1941 if (CC_ALGO(tp)->cb_destroy != NULL) in tcp_set_cc_mod()
1942 CC_ALGO(tp)->cb_destroy(&tp->t_ccv); in tcp_set_cc_mod()
1944 cc_detach(tp); in tcp_set_cc_mod()
1946 memcpy(&tp->t_ccv, &cc_mem, sizeof(struct cc_var)); in tcp_set_cc_mod()
1948 cc_attach(tp, algo); in tcp_set_cc_mod()
1950 if (TCPS_HAVEESTABLISHED(tp->t_state) && (CC_ALGO(tp)->conn_init != NULL)) { in tcp_set_cc_mod()
1952 CC_ALGO(tp)->conn_init(&tp->t_ccv); in tcp_set_cc_mod()
1965 tcp_default_ctloutput(struct tcpcb *tp, struct sockopt *sopt) in tcp_default_ctloutput() argument
1967 struct inpcb *inp = tptoinpcb(tp); in tcp_default_ctloutput()
1982 KASSERT((tp->t_flags & TF_DISCONNECTED) == 0, in tcp_default_ctloutput()
1983 ("tp_flags == %x", tp->t_flags)); in tcp_default_ctloutput()
1992 tcp6_use_min_mtu(tp); in tcp_default_ctloutput()
2022 if (CC_ALGO(tp)->ctl_output != NULL) in tcp_default_ctloutput()
2023 error = CC_ALGO(tp)->ctl_output(&tp->t_ccv, sopt, pbuf); in tcp_default_ctloutput()
2070 tp->t_flags |= opt; in tcp_default_ctloutput()
2072 tp->t_flags &= ~opt; in tcp_default_ctloutput()
2075 if (tp->t_flags & TF_TOE) { in tcp_default_ctloutput()
2076 tcp_offload_ctloutput(tp, sopt->sopt_dir, in tcp_default_ctloutput()
2092 tp->t_flags |= TF_NOPUSH; in tcp_default_ctloutput()
2093 else if (tp->t_flags & TF_NOPUSH) { in tcp_default_ctloutput()
2094 tp->t_flags &= ~TF_NOPUSH; in tcp_default_ctloutput()
2095 if (TCPS_HAVEESTABLISHED(tp->t_state)) { in tcp_default_ctloutput()
2099 error = tcp_output_nodrop(tp); in tcp_default_ctloutput()
2121 if (tp->t_state != TCPS_CLOSED) { in tcp_default_ctloutput()
2126 tp->t_port = htons(optval); in tcp_default_ctloutput()
2138 if (optval > 0 && optval <= tp->t_maxseg && in tcp_default_ctloutput()
2140 tp->t_maxseg = optval; in tcp_default_ctloutput()
2141 if (tp->t_maxseg < V_tcp_mssdflt) { in tcp_default_ctloutput()
2147 tp->t_flags2 |= TF2_PROC_SACK_PROHIBIT; in tcp_default_ctloutput()
2149 tp->t_flags2 &= ~TF2_PROC_SACK_PROHIBIT; in tcp_default_ctloutput()
2175 if ((tp->t_stats != NULL && sbp == NULL) || in tcp_default_ctloutput()
2176 (tp->t_stats == NULL && sbp != NULL)) { in tcp_default_ctloutput()
2177 struct statsblob *t = tp->t_stats; in tcp_default_ctloutput()
2178 tp->t_stats = sbp; in tcp_default_ctloutput()
2249 tp->t_maxunacktime = ui; in tcp_default_ctloutput()
2253 tp->t_keepidle = ui; in tcp_default_ctloutput()
2258 if ((tp->t_state > TCPS_LISTEN) && in tcp_default_ctloutput()
2259 (tp->t_state <= TCPS_CLOSING)) in tcp_default_ctloutput()
2260 tcp_timer_activate(tp, TT_KEEP, in tcp_default_ctloutput()
2261 TP_KEEPIDLE(tp)); in tcp_default_ctloutput()
2264 tp->t_keepintvl = ui; in tcp_default_ctloutput()
2265 if ((tp->t_state == TCPS_FIN_WAIT_2) && in tcp_default_ctloutput()
2266 (TP_MAXIDLE(tp) > 0)) in tcp_default_ctloutput()
2267 tcp_timer_activate(tp, TT_2MSL, in tcp_default_ctloutput()
2268 TP_MAXIDLE(tp)); in tcp_default_ctloutput()
2271 tp->t_keepinit = ui; in tcp_default_ctloutput()
2272 if (tp->t_state == TCPS_SYN_RECEIVED || in tcp_default_ctloutput()
2273 tp->t_state == TCPS_SYN_SENT) in tcp_default_ctloutput()
2274 tcp_timer_activate(tp, TT_KEEP, in tcp_default_ctloutput()
2275 TP_KEEPINIT(tp)); in tcp_default_ctloutput()
2287 tp->t_keepcnt = ui; in tcp_default_ctloutput()
2288 if ((tp->t_state == TCPS_FIN_WAIT_2) && in tcp_default_ctloutput()
2289 (TP_MAXIDLE(tp) > 0)) in tcp_default_ctloutput()
2290 tcp_timer_activate(tp, TT_2MSL, in tcp_default_ctloutput()
2291 TP_MAXIDLE(tp)); in tcp_default_ctloutput()
2308 if ((tp->t_state != TCPS_CLOSED) && in tcp_default_ctloutput()
2309 (tp->t_state != TCPS_LISTEN)) { in tcp_default_ctloutput()
2314 if (tp->t_state == TCPS_LISTEN) { in tcp_default_ctloutput()
2320 if (tp->t_tfo_pending == NULL) in tcp_default_ctloutput()
2321 tp->t_tfo_pending = in tcp_default_ctloutput()
2332 memcpy(tp->t_tfo_cookie.client, in tcp_default_ctloutput()
2335 tp->t_tfo_client_cookie_len = in tcp_default_ctloutput()
2339 tp->t_flags |= TF_FASTOPEN; in tcp_default_ctloutput()
2341 tp->t_flags &= ~TF_FASTOPEN; in tcp_default_ctloutput()
2354 error = tcp_log_state_change(tp, optval); in tcp_default_ctloutput()
2369 error = tcp_log_set_id(tp, buf); in tcp_default_ctloutput()
2383 error = tcp_log_dump_tp_logbuf(tp, buf, in tcp_default_ctloutput()
2387 tcp_log_dump_tp_bucket_logbufs(tp, buf); in tcp_default_ctloutput()
2415 optval = tp->t_flags & TF_NODELAY; in tcp_default_ctloutput()
2420 optval = tp->t_maxseg; in tcp_default_ctloutput()
2425 optval = ntohs(tp->t_port); in tcp_default_ctloutput()
2430 optval = tp->t_flags & TF_NOOPT; in tcp_default_ctloutput()
2435 optval = tp->t_flags & TF_NOPUSH; in tcp_default_ctloutput()
2440 tcp_fill_info(tp, &ti); in tcp_default_ctloutput()
2452 if (tp->t_stats == NULL) in tcp_default_ctloutput()
2454 else if (outsbsz >= tp->t_stats->cursz) in tcp_default_ctloutput()
2455 outsbsz = tp->t_stats->cursz; in tcp_default_ctloutput()
2481 error = stats_blob_snapshot(&sbp, outsbsz, tp->t_stats, in tcp_default_ctloutput()
2494 len = strlcpy(buf, CC_ALGO(tp)->name, TCP_CA_NAME_MAX); in tcp_default_ctloutput()
2505 ui = TP_MAXUNACKTIME(tp) / hz; in tcp_default_ctloutput()
2508 ui = TP_KEEPIDLE(tp) / hz; in tcp_default_ctloutput()
2511 ui = TP_KEEPINTVL(tp) / hz; in tcp_default_ctloutput()
2514 ui = TP_KEEPINIT(tp) / hz; in tcp_default_ctloutput()
2517 ui = TP_KEEPCNT(tp); in tcp_default_ctloutput()
2524 optval = tp->t_flags & TF_FASTOPEN; in tcp_default_ctloutput()
2530 optval = tcp_get_bblog_state(tp); in tcp_default_ctloutput()
2536 error = tcp_log_getlogbuf(sopt, tp); in tcp_default_ctloutput()
2539 len = tcp_log_get_id(tp, buf); in tcp_default_ctloutput()
2586 tcp_disconnect(struct tcpcb *tp) in tcp_disconnect() argument
2588 struct socket *so = tptosocket(tp); in tcp_disconnect()
2591 INP_WLOCK_ASSERT(tptoinpcb(tp)); in tcp_disconnect()
2597 if (tp->t_state < TCPS_ESTABLISHED && in tcp_disconnect()
2598 !(tp->t_state > TCPS_LISTEN && (tp->t_flags & TF_FASTOPEN))) { in tcp_disconnect()
2599 tp = tcp_close(tp); in tcp_disconnect()
2600 KASSERT(tp != NULL, in tcp_disconnect()
2603 tp = tcp_drop(tp, 0); in tcp_disconnect()
2604 KASSERT(tp != NULL, in tcp_disconnect()
2609 tcp_usrclosed(tp); in tcp_disconnect()
2610 if (!(tp->t_flags & TF_DISCONNECTED)) in tcp_disconnect()
2612 (void)tcp_output_nodrop(tp); in tcp_disconnect()
2627 tcp_usrclosed(struct tcpcb *tp) in tcp_usrclosed() argument
2631 INP_WLOCK_ASSERT(tptoinpcb(tp)); in tcp_usrclosed()
2633 switch (tp->t_state) { in tcp_usrclosed()
2636 tp = tcp_close(tp); in tcp_usrclosed()
2641 KASSERT(tp != NULL, in tcp_usrclosed()
2647 tp->t_flags |= TF_NEEDFIN; in tcp_usrclosed()
2651 tcp_state_change(tp, TCPS_FIN_WAIT_1); in tcp_usrclosed()
2655 tcp_state_change(tp, TCPS_LAST_ACK); in tcp_usrclosed()
2658 if (tp->t_acktime == 0) in tcp_usrclosed()
2659 tp->t_acktime = ticks; in tcp_usrclosed()
2660 if (tp->t_state >= TCPS_FIN_WAIT_2) { in tcp_usrclosed()
2661 tcp_free_sackholes(tp); in tcp_usrclosed()
2662 soisdisconnected(tptosocket(tp)); in tcp_usrclosed()
2664 if (tp->t_state == TCPS_FIN_WAIT_2) { in tcp_usrclosed()
2668 tcp_finwait2_timeout : TP_MAXIDLE(tp); in tcp_usrclosed()
2669 tcp_timer_activate(tp, TT_2MSL, timeout); in tcp_usrclosed()
2777 db_print_tcpcb(struct tcpcb *tp, const char *name, int indent, bool show_bblog, in db_print_tcpcb() argument
2781 if (only_locked && tp->t_inpcb.inp_lock.rw_lock == RW_UNLOCKED) in db_print_tcpcb()
2785 db_printf("%s at %p\n", name, tp); in db_print_tcpcb()
2790 db_print_inpcb(tptoinpcb(tp), "t_inpcb", indent); in db_print_tcpcb()
2794 TAILQ_FIRST(&tp->t_segq), tp->t_segqlen, tp->t_dupacks); in db_print_tcpcb()
2798 &tp->t_callout, &tp->t_timers); in db_print_tcpcb()
2801 db_printf("t_state: %d (", tp->t_state); in db_print_tcpcb()
2802 db_print_tstate(tp->t_state); in db_print_tcpcb()
2806 db_printf("t_flags: 0x%b\n", tp->t_flags, TF_BITS); in db_print_tcpcb()
2809 db_printf("t_flags2: 0x%b\n", tp->t_flags2, TF2_BITS); in db_print_tcpcb()
2813 tp->snd_una, tp->snd_max, tp->snd_nxt); in db_print_tcpcb()
2817 tp->snd_up, tp->snd_wl1, tp->snd_wl2); in db_print_tcpcb()
2821 tp->iss, tp->irs, tp->rcv_nxt); in db_print_tcpcb()
2825 tp->rcv_adv, tp->rcv_wnd, tp->rcv_up); in db_print_tcpcb()
2829 tp->snd_wnd, tp->snd_cwnd); in db_print_tcpcb()
2833 "0x%08x\n", tp->snd_ssthresh, tp->snd_recover); in db_print_tcpcb()
2837 tp->t_rcvtime, tp->t_starttime); in db_print_tcpcb()
2841 tp->t_rtttime, tp->t_rtseq); in db_print_tcpcb()
2845 tp->t_rxtcur, tp->t_maxseg, tp->t_srtt); in db_print_tcpcb()
2849 tp->t_rttvar, tp->t_rxtshift, tp->t_rttmin); in db_print_tcpcb()
2853 tp->t_rttupdated, tp->max_sndwnd, tp->t_softerror); in db_print_tcpcb()
2856 db_printf("t_oobflags: 0x%b t_iobc: 0x%02x\n", tp->t_oobflags, in db_print_tcpcb()
2857 TCPOOB_BITS, tp->t_iobc); in db_print_tcpcb()
2861 tp->snd_scale, tp->rcv_scale, tp->request_r_scale); in db_print_tcpcb()
2865 tp->ts_recent, tp->ts_recent_age); in db_print_tcpcb()
2869 "%u\n", tp->ts_offset, tp->last_ack_sent, tp->snd_cwnd_prev); in db_print_tcpcb()
2873 "t_badrxtwin: %u\n", tp->snd_ssthresh_prev, in db_print_tcpcb()
2874 tp->snd_recover_prev, tp->t_badrxtwin); in db_print_tcpcb()
2878 tp->snd_numholes, TAILQ_FIRST(&tp->snd_holes)); in db_print_tcpcb()
2882 tp->snd_fack, tp->rcv_numsacks); in db_print_tcpcb()
2888 tp->t_rttlow, tp->rfbuf_ts, tp->rfbuf_cnt); in db_print_tcpcb()
2891 db_printf("t_fb.tfb_tcp_block_name: %s\n", tp->t_fb->tfb_tcp_block_name); in db_print_tcpcb()
2894 db_printf("t_cc.name: %s\n", tp->t_cc->name); in db_print_tcpcb()
2897 db_printf("_t_logstate: %d (", tp->_t_logstate); in db_print_tcpcb()
2898 db_print_bblog_state(tp->_t_logstate); in db_print_tcpcb()
2903 tp->t_lognum, tp->t_loglimit, tp->t_logsn); in db_print_tcpcb()
2907 db_print_bblog_entries(&tp->t_logs, indent); in db_print_tcpcb()
2917 struct tcpcb *tp; in DB_SHOW_COMMAND() local
2926 tp = (struct tcpcb *)addr; in DB_SHOW_COMMAND()
2927 db_print_tcpcb(tp, "tcpcb", 0, show_bblog, show_inpcb, false); in DB_SHOW_COMMAND()