[tcp] Always set PUSH flag on TCP transmissions
authorMichael Brown <mcb30@etherboot.org>
Wed, 21 Jan 2009 04:22:34 +0000 (04:22 +0000)
committerMichael Brown <mcb30@etherboot.org>
Wed, 21 Jan 2009 04:22:34 +0000 (04:22 +0000)
Apparently this can cause a major speedup on some iSCSI targets, which
will otherwise wait for a timer to expire before responding.  It
doesn't seem to hurt other simple TCP test cases (e.g. HTTP
downloads).

Problem and solution identified by Shiva Shankar <802.11e@gmail.com>

src/net/tcp.c

index 0f91bcf..094317b 100644 (file)
@@ -478,7 +478,7 @@ static int tcp_xmit ( struct tcp_connection *tcp, int force_send ) {
        tcphdr->seq = htonl ( tcp->snd_seq );
        tcphdr->ack = htonl ( tcp->rcv_ack );
        tcphdr->hlen = ( ( payload - iobuf->data ) << 2 );
-       tcphdr->flags = flags;
+       tcphdr->flags = ( flags | TCP_PSH );
        tcphdr->win = htons ( tcp->rcv_win );
        tcphdr->csum = tcpip_chksum ( iobuf->data, iob_len ( iobuf ) );