zephyr/subsys/net/ip
Florian Vaussard 5212659820 net: tcp: fix spurious TCP retries
Spurious TCP retries were observed using Wireshark while continuously
sending TCP packets at an interval faster than the initial RTO.

If the send list is empty and CONFIG_NET_TCP_TIME_WAIT_DELAY is used,
the retry timer will not be correctly stopped when receiving a valid
ACK. As a consequence, the timer might be running when a new packet is
queued, but the logics in net_tcp_queue_data() will not restart the
timer as it is already running. This will make the retry timer to expire
prematurely, potentially while sending packets.

The nested condition is merged into a single condition, allowing the
final else clause to be reached when a valid ACK is received.

Signed-off-by: Florian Vaussard <florian.vaussard@gmail.com>
2018-08-20 13:53:49 +03:00
..
6lo_private.h net: Convert raw timeout values to use K_MSEC() macro 2018-05-28 17:20:11 -04:00
6lo.c net: ipv6: Refactor IPv6 header length handling 2018-08-13 13:53:14 +03:00
6lo.h
CMakeLists.txt net: ipv6: Separate IPv6 fragment functionality 2018-08-17 17:01:54 +03:00
connection.c net: ipv6: Refactor IPv6 header length handling 2018-08-13 13:53:14 +03:00
connection.h
dhcpv4.c net: ip: Refactor usage of net_sprint_ip*() 2018-08-17 12:36:50 +03:00
dhcpv4.h net/dhcpv4: Rename functions to follow domain related naming rules 2018-07-27 13:00:01 +03:00
icmpv4.c net: ip: Refactor usage of net_sprint_ip*() 2018-08-17 12:36:50 +03:00
icmpv4.h net: icmpv4: Simplify the flow at net_icmpv4_get/set_xxx() calls 2018-08-13 13:52:57 +03:00
icmpv6.c net: ip: Refactor usage of net_sprint_ip*() 2018-08-17 12:36:50 +03:00
icmpv6.h net: icmpv6: Simplify the flow at net_icmpv6_get/set_xxx() calls 2018-08-10 12:53:59 +03:00
ipv4_autoconf_internal.h net: IPv4 link local support 2018-07-31 16:34:28 +03:00
ipv4_autoconf.c net: ipv4: Corrupted ARP pkt was sent instead of real IPv4 pkt 2018-08-09 11:56:44 +03:00
ipv4.c net: ip: Refactor usage of net_sprint_ip*() 2018-08-17 12:36:50 +03:00
ipv4.h net: core: Always have a timeout when allocating a net_buf 2018-08-14 12:17:00 +03:00
ipv6_fragment.c net: ipv6: Separate IPv6 fragment functionality 2018-08-17 17:01:54 +03:00
ipv6_mld.c net: ipv6: Separate IPv6 MLD functionality 2018-08-17 17:01:54 +03:00
ipv6_nbr.c net: ipv6: Separate IPv6 Neighbor functionality 2018-08-17 17:01:54 +03:00
ipv6.c net: ipv6: Separate IPv6 fragment functionality 2018-08-17 17:01:54 +03:00
ipv6.h net: ipv6: Separate IPv6 fragment functionality 2018-08-17 17:01:54 +03:00
Kconfig Kconfig: Use the first default with a satisfied condition 2018-08-10 12:38:28 -07:00
Kconfig.debug subsys: kconfig: Remove 'default n' properties and clean up a bit 2018-07-12 23:13:22 -04:00
Kconfig.ipv4 Kconfig: Use the first default with a satisfied condition 2018-08-10 12:38:28 -07:00
Kconfig.ipv6 Kconfig: Use the first default with a satisfied condition 2018-08-10 12:38:28 -07:00
Kconfig.mgmt subsys: kconfig: Remove 'default n' properties and clean up a bit 2018-07-12 23:13:22 -04:00
Kconfig.rpl net: rpl: Kconfig: Fix 'Network type' choice default 2018-08-14 13:43:11 -07:00
Kconfig.stack Kconfig: Use the first default with a satisfied condition 2018-08-10 12:38:28 -07:00
Kconfig.stats net: eth: Vendor specific statistics 2018-08-02 12:42:27 +03:00
nbr.c net: nbr: Use the real size of the neighbor pool 2017-08-14 11:06:34 +03:00
nbr.h net: nbr: Use the real size of the neighbor pool 2017-08-14 11:06:34 +03:00
net_context.c net: core: Always have a timeout when allocating a net_buf 2018-08-14 12:17:00 +03:00
net_core.c net: l2: Add support for Link Layer Discovery Protocol (LLDP) 2018-08-08 09:53:24 +03:00
net_if.c net: if: Remove IPv6 auto addresses if the prefix is removed 2018-08-17 17:02:21 +03:00
net_mgmt.c net/mgmt: Move NET_EVENT_INFO_MAX_SIZE into net core's private header 2018-04-12 09:56:07 -04:00
net_pkt.c net: pkt: Added new function net_pkt_append_memset() to prefill packet 2018-08-16 10:35:01 +03:00
net_private.h net: ip: Redirect net_sprint_ipv*_addr() invocations 2018-08-17 12:36:50 +03:00
net_shell.c net: ipv6: Separate IPv6 Neighbor functionality 2018-08-17 17:01:54 +03:00
net_shell.h net: shell: Remove net_shell_init() as it is not needed 2017-08-01 14:45:06 +03:00
net_stats.c net: stats: Simplify periodic statistics printing 2018-07-24 09:20:46 -04:00
net_stats.h net: stats: handle_na_input: unref packet after stats are updated 2018-06-11 17:33:17 -04:00
net_tc_mapping.h net: Fix credit-based shaper typos 2018-08-08 13:01:37 +03:00
net_tc.c net: tc: Add other priority to traffic class mappings 2018-08-06 10:23:57 +03:00
promiscuous.c net: Add promiscuous mode support 2018-07-24 15:12:37 +03:00
route.c net: ip: Refactor usage of net_sprint_ip*() 2018-08-17 12:36:50 +03:00
route.h
rpl-mrhof.c net: Fix indentation issues 2017-08-09 16:01:28 +03:00
rpl-of0.c net: ip: Refactor usage of net_sprint_ip*() 2018-08-17 12:36:50 +03:00
rpl.c net: ip: Refactor usage of net_sprint_ip*() 2018-08-17 12:36:50 +03:00
rpl.h net: Avoid holes in structs 2018-07-25 15:20:34 +03:00
tcp_internal.h net: Avoid holes in structs 2018-07-25 15:20:34 +03:00
tcp.c net: tcp: fix spurious TCP retries 2018-08-20 13:53:49 +03:00
trickle.c net: trickle: Do clock wrap check properly 2017-08-07 21:32:03 -04:00
udp_internal.h net: udp: Remove NET_UDP_HDR() macro and direct access to net_buf 2017-07-07 15:24:00 +03:00
udp.c net: core: Always have a timeout when allocating a net_buf 2018-08-14 12:17:00 +03:00
utils.c net: ip: Add net_sprint_addr() 2018-08-17 12:36:50 +03:00