forked from nuttx/nuttx-update
tcp_send_unbuffered.c: unifdef -UCONFIG_NET_TCP_SPLIT
This commit is contained in:
parent
022c06766a
commit
1550a525e9
1 changed files with 0 additions and 93 deletions
|
@ -67,9 +67,6 @@
|
|||
# define NEED_IPDOMAIN_SUPPORT 1
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_NET_TCP_SPLIT) && !defined(CONFIG_NET_TCP_SPLIT_SIZE)
|
||||
# define CONFIG_NET_TCP_SPLIT_SIZE 40
|
||||
#endif
|
||||
|
||||
#define TCPIPv4BUF ((struct tcp_hdr_s *)&dev->d_buf[NET_LL_HDRLEN(dev) + IPv4_HDRLEN])
|
||||
#define TCPIPv6BUF ((struct tcp_hdr_s *)&dev->d_buf[NET_LL_HDRLEN(dev) + IPv6_HDRLEN])
|
||||
|
@ -92,9 +89,6 @@ struct send_s
|
|||
ssize_t snd_sent; /* The number of bytes sent */
|
||||
uint32_t snd_isn; /* Initial sequence number */
|
||||
uint32_t snd_acked; /* The number of bytes acked */
|
||||
#if defined(CONFIG_NET_TCP_SPLIT)
|
||||
bool snd_odd; /* True: Odd packet in pair transaction */
|
||||
#endif
|
||||
};
|
||||
|
||||
/****************************************************************************
|
||||
|
@ -249,13 +243,6 @@ static uint16_t tcpsend_eventhandler(FAR struct net_driver_s *dev,
|
|||
|
||||
pstate->snd_sent = pstate->snd_acked;
|
||||
|
||||
#if defined(CONFIG_NET_TCP_SPLIT)
|
||||
/* Reset the even/odd indicator to even since we need to
|
||||
* retransmit.
|
||||
*/
|
||||
|
||||
pstate->snd_odd = false;
|
||||
#endif
|
||||
|
||||
/* Fall through to re-send data from the last that was ACKed */
|
||||
}
|
||||
|
@ -314,86 +301,6 @@ static uint16_t tcpsend_eventhandler(FAR struct net_driver_s *dev,
|
|||
|
||||
uint32_t sndlen = pstate->snd_buflen - pstate->snd_sent;
|
||||
|
||||
#if defined(CONFIG_NET_TCP_SPLIT)
|
||||
|
||||
/* RFC 1122 states that a host may delay ACKing for up to 500ms but
|
||||
* must respond to every second segment). This logic here will trick
|
||||
* the RFC 1122 recipient into responding sooner. This logic will be
|
||||
* activated if:
|
||||
*
|
||||
* 1. An even number of packets has been send (where zero is an even
|
||||
* number),
|
||||
* 2. There is more data be sent (more than or equal to
|
||||
* CONFIG_NET_TCP_SPLIT_SIZE), but
|
||||
* 3. Not enough data for two packets.
|
||||
*
|
||||
* Then we will split the remaining, single packet into two partial
|
||||
* packets. This will stimulate the RFC 1122 peer to ACK sooner.
|
||||
*
|
||||
* Don't try to split very small packets (less than
|
||||
* CONFIG_NET_TCP_SPLIT_SIZE). Only the first even packet and the
|
||||
* last odd packets could have sndlen less than
|
||||
* CONFIG_NET_TCP_SPLIT_SIZE. The value of sndlen on the last even
|
||||
* packet is guaranteed to be at least MSS / 2 by the logic below.
|
||||
*/
|
||||
|
||||
if (sndlen >= CONFIG_NET_TCP_SPLIT_SIZE)
|
||||
{
|
||||
/* sndlen is the number of bytes remaining to be sent.
|
||||
* conn->mss will provide the number of bytes that can sent
|
||||
* in one packet. The difference, then, is the number of bytes
|
||||
* that would be sent in the next packet after this one.
|
||||
*/
|
||||
|
||||
int32_t next_sndlen = sndlen - conn->mss;
|
||||
|
||||
/* Is this the even packet in the packet pair transaction? */
|
||||
|
||||
if (!pstate->snd_odd)
|
||||
{
|
||||
/* next_sndlen <= 0 means that the entire remaining data
|
||||
* could fit into this single packet. This is condition
|
||||
* in which we must do the split.
|
||||
*/
|
||||
|
||||
if (next_sndlen <= 0)
|
||||
{
|
||||
/* Split so that there will be an odd packet. Here
|
||||
* we know that 0 < sndlen <= MSS
|
||||
*/
|
||||
|
||||
sndlen = (sndlen / 2) + 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* No... this is the odd packet in the packet pair transaction */
|
||||
|
||||
else
|
||||
{
|
||||
/* Will there be another (even) packet after this one?
|
||||
* (next_sndlen > 0) Will the split condition occur on that
|
||||
* next, even packet? ((next_sndlen - conn->mss) < 0) If
|
||||
* so, then perform the split now to avoid the case where the
|
||||
* byte count is less than CONFIG_NET_TCP_SPLIT_SIZE on the
|
||||
* next pair.
|
||||
*/
|
||||
|
||||
if (next_sndlen > 0 && (next_sndlen - conn->mss) < 0)
|
||||
{
|
||||
/* Here, we know that sndlen must be MSS < sndlen <= 2*MSS
|
||||
* and so (sndlen / 2) is <= MSS.
|
||||
*/
|
||||
|
||||
sndlen /= 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Toggle the even/odd indicator */
|
||||
|
||||
pstate->snd_odd ^= true;
|
||||
|
||||
#endif /* CONFIG_NET_TCP_SPLIT */
|
||||
|
||||
if (sndlen > conn->mss)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue