ipv4: Add option to get TCP_FASTOPEN to getsockopt()
Subsystems (3)
PATCH 1/1 ipv4: Add option to get TCP_FASTOPEN to getsockopt()
TCP_FASTOPEN option can be set via setsockopt(), but the value cannot be gotten via getsockopt(). This patch adds the option to getsockopt().
Add option to get TCP_FASTOPEN to getsockopt()
--- net/ipv4/tcp.c | 5 +++++ 1 file changed, 5 insertions(+)
net/ipv4/tcp.c +5 -0
@@ -2916,6 +2916,11 @@ static int do_tcp_getsockopt(struct sock *sk, int level,case TCP_USER_TIMEOUT : val =jiffies_to_msecs (icsk->icsk_user_timeout);break ; + +case TCP_FASTOPEN : + val = sysctl_tcp_fastopen; +break ; +case TCP_TIMESTAMP : val = tcp_time_stamp + tp->tsoffset;break ;
--
1.9.0
Neal Cardwell
maintainerQuoted 27 lines · Kenjiro Nakayama
TCP_FASTOPENoption can be set viasetsockopt(), but the value cannot be gotten viagetsockopt(). This patch adds the option togetsockopt().Sighned-off-by Kenjiro Nakayama <[email protected]>Add option to get
TCP_FASTOPENtogetsockopt()--- net/ipv4/tcp.c | 5 +++++ 1 file changed, 5 insertions(+)net/ipv4/tcp.c +5
-1@@ -2916,6 +2916,11 @@ static int do_tcp_getsockopt(struct sock *sk, int level,case TCP_USER_TIMEOUT : val =jiffies_to_msecs (icsk->icsk_user_timeout);break ; + +case TCP_FASTOPEN : + val = sysctl_tcp_fastopen; +break ; +case TCP_TIMESTAMP : val = tcp_time_stamp + tp->tsoffset;break ; --
Quoted 1 line
1.9.0
Hi,
Please cc the Linux network development mailing list at [email protected] (cc-ed) for Linux networking patches like this.
I don't think this is the implementation we'd want for a getsockopt() for TCP_FASTOPEN. I imagine that since the setsockopt(TCP_FASTOPEN) enables Fast Open on a listening socket with a given backlog, if we add a corresponding getsockopt() then it should return that Fast Open backlog if Fast Open is enabled on the listening socket, or 0 otherwise. That is, basically it would be querying whether fastopen_init_queue() has been run and returning fastopenq->max_qlen if so. That way setsockopt(TCP_FASTOPEN, getsockopt(TCP_FASTOPEN)) will be a NOP in most cases, as one would expect.
neal