|
Lines 177-186
Link Here
|
| 177 |
if ((th)->th_seq == (tp)->rcv_nxt && \ |
177 |
if ((th)->th_seq == (tp)->rcv_nxt && \ |
| 178 |
LIST_EMPTY(&(tp)->t_segq) && \ |
178 |
LIST_EMPTY(&(tp)->t_segq) && \ |
| 179 |
(tp)->t_state == TCPS_ESTABLISHED) { \ |
179 |
(tp)->t_state == TCPS_ESTABLISHED) { \ |
| 180 |
if (tcp_delack_enabled) \ |
180 |
if (tcp_delack_enabled) { \ |
| 181 |
callout_reset(tp->tt_delack, tcp_delacktime, \ |
181 |
if (callout_pending(tp->tt_delack)) { \ |
| 182 |
tcp_timer_delack, tp); \ |
182 |
callout_stop(tp->tt_delack); \ |
| 183 |
else \ |
183 |
tp->t_flags |= TF_ACKNOW; \ |
|
|
184 |
} else \ |
| 185 |
callout_reset(tp->tt_delack, tcp_delacktime, \ |
| 186 |
tcp_timer_delack, tp); \ |
| 187 |
} else \ |
| 184 |
tp->t_flags |= TF_ACKNOW; \ |
188 |
tp->t_flags |= TF_ACKNOW; \ |
| 185 |
(tp)->rcv_nxt += *(tlenp); \ |
189 |
(tp)->rcv_nxt += *(tlenp); \ |
| 186 |
flags = (th)->th_flags & TH_FIN; \ |
190 |
flags = (th)->th_flags & TH_FIN; \ |
|
Lines 962-969
Link Here
|
| 962 |
sbappend(&so->so_rcv, m); |
966 |
sbappend(&so->so_rcv, m); |
| 963 |
sorwakeup(so); |
967 |
sorwakeup(so); |
| 964 |
if (tcp_delack_enabled) { |
968 |
if (tcp_delack_enabled) { |
| 965 |
callout_reset(tp->tt_delack, tcp_delacktime, |
969 |
if (callout_pending(tp->tt_delack)) { |
| 966 |
tcp_timer_delack, tp); |
970 |
callout_stop(tp->tt_delack); |
|
|
971 |
tp->t_flags |= TF_ACKNOW; |
| 972 |
} else |
| 973 |
callout_reset(tp->tt_delack, tcp_delacktime, |
| 974 |
tcp_timer_delack, tp); |
| 967 |
} else { |
975 |
} else { |
| 968 |
tp->t_flags |= TF_ACKNOW; |
976 |
tp->t_flags |= TF_ACKNOW; |
| 969 |
tcp_output(tp); |
977 |
tcp_output(tp); |
|
Lines 1289-1298
Link Here
|
| 1289 |
* If there's data, delay ACK; if there's also a FIN |
1297 |
* If there's data, delay ACK; if there's also a FIN |
| 1290 |
* ACKNOW will be turned on later. |
1298 |
* ACKNOW will be turned on later. |
| 1291 |
*/ |
1299 |
*/ |
| 1292 |
if (tcp_delack_enabled && tlen != 0) |
1300 |
if (tcp_delack_enabled && tlen != 0) { |
| 1293 |
callout_reset(tp->tt_delack, tcp_delacktime, |
1301 |
if (callout_pending(tp->tt_delack)) { |
| 1294 |
tcp_timer_delack, tp); |
1302 |
callout_stop(tp->tt_delack); |
| 1295 |
else |
1303 |
tp->t_flags |= TF_ACKNOW; |
|
|
1304 |
} else |
| 1305 |
callout_reset(tp->tt_delack, tcp_delacktime, |
| 1306 |
tcp_timer_delack, tp); |
| 1307 |
} else |
| 1296 |
tp->t_flags |= TF_ACKNOW; |
1308 |
tp->t_flags |= TF_ACKNOW; |
| 1297 |
/* |
1309 |
/* |
| 1298 |
* Received <SYN,ACK> in SYN_SENT[*] state. |
1310 |
* Received <SYN,ACK> in SYN_SENT[*] state. |
|
Lines 2117-2126
Link Here
|
| 2117 |
* Otherwise, since we received a FIN then no |
2129 |
* Otherwise, since we received a FIN then no |
| 2118 |
* more input can be expected, send ACK now. |
2130 |
* more input can be expected, send ACK now. |
| 2119 |
*/ |
2131 |
*/ |
| 2120 |
if (tcp_delack_enabled && (tp->t_flags & TF_NEEDSYN)) |
2132 |
if (tcp_delack_enabled && (tp->t_flags & TF_NEEDSYN)) { |
| 2121 |
callout_reset(tp->tt_delack, tcp_delacktime, |
2133 |
if (callout_pending(tp->tt_delack)) { |
| 2122 |
tcp_timer_delack, tp); |
2134 |
callout_stop(tp->tt_delack); |
| 2123 |
else |
2135 |
tp->t_flags |= TF_ACKNOW; |
|
|
2136 |
} else |
| 2137 |
callout_reset(tp->tt_delack, tcp_delacktime, |
| 2138 |
tcp_timer_delack, tp); |
| 2139 |
} else |
| 2124 |
tp->t_flags |= TF_ACKNOW; |
2140 |
tp->t_flags |= TF_ACKNOW; |
| 2125 |
tp->rcv_nxt++; |
2141 |
tp->rcv_nxt++; |
| 2126 |
} |
2142 |
} |