Message ID | 20210917041606.167192-1-weiwan@google.com (mailing list archive) |
---|---|
State | Not Applicable |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [v2] send.2: Add MSG_FASTOPEN flag | expand |
Context | Check | Description |
---|---|---|
netdev/tree_selection | success | Not a local patch |
Hi Wei, On 9/17/21 6:16 AM, Wei Wang wrote: > MSG_FASTOPEN flag is available since Linux 3.7. Add detailed description > in the manpage according to RFC7413. > > Signed-off-by: Wei Wang <weiwan@google.com> > Reviewed-by: Yuchung Cheng <ycheng@google.com> > Reviewed-by: Eric Dumazet <edumazet@google.com> Patch applied! Thanks (and to the reviewers too!), Alex > --- > Change in v2: corrected some format issues > > man2/send.2 | 32 ++++++++++++++++++++++++++++++++ > 1 file changed, 32 insertions(+) > > diff --git a/man2/send.2 b/man2/send.2 > index fd28fed90..acaa05be9 100644 > --- a/man2/send.2 > +++ b/man2/send.2 > @@ -252,6 +252,38 @@ data on sockets that support this notion (e.g., of type > the underlying protocol must also support > .I out-of-band > data. > +.TP > +.BR MSG_FASTOPEN " (since Linux 3.7)" > +Attempts TCP Fast Open (RFC7413) and sends data in the SYN like a > +combination of > +.BR connect (2) > +and > +.BR write (2), > +by performing an implicit > +.BR connect (2) > +operation. > +It blocks until the data is buffered and the handshake has completed. > +For a non-blocking socket, > +it returns the number of bytes buffered and sent in the SYN packet. > +If the cookie is not available locally, > +it returns > +.BR EINPROGRESS , > +and sends a SYN with a Fast Open cookie request automatically. > +The caller needs to write the data again when the socket is connected. > +On errors, > +it sets the same > +.I errno > +as > +.BR connect (2) > +if the handshake fails. > +This flag requires enabling TCP Fast Open client support on sysctl > +.IR net.ipv4.tcp_fastopen . > +.IP > +Refer to > +.B TCP_FASTOPEN_CONNECT > +socket option in > +.BR tcp (7) > +for an alternative approach. > .SS sendmsg() > The definition of the > .I msghdr >
diff --git a/man2/send.2 b/man2/send.2 index fd28fed90..acaa05be9 100644 --- a/man2/send.2 +++ b/man2/send.2 @@ -252,6 +252,38 @@ data on sockets that support this notion (e.g., of type the underlying protocol must also support .I out-of-band data. +.TP +.BR MSG_FASTOPEN " (since Linux 3.7)" +Attempts TCP Fast Open (RFC7413) and sends data in the SYN like a +combination of +.BR connect (2) +and +.BR write (2), +by performing an implicit +.BR connect (2) +operation. +It blocks until the data is buffered and the handshake has completed. +For a non-blocking socket, +it returns the number of bytes buffered and sent in the SYN packet. +If the cookie is not available locally, +it returns +.BR EINPROGRESS , +and sends a SYN with a Fast Open cookie request automatically. +The caller needs to write the data again when the socket is connected. +On errors, +it sets the same +.I errno +as +.BR connect (2) +if the handshake fails. +This flag requires enabling TCP Fast Open client support on sysctl +.IR net.ipv4.tcp_fastopen . +.IP +Refer to +.B TCP_FASTOPEN_CONNECT +socket option in +.BR tcp (7) +for an alternative approach. .SS sendmsg() The definition of the .I msghdr