Hello all, I am interested in the implementation of the TCP on the linux kernel. I am running kernel 2.6.28-11, but I think the part of the code I am looking in had not big changes for some time. I am interested in discover situations that trigger an ACK. More specifically when data is download from a server and pure acks (no user data) are upload in reply. I am analyzing a number of TCP connections of this type and is important for me to be sure what situations trigger an ACK. I see that upon the receipt of an data, the client decides if an ACK should be sent using tcp_input.c/__tcp_ack_snd_ check . If am not mistaken, a delayed ack is triggered unless: - data received is out of order - tcp is in quick mode - more than MSS of data is received This last option (more than MSS of data is received), which probably refers to the part of RFC that states that every second data segment should be ACKnowlodge. I have 3 questions: 1) What the part of the code "__tcp_select_window(sk) >= tp->rcv_wnd" exactly does? This is part of the first condition of __tcp_ack_snd_check 2) What can cause an ACK being sent in reply to more than 2 data packets? On my traces I see one ACK being sent in reply to 3,4,5,6 packets in interval much smaller (<1ms) than TCP_ATO_MIN. 3) Is there another situations that one ACK is sent before the delayed ACK timer expires? Thanks, Rafael Barbosa -- To unsubscribe from this list: send the line "unsubscribe linux-net" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html