*/
#define TCP_MSL ( 2 * 60 * TICKS_PER_SEC )
+/**
+ * TCP maximum header length
+ *
+ */
+#define TCP_MAX_HEADER_LEN \
+ ( MAX_LL_NET_HEADER_LEN + \
+ sizeof ( struct tcp_header ) + \
+ sizeof ( struct tcp_mss_option ) + \
+ sizeof ( struct tcp_timestamp_padded_option ) )
+
/**
* Compare TCP sequence numbers
*
start_timer ( &tcp->timer );
/* Allocate I/O buffer */
- iobuf = alloc_iob ( len + MAX_LL_NET_HEADER_LEN );
+ iobuf = alloc_iob ( len + TCP_MAX_HEADER_LEN );
if ( ! iobuf ) {
DBGC ( tcp, "TCP %p could not allocate iobuf for %08x..%08x "
"%08x\n", tcp, tcp->snd_seq, ( tcp->snd_seq + seq_len ),
tcp->rcv_ack );
return -ENOMEM;
}
- iob_reserve ( iobuf, MAX_LL_NET_HEADER_LEN );
+ iob_reserve ( iobuf, TCP_MAX_HEADER_LEN );
/* Fill data payload from transmit queue */
tcp_process_tx_queue ( tcp, len, iobuf, 0 );
int rc;
/* Allocate space for dataless TX buffer */
- iobuf = alloc_iob ( MAX_LL_NET_HEADER_LEN );
+ iobuf = alloc_iob ( TCP_MAX_HEADER_LEN );
if ( ! iobuf ) {
DBGC ( tcp, "TCP %p could not allocate iobuf for RST "
"%08x..%08x %08x\n", tcp, ntohl ( in_tcphdr->ack ),
ntohl ( in_tcphdr->ack ), ntohl ( in_tcphdr->seq ) );
return -ENOMEM;
}
- iob_reserve ( iobuf, MAX_LL_NET_HEADER_LEN );
+ iob_reserve ( iobuf, TCP_MAX_HEADER_LEN );
/* Construct RST response */
tcphdr = iob_push ( iobuf, sizeof ( *tcphdr ) );