On Wed, 29 Nov 2017, Christoph Paasch wrote:
On 29/11/17 - 12:56:17, Christoph Paasch wrote:
> Oh, and one more thing.
>
> tcp_extra_options_* is quite long, and function-names are really long,
> bringing us often close to the 80-char "limit".
>
> What do you think of abbreviating it to "tcp_eo" or "teo" or
something like
> that?
tcp_xopt_* ? :)
I don't have a strong preference, but tcp_extopt_* maps a little better to
"extra" or "extended" options (in my mind, anyway).
Mat
>
>
> Christoph
>
> On 28/11/17 - 17:15:54, Mat Martineau wrote:
>>
>> Christoph -
>>
>> On Mon, 27 Nov 2017, Christoph Paasch wrote:
>>
>>> Finally, the second version of this patch-set.
>>>
>>> At netdev I talked about this with Eric, and he is looking forward to see
>>> TCP-MD5 get out of the hot TCP data-path. He was planning to avoid TCP-MD5
>>> with static jump-labels and also move TCP-MD5 in a separate file.
>>
>> Good to hear that he's interested.
>>
>>>
>>>
>>> There are quite a few changes in this new set. I extended much more the
>>> extra-option framework. Making the list on a per-socket basis in the
>>> request-socket, tcp-socket and time-wait-socket. This eliminates the need
>>> for RCU-locking. See patch "tcp_extra_options: Make extra-option list
per-socket"
>>>
>>> I also added callbacks for response_write/prepare that can be called from
the
>>> tcp_v4_send_ack/rst, and v6 counterparts. This is needed because in these
>>> code-paths the skb and sk have entirely different semantics.
>>>
>>> Finally, in the input-path I added a check-callback and a post-process
callback.
>>>
>>> This is needed because after parsing the option in tcp_parse_options() we
also
>>> need to act on them. The actions can be either before any other checks
(e.g.,
>>> as is the case for TCP_MD5, because we want to drop segments) or after the
>>> validity checks (e.g., as is needed for SMC).
>>>
>>> And I also opted SMC into the new framework.
>>>
>>> And, I made the TCP-MD5 input code-path use the framework.
>>
>> All of these seem like the right way to go. Nice to have two users of the
>> framework already.
>>
>>>
>>>
>>> There are still a few things that I need to double-check, notably
>>> sk_nocaps_add() in TCP_MD5.
>>>
>>> And, I need to test ;-)
>>
>> Yeah, that testing :)
>>
>>>
>>> But I would like to have some early feedback already - especially on the
patches
>>> prefixed with "tcp_extra_options". If they look good, I can merge
them into Mat's
>>> patch, which will simplify my patch-juggling.
>>
>> I have a few comments, but no major structural changes. I'll reply to the
>> individual patches where needed.
>>
>>> I want to get this patch-set out to netdev as an RFC as quickly as possible,
so
>>> that we can make some progress.
>>
>> Agreed!
>>
>> Mat
>>
>>
>>>
>>>
>>> Christoph Paasch (24):
>>> tcp: Write options after the header has been fully done
>>> tcp: Pass sock to tcp_options_write instead of tcp_sock
>>> tcp: Pass skb in tcp_options_write
>>> tcp: Allow tcp_fast_parse_options to drop segments
>>> tcp: Make smc_parse_options return 1 on success
>>> tcp_md5: Don't pass along md5-key
>>> tcp_md5: Detect key inside tcp_v4_send_ack instead of passing it as an
>>> argument
>>> tcp_md5: Detect key inside tcp_v6_send_response instead of passing it
>>> as an argument
>>> tcp_extra_options: Extend tcp_extra_options_write
>>> tcp_extra_options: Make extra-option list per-socket
>>> tcp_extra_options: Export module fixes
>>> tcp_extra_options: Add response_prepare callback
>>> tcp_extra_options: Check static branch before _parse
>>> tcp_extra_options: Skip fast-path when extra-options are present
>>> tcp_extra_options: Pass sk to tcp_parse_options instead of tp
>>> tcp_extra_options: Add check-callback right after parsing the option
>>> tcp_extra_options: Allow to parse experimental options
>>> tcp_extra_options: Add post_process callback
>>> tcp_smc: Make SMC use TCP extra-option framework
>>> tcp_md5: Check for TCP_MD5 after TCP Timestamps in
>>> tcp_established_options
>>> tcp_md5: Move TCP-MD5 code out of TCP itself
>>> tcp_md5: Use tcp_extra_options in output path
>>> tcp_md5: Cleanup TCP-code
>>> tcp_md5: Use TCP extra-options on the input path
>>>
>>> Mat Martineau (1):
>>> tcp: Register handlers for extra TCP options
>>>
>>> drivers/infiniband/hw/cxgb4/cm.c | 2 +-
>>> include/linux/inet_diag.h | 1 +
>>> include/linux/tcp.h | 41 +-
>>> include/linux/tcp_md5.h | 38 ++
>>> include/net/inet_sock.h | 3 +-
>>> include/net/tcp.h | 216 ++++---
>>> net/ipv4/Makefile | 1 +
>>> net/ipv4/syncookies.c | 6 +-
>>> net/ipv4/tcp.c | 372 ++++++++---
>>> net/ipv4/tcp_diag.c | 81 +--
>>> net/ipv4/tcp_input.c | 134 ++--
>>> net/ipv4/tcp_ipv4.c | 553 ++--------------
>>> net/ipv4/tcp_md5.c | 1317
++++++++++++++++++++++++++++++++++++++
>>> net/ipv4/tcp_minisocks.c | 76 +--
>>> net/ipv4/tcp_output.c | 183 +-----
>>> net/ipv6/syncookies.c | 6 +-
>>> net/ipv6/tcp_ipv6.c | 386 ++---------
>>> net/smc/af_smc.c | 170 ++++-
>>> 18 files changed, 2148 insertions(+), 1438 deletions(-)
>>> create mode 100644 include/linux/tcp_md5.h
>>> create mode 100644 net/ipv4/tcp_md5.c
>>>
>>> --
>>> 2.15.0
>>>
>>>
>>
>> --
>> Mat Martineau
>> Intel OTC
> _______________________________________________
> mptcp mailing list
> mptcp(a)lists.01.org
>
https://lists.01.org/mailman/listinfo/mptcp
--
Mat Martineau
Intel OTC