linux/include/net
Yuchung Cheng 2349262397 tcp: remove cwnd moderation after recovery
For non-SACK connections, cwnd is lowered to inflight plus 3 packets
when the recovery ends. This is an optional feature in the NewReno
RFC 2582 to reduce the potential burst when cwnd is "re-opened"
after recovery and inflight is low.

This feature is questionably effective because of PRR: when
the recovery ends (i.e., snd_una == high_seq) NewReno holds the
CA_Recovery state for another round trip to prevent false fast
retransmits. But if the inflight is low, PRR will overwrite the
moderated cwnd in tcp_cwnd_reduction() later regardlessly. So if a
receiver responds bogus ACKs (i.e., acking future data) to speed up
transfer after recovery, it can only induce a burst up to a window
worth of data packets by acking up to SND.NXT. A restart from (short)
idle or receiving streched ACKs can both cause such bursts as well.

On the other hand, if the recovery ends because the sender
detects the losses were spurious (e.g., reordering). This feature
unconditionally lowers a reverted cwnd even though nothing
was lost.

By principle loss recovery module should not update cwnd. Further
pacing is much more effective to reduce burst. Hence this patch
removes the cwnd moderation feature.

v2 changes: revised commit message on bogus ACKs and burst, and
            missing signature

Signed-off-by: Matt Mathis <mattmathis@google.com>
Signed-off-by: Neal Cardwell <ncardwell@google.com>
Signed-off-by: Soheil Hassas Yeganeh <soheil@google.com>
Signed-off-by: Yuchung Cheng <ycheng@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2016-04-02 20:11:43 -04:00
..
9p
bluetooth Bluetooth: Add support for limited privacy mode 2016-03-10 19:51:30 +01:00
caif
irda
iucv
netfilter netfilter: nft_masq: support port range 2016-03-02 20:05:27 +01:00
netns ipv6: per netns FIB garbage collection 2016-03-08 15:16:51 -05:00
nfc nfc: netlink: HCI event connectivity implementation 2015-12-29 19:06:20 +01:00
phonet sock: struct proto hash function may error 2016-02-11 03:54:14 -05:00
sctp sctp: keep fragmentation point aligned to word size 2016-03-20 16:31:12 -04:00
tc_act net/act_skbedit: Utility functions for mark action 2016-03-10 16:24:02 -05:00
6lowpan.h 6lowpan: iphc: add support for stateful compression 2016-02-23 20:29:40 +01:00
Space.h
act_api.h net/sched: Macro instead of CONFIG_NET_CLS_ACT ifdef 2016-03-10 16:24:02 -05:00
addrconf.h inet: refactor inet[6]_lookup functions to take skb 2016-02-11 03:54:14 -05:00
af_ieee802154.h
af_rxrpc.h
af_unix.h unix: correctly track in-flight fds in sending process user_struct 2016-02-08 10:30:42 -05:00
af_vsock.h
ah.h
arp.h
atmclip.h
ax25.h
ax88796.h
bond_3ad.h bonding: 3ad: apply ad_actor settings changes immediately 2016-02-09 04:45:49 -05:00
bond_alb.h
bond_options.h
bonding.h bonding: fix bond_get_stats() 2016-03-18 23:14:15 -04:00
busy_poll.h
cfg80211-wext.h
cfg80211.h cfg80211: basic support for PBSS network type 2016-02-24 09:04:34 +01:00
cfg802154.h
checksum.h csum: Update csum_block_add to use rotate instead of byteswap 2016-03-13 15:01:00 -04:00
cipso_ipv4.h
cls_cgroup.h
codel.h net_sched: update hierarchical backlog too 2016-02-29 17:02:33 -05:00
compat.h
datalink.h
dcbevent.h
dcbnl.h
devlink.h Introduce devlink infrastructure 2016-03-01 16:07:29 -05:00
dn.h
dn_dev.h
dn_fib.h
dn_neigh.h
dn_nsp.h
dn_route.h
dsa.h net: dsa: make port_bridge_leave return void 2016-03-14 16:05:31 -04:00
dsfield.h
dst.h bpf, dst: add and use dst_tclassid helper 2016-03-18 19:38:46 -04:00
dst_cache.h net: add dst_cache support 2016-02-16 20:21:48 -05:00
dst_metadata.h ip_tunnel: add support for setting flow label via collect metadata 2016-03-11 15:14:26 -05:00
dst_ops.h
esp.h
ethoc.h
fib_rules.h
firewire.h
flow.h ipv6, trace: fix tos reporting on fib6_table_lookup 2016-03-20 13:44:34 -04:00
flow_dissector.h net/flow_dissector: Make dissector_uses_key() and skb_flow_dissector_target() public 2016-03-10 16:24:02 -05:00
flowcache.h
fou.h
garp.h
gen_stats.h
genetlink.h Revert "genl: Add genlmsg_new_unicast() for unicast message allocation" 2016-02-18 11:42:19 -05:00
geneve.h
gre.h
gro_cells.h
gue.h
hwbm.h net: add a hardware buffer management helper API 2016-03-14 12:19:46 -04:00
icmp.h
ieee80211_radiotap.h
ieee802154_netdev.h mac802154: constify ieee802154_llsec_ops structure 2016-01-04 20:40:41 +01:00
if_inet6.h
ila.h
inet6_connection_sock.h ipv6: remove unused in6_addr struct 2016-03-22 15:45:44 -04:00
inet6_hashtables.h inet: refactor inet[6]_lookup functions to take skb 2016-02-11 03:54:14 -05:00
inet_common.h
inet_connection_sock.h tcp/dccp: fix another race at listener dismantle 2016-02-18 11:35:51 -05:00
inet_ecn.h ipv6: update skb->csum when CE mark is propagated 2016-01-15 15:07:23 -05:00
inet_frag.h ipv4: namespacify ip fragment max dist sysctl knob 2016-02-16 20:42:54 -05:00
inet_hashtables.h soreuseport: fast reuseport TCP socket selection 2016-02-11 03:54:15 -05:00
inet_sock.h net: Allow accepted sockets to be bound to l3mdev domain 2015-12-18 14:43:38 -05:00
inet_timewait_sock.h
inetpeer.h
ip.h net: ipv4: Convert IP network timestamps to be y2038 safe 2016-03-01 17:18:44 -05:00
ip6_checksum.h ipv6: Pass proto to csum_ipv6_magic as __u8 instead of unsigned short 2016-03-13 23:55:13 -04:00
ip6_fib.h
ip6_route.h ipv6: enforce flowi6_oif usage in ip6_dst_lookup_tail() 2016-01-29 20:31:26 -08:00
ip6_tunnel.h net: replace dst_cache ip6_tunnel implementation with the generic one 2016-02-16 20:21:48 -05:00
ip_fib.h route: check and remove route cache when we get route 2016-02-18 11:31:36 -05:00
ip_tunnels.h tunnels: Remove encapsulation offloads on decap. 2016-03-20 16:33:40 -04:00
ip_vs.h ipvs: drop first packet to redirect conntrack 2016-03-07 11:53:30 +09:00
ipcomp.h
ipconfig.h
ipv6.h vxlan: fix populating tclass in vxlan6_get_route 2016-03-20 13:44:34 -04:00
ipx.h
iw_handler.h cfg80211/wext: fix message ordering 2016-01-29 17:13:43 +01:00
kcm.h kcm: mark helper functions inline 2016-03-10 14:42:03 -05:00
l3mdev.h net: l3mdev: address selection should only consider devices in L3 domain 2016-02-26 14:22:26 -05:00
lapb.h
lib80211.h
llc.h
llc_c_ac.h
llc_c_ev.h
llc_c_st.h
llc_conn.h
llc_if.h
llc_pdu.h
llc_s_ac.h
llc_s_ev.h
llc_s_st.h
llc_sap.h
lwtunnel.h lwtunnel: autoload of lwt modules 2016-02-21 22:00:28 -05:00
mac80211.h mac80211: move MU_MIMO_OWNER flag to ieee80211_vif 2016-02-24 09:04:40 +01:00
mac802154.h mac802154: use put and get unaligned functions 2016-03-10 19:51:28 +01:00
mip6.h
mld.h
mpls.h
mpls_iptunnel.h
mrp.h
ndisc.h
neighbour.h
net_namespace.h
net_ratelimit.h
netevent.h
netlabel.h
netlink.h
netprio_cgroup.h
netrom.h
nexthop.h
nl802154.h
p8022.h
ping.h net: ping: make ping_v6_sendmsg static 2016-03-23 22:09:58 -04:00
pkt_cls.h net/flower: Fix pointer cast 2016-03-11 12:04:37 -05:00
pkt_sched.h
protocol.h udp: restrict offloads to one namespace 2016-01-10 17:28:24 -05:00
psnap.h
raw.h sock: struct proto hash function may error 2016-02-11 03:54:14 -05:00
rawv6.h
red.h
regulatory.h
request_sock.h net: add inet_sk_transparent() helper 2015-12-22 17:03:05 -05:00
rose.h
route.h ipv4: Namespaceify ip_default_ttl sysctl knob 2016-02-16 20:42:54 -05:00
rtnetlink.h
sch_generic.h net: sched: use pfifo_fast for non real queues 2016-03-03 17:38:46 -05:00
scm.h unix: correctly track in-flight fds in sending process user_struct 2016-02-08 10:30:42 -05:00
secure_seq.h
slhc_vj.h
snmp.h
sock.h sock: struct proto hash function may error 2016-02-11 03:54:14 -05:00
sock_reuseport.h soreuseport: fix NULL ptr dereference SO_REUSEPORT after bind 2016-01-19 14:44:23 -05:00
stp.h
switchdev.h switchdev: Adding MDB entry offload 2016-01-10 16:50:20 -05:00
tcp.h tcp: remove cwnd moderation after recovery 2016-04-02 20:11:43 -04:00
tcp_states.h
timewait_sock.h
transp_v6.h
tso.h
udp.h sock: struct proto hash function may error 2016-02-11 03:54:14 -05:00
udp_tunnel.h ip_tunnel: add support for setting flow label via collect metadata 2016-03-11 15:14:26 -05:00
udplite.h
vsock_addr.h
vxlan.h vxlan: fix sparse warnings 2016-03-21 13:30:02 -04:00
wext.h
wimax.h
x25.h
x25device.h
xfrm.h