diff options
| author | David S. Miller <davem@davemloft.net> | 2017-07-31 14:37:50 -0700 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2017-07-31 14:37:50 -0700 |
| commit | 834e0ecf8109ee92184b9616bdc3aca6fe934f38 (patch) | |
| tree | e140be00bcab8b8e0cdd48be63a5bd14e92e6eec /include/linux | |
| parent | 764646b08d09d29adced740c26447ecdaabc9088 (diff) | |
| parent | 3282e65558b3651e230ee985c174c35cb2fedaf1 (diff) | |
Merge branch 'tcp-remove-prequeue-and-header-prediction'
Florian Westphal says:
====================
tcp: remove prequeue and header prediction
During a hallway discussion with Eric Dumazet at Netdev 1.2 in
Tokyo some maybe-not-so-useful-anymore TCP stack features came up,
among these header prediction and prequeueing.
In brief, TCP prequeue assumes a single-process-blocking-read design,
which is not that common anymore. The most frequently used high-performance
networking program that is an excellent fit for these features is netperf.
The idea behind prequeueing is to move part of tcp processing, including
retransmit queue cleaning, to process context.
With (e)poll designs, prequeue is always skipped, so for such programs
this is dead-code removal.
Header prediction is also less useful nowadays.
For packet trains, GRO will do packet aggregation so we do not get the
per-packet benefit that this had before GRO anymore.
Because of SACK, header prediction also will be ineffective once
a connection suffers even light packet losses.
code removal aside, after this change processing always occurs in BH
context, this allows to experiment e.g. with doing bulk freeing of
skb heads when incoming ACKs clean packets from the retransmit queue.
There are no changes since the RFC, except in last patch (i missed
another no-longer-used mib counter). I also edited a few commit messages.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/tcp.h | 15 |
1 files changed, 0 insertions, 15 deletions
diff --git a/include/linux/tcp.h b/include/linux/tcp.h index 542ca1ae02c4..d7389ea36e10 100644 --- a/include/linux/tcp.h +++ b/include/linux/tcp.h @@ -148,12 +148,6 @@ struct tcp_sock { u16 gso_segs; /* Max number of segs per GSO packet */ /* - * Header prediction flags - * 0x5?10 << 16 + snd_wnd in net byte order - */ - __be32 pred_flags; - -/* * RFC793 variables by their proper names. This means you can * read the code and the spec side by side (and laugh ...) * See RFC793 and RFC1122. The RFC writes these in capitals. @@ -192,15 +186,6 @@ struct tcp_sock { struct list_head tsq_node; /* anchor in tsq_tasklet.head list */ - /* Data for direct copy to user */ - struct { - struct sk_buff_head prequeue; - struct task_struct *task; - struct msghdr *msg; - int memory; - int len; - } ucopy; - u32 snd_wl1; /* Sequence for window update */ u32 snd_wnd; /* The window we expect to receive */ u32 max_window; /* Maximal window ever seen from peer */ |
