Lines Matching refs:tp
88 tcp_timer_enter(struct inpcb *inp, struct socket **so, struct tcpcb **tp,
96 *tp = NULL;
99 *tp = intotcpcb(inp);
101 if (*tp == NULL || !ISSET((*tp)->t_flags, TF_TIMER << timer) ||
102 timeout_pending(&(*tp)->t_timer[timer]))
104 CLR((*tp)->t_flags, TF_TIMER << timer);
125 struct tcpcb *otp = NULL, *tp;
133 if (tcp_timer_enter(inp, &so, &tp, TCPT_DELACK))
137 otp = tp;
138 ostate = tp->t_state;
140 tp->t_flags |= TF_ACKNOW;
141 (void) tcp_output(tp);
143 tcp_trace(TA_TIMER, ostate, tp, otp, NULL, TCPT_DELACK, 0);
162 * Cancel all timers for TCP tp.
165 tcp_canceltimers(struct tcpcb *tp)
170 TCP_TIMER_DISARM(tp, i);
185 tcp_timer_freesack(struct tcpcb *tp)
191 q = tp->snd_holes;
197 tp->snd_holes = 0;
205 struct tcpcb *otp = NULL, *tp;
209 if (tcp_timer_enter(inp, &so, &tp, TCPT_REXMT))
212 if ((tp->t_flags & TF_PMTUD_PEND) &&
213 SEQ_GEQ(tp->t_pmtud_th_seq, tp->snd_una) &&
214 SEQ_LT(tp->t_pmtud_th_seq, (int)(tp->snd_una + tp->t_maxseg))) {
220 tp->t_flags &= ~TF_PMTUD_PEND;
223 icmp.icmp_nextmtu = tp->t_pmtud_nextmtu;
224 icmp.icmp_ip.ip_len = tp->t_pmtud_ip_len;
225 icmp.icmp_ip.ip_hl = tp->t_pmtud_ip_hl;
242 tcp_timer_freesack(tp);
243 if (++tp->t_rxtshift > TCP_MAXRXTSHIFT) {
244 tp->t_rxtshift = TCP_MAXRXTSHIFT;
246 tp = tcp_drop(tp, tp->t_softerror ?
247 tp->t_softerror : ETIMEDOUT);
251 otp = tp;
252 ostate = tp->t_state;
255 rto = TCP_REXMTVAL(tp);
256 if (rto < tp->t_rttmin)
257 rto = tp->t_rttmin;
258 TCPT_RANGESET(tp->t_rxtcur,
259 rto * tcp_backoff[tp->t_rxtshift],
260 tp->t_rttmin, TCPTV_REXMTMAX);
261 TCP_TIMER_ARM(tp, TCPT_REXMT, tp->t_rxtcur);
272 TCPS_HAVEESTABLISHED(tp->t_state) &&
273 tp->t_rxtshift > TCP_MAXRXTSHIFT / 6) {
287 switch(tp->pf) {
323 if (tp->t_rxtshift > TCP_MAXRXTSHIFT / 4) {
325 tp->t_rttvar += (tp->t_srtt >> TCP_RTT_SHIFT);
326 tp->t_srtt = 0;
328 tp->snd_nxt = tp->snd_una;
333 tp->snd_last = tp->snd_max;
337 tp->t_rtttime = 0;
343 if ((tp->t_state == TCPS_SYN_SENT || tp->t_state == TCPS_SYN_RECEIVED)
344 && atomic_load_int(&tcp_do_ecn) && !(tp->t_flags & TF_DISABLE_ECN))
345 tp->t_flags |= TF_DISABLE_ECN;
374 win = ulmin(tp->snd_wnd, tp->snd_cwnd) / 2 / tp->t_maxseg;
377 tp->snd_cwnd = tp->t_maxseg;
378 tp->snd_ssthresh = win * tp->t_maxseg;
379 tp->t_dupacks = 0;
381 tp->snd_last = tp->snd_max;
382 tp->t_flags |= TF_SEND_CWR;
388 (void) tcp_output(tp);
390 tcp_trace(TA_TIMER, ostate, tp, otp, NULL, TCPT_REXMT, 0);
400 struct tcpcb *otp = NULL, *tp;
405 if (tcp_timer_enter(inp, &so, &tp, TCPT_PERSIST))
408 if (TCP_TIMER_ISARMED(tp, TCPT_REXMT))
412 otp = tp;
413 ostate = tp->t_state;
423 rto = TCP_REXMTVAL(tp);
424 if (rto < tp->t_rttmin)
425 rto = tp->t_rttmin;
427 if (tp->t_rxtshift == TCP_MAXRXTSHIFT &&
428 ((now - tp->t_rcvtime) >= tcp_maxpersistidle ||
429 (now - tp->t_rcvtime) >= rto * tcp_totbackoff)) {
431 tp = tcp_drop(tp, ETIMEDOUT);
434 tcp_setpersist(tp);
435 tp->t_force = 1;
436 (void) tcp_output(tp);
437 tp->t_force = 0;
439 tcp_trace(TA_TIMER, ostate, tp, otp, NULL, TCPT_PERSIST, 0);
449 struct tcpcb *otp = NULL, *tp;
452 if (tcp_timer_enter(inp, &so, &tp, TCPT_KEEP))
456 otp = tp;
457 ostate = tp->t_state;
460 if (TCPS_HAVEESTABLISHED(tp->t_state) == 0) {
462 tp = tcp_drop(tp, ETIMEDOUT);
467 tp->t_state <= TCPS_CLOSING) {
475 ((now - tp->t_rcvtime) >= keepidle + maxidle)) {
477 tp = tcp_drop(tp, ETIMEDOUT);
486 * Using sequence number tp->snd_una-1
493 tcp_respond(tp, mtod(tp->t_template, caddr_t),
494 NULL, tp->rcv_nxt, tp->snd_una - 1, 0, 0, now);
495 TCP_TIMER_ARM(tp, TCPT_KEEP, atomic_load_int(&tcp_keepintvl));
497 TCP_TIMER_ARM(tp, TCPT_KEEP, atomic_load_int(&tcp_keepidle));
499 tcp_trace(TA_TIMER, ostate, tp, otp, NULL, TCPT_KEEP, 0);
509 struct tcpcb *otp = NULL, *tp;
514 if (tcp_timer_enter(inp, &so, &tp, TCPT_2MSL))
518 otp = tp;
519 ostate = tp->t_state;
521 tcp_timer_freesack(tp);
525 if (tp->t_state != TCPS_TIME_WAIT &&
526 ((maxidle == 0) || ((now - tp->t_rcvtime) <= maxidle)))
527 TCP_TIMER_ARM(tp, TCPT_2MSL, atomic_load_int(&tcp_keepintvl));
529 tp = tcp_close(tp);
531 tcp_trace(TA_TIMER, ostate, tp, otp, NULL, TCPT_2MSL, 0);
539 struct tcpcb *tp = arg;
549 pool_put(&tcpcb_pool, tp);