diff options
Diffstat (limited to 'net/core')
-rw-r--r-- | net/core/skbuff.c | 2 | ||||
-rw-r--r-- | net/core/sock.c | 3 |
2 files changed, 5 insertions, 0 deletions
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index c9f68802e992..0df4f1d14c5a 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c | |||
@@ -3522,6 +3522,8 @@ void skb_tstamp_tx(struct sk_buff *orig_skb, | |||
3522 | serr->ee.ee_errno = ENOMSG; | 3522 | serr->ee.ee_errno = ENOMSG; |
3523 | serr->ee.ee_origin = SO_EE_ORIGIN_TIMESTAMPING; | 3523 | serr->ee.ee_origin = SO_EE_ORIGIN_TIMESTAMPING; |
3524 | serr->ee.ee_info = SCM_TSTAMP_SND; | 3524 | serr->ee.ee_info = SCM_TSTAMP_SND; |
3525 | if (sk->sk_tsflags & SOF_TIMESTAMPING_OPT_ID) | ||
3526 | serr->ee.ee_data = skb_shinfo(skb)->tskey; | ||
3525 | 3527 | ||
3526 | err = sock_queue_err_skb(sk, skb); | 3528 | err = sock_queue_err_skb(sk, skb); |
3527 | 3529 | ||
diff --git a/net/core/sock.c b/net/core/sock.c index 47c9377e14b9..1e0f1c63ad6b 100644 --- a/net/core/sock.c +++ b/net/core/sock.c | |||
@@ -848,6 +848,9 @@ set_rcvbuf: | |||
848 | ret = -EINVAL; | 848 | ret = -EINVAL; |
849 | break; | 849 | break; |
850 | } | 850 | } |
851 | if (val & SOF_TIMESTAMPING_OPT_ID && | ||
852 | !(sk->sk_tsflags & SOF_TIMESTAMPING_OPT_ID)) | ||
853 | sk->sk_tskey = 0; | ||
851 | sk->sk_tsflags = val; | 854 | sk->sk_tsflags = val; |
852 | if (val & SOF_TIMESTAMPING_RX_SOFTWARE) | 855 | if (val & SOF_TIMESTAMPING_RX_SOFTWARE) |
853 | sock_enable_timestamp(sk, | 856 | sock_enable_timestamp(sk, |