]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - net/core/sock.c
net-timestamp: TCP timestamping
[karo-tx-linux.git] / net / core / sock.c
index 1e0f1c63ad6b33122dad40ce614da0f975720f10..2714811afbd8bd3d35b5bd8619179eafaa71e19b 100644 (file)
@@ -849,8 +849,17 @@ set_rcvbuf:
                        break;
                }
                if (val & SOF_TIMESTAMPING_OPT_ID &&
-                   !(sk->sk_tsflags & SOF_TIMESTAMPING_OPT_ID))
-                       sk->sk_tskey = 0;
+                   !(sk->sk_tsflags & SOF_TIMESTAMPING_OPT_ID)) {
+                       if (sk->sk_protocol == IPPROTO_TCP) {
+                               if (sk->sk_state != TCP_ESTABLISHED) {
+                                       ret = -EINVAL;
+                                       break;
+                               }
+                               sk->sk_tskey = tcp_sk(sk)->snd_una;
+                       } else {
+                               sk->sk_tskey = 0;
+                       }
+               }
                sk->sk_tsflags = val;
                if (val & SOF_TIMESTAMPING_RX_SOFTWARE)
                        sock_enable_timestamp(sk,