diff options
author | David S. Miller <davem@davemloft.net> | 2014-07-29 14:40:07 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-07-29 14:40:25 -0400 |
commit | 9d7e3ea73c6be20538a69c14ab8bfb3b36f8d1a8 (patch) | |
tree | 2915bc3a3e8ea825e7b02349b05915aaff8a91eb /net | |
parent | 13e9b9972fa0f34059e737ae215a26e43966b46f (diff) | |
parent | 4d276eb6a478307a28ae843836c455bf04b37a3c (diff) |
Merge branch 'syststamp-removal'
Willem de Bruijn says:
====================
net: remove deprecated syststamp
The network stack can generate two kinds of hardware timestamps:
- hwtstamp stores a hw timestamp in device-specific raw format
- syststamp convers the raw format to system time
The second is deprecated and only implemented by a single device
driver. The suggested alternative is to communicate hwtstamp +
directly expose the NIC PTP clock device through ptp_clock_info.
The remaining driver (octeon) does not expose such a standard
interface as of now. It does have its own PTP library that depends
on its own shared memory PTP clock interface.
This patchset
1. reverts the syststamp code in the one driver (octeon)
2. reverts an unnecessary zero initialization in another (vxge)
3. modifies PF_PACKET to use syststamp is != 0 (because always == 0)
4. modifies SCM_TIMESTAMPING in the same way
For backwards compatibility, the interfaces are not removed.
Applications can still request SOF_TIMESTAMPING_SYS_HARDWARE. The
response field in scm_timestamping also remains. As was the case
for hardware/drivers that did not implement the feature, the
setsockopt succeeds, but the response field is always zero.
====================
Acked-by: Richard Cochran <richardcochran@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/core/sock.c | 4 | ||||
-rw-r--r-- | net/packet/af_packet.c | 12 | ||||
-rw-r--r-- | net/socket.c | 12 |
3 files changed, 8 insertions, 20 deletions
diff --git a/net/core/sock.c b/net/core/sock.c index ca9b65199d28..134291d73fcd 100644 --- a/net/core/sock.c +++ b/net/core/sock.c | |||
@@ -862,8 +862,6 @@ set_rcvbuf: | |||
862 | (1UL << SOCK_TIMESTAMPING_RX_SOFTWARE)); | 862 | (1UL << SOCK_TIMESTAMPING_RX_SOFTWARE)); |
863 | sock_valbool_flag(sk, SOCK_TIMESTAMPING_SOFTWARE, | 863 | sock_valbool_flag(sk, SOCK_TIMESTAMPING_SOFTWARE, |
864 | val & SOF_TIMESTAMPING_SOFTWARE); | 864 | val & SOF_TIMESTAMPING_SOFTWARE); |
865 | sock_valbool_flag(sk, SOCK_TIMESTAMPING_SYS_HARDWARE, | ||
866 | val & SOF_TIMESTAMPING_SYS_HARDWARE); | ||
867 | sock_valbool_flag(sk, SOCK_TIMESTAMPING_RAW_HARDWARE, | 865 | sock_valbool_flag(sk, SOCK_TIMESTAMPING_RAW_HARDWARE, |
868 | val & SOF_TIMESTAMPING_RAW_HARDWARE); | 866 | val & SOF_TIMESTAMPING_RAW_HARDWARE); |
869 | break; | 867 | break; |
@@ -1102,8 +1100,6 @@ int sock_getsockopt(struct socket *sock, int level, int optname, | |||
1102 | v.val |= SOF_TIMESTAMPING_RX_SOFTWARE; | 1100 | v.val |= SOF_TIMESTAMPING_RX_SOFTWARE; |
1103 | if (sock_flag(sk, SOCK_TIMESTAMPING_SOFTWARE)) | 1101 | if (sock_flag(sk, SOCK_TIMESTAMPING_SOFTWARE)) |
1104 | v.val |= SOF_TIMESTAMPING_SOFTWARE; | 1102 | v.val |= SOF_TIMESTAMPING_SOFTWARE; |
1105 | if (sock_flag(sk, SOCK_TIMESTAMPING_SYS_HARDWARE)) | ||
1106 | v.val |= SOF_TIMESTAMPING_SYS_HARDWARE; | ||
1107 | if (sock_flag(sk, SOCK_TIMESTAMPING_RAW_HARDWARE)) | 1103 | if (sock_flag(sk, SOCK_TIMESTAMPING_RAW_HARDWARE)) |
1108 | v.val |= SOF_TIMESTAMPING_RAW_HARDWARE; | 1104 | v.val |= SOF_TIMESTAMPING_RAW_HARDWARE; |
1109 | break; | 1105 | break; |
diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c index 614ca91f785a..8d9f8042705a 100644 --- a/net/packet/af_packet.c +++ b/net/packet/af_packet.c | |||
@@ -441,14 +441,10 @@ static __u32 tpacket_get_timestamp(struct sk_buff *skb, struct timespec *ts, | |||
441 | { | 441 | { |
442 | struct skb_shared_hwtstamps *shhwtstamps = skb_hwtstamps(skb); | 442 | struct skb_shared_hwtstamps *shhwtstamps = skb_hwtstamps(skb); |
443 | 443 | ||
444 | if (shhwtstamps) { | 444 | if (shhwtstamps && |
445 | if ((flags & SOF_TIMESTAMPING_SYS_HARDWARE) && | 445 | (flags & SOF_TIMESTAMPING_RAW_HARDWARE) && |
446 | ktime_to_timespec_cond(shhwtstamps->syststamp, ts)) | 446 | ktime_to_timespec_cond(shhwtstamps->hwtstamp, ts)) |
447 | return TP_STATUS_TS_SYS_HARDWARE; | 447 | return TP_STATUS_TS_RAW_HARDWARE; |
448 | if ((flags & SOF_TIMESTAMPING_RAW_HARDWARE) && | ||
449 | ktime_to_timespec_cond(shhwtstamps->hwtstamp, ts)) | ||
450 | return TP_STATUS_TS_RAW_HARDWARE; | ||
451 | } | ||
452 | 448 | ||
453 | if (ktime_to_timespec_cond(skb->tstamp, ts)) | 449 | if (ktime_to_timespec_cond(skb->tstamp, ts)) |
454 | return TP_STATUS_TS_SOFTWARE; | 450 | return TP_STATUS_TS_SOFTWARE; |
diff --git a/net/socket.c b/net/socket.c index abf56b2a14f9..d8222c025061 100644 --- a/net/socket.c +++ b/net/socket.c | |||
@@ -725,14 +725,10 @@ void __sock_recv_timestamp(struct msghdr *msg, struct sock *sk, | |||
725 | if (sock_flag(sk, SOCK_TIMESTAMPING_SOFTWARE) && | 725 | if (sock_flag(sk, SOCK_TIMESTAMPING_SOFTWARE) && |
726 | ktime_to_timespec_cond(skb->tstamp, ts + 0)) | 726 | ktime_to_timespec_cond(skb->tstamp, ts + 0)) |
727 | empty = 0; | 727 | empty = 0; |
728 | if (shhwtstamps) { | 728 | if (shhwtstamps && |
729 | if (sock_flag(sk, SOCK_TIMESTAMPING_SYS_HARDWARE) && | 729 | sock_flag(sk, SOCK_TIMESTAMPING_RAW_HARDWARE) && |
730 | ktime_to_timespec_cond(shhwtstamps->syststamp, ts + 1)) | 730 | ktime_to_timespec_cond(shhwtstamps->hwtstamp, ts + 2)) |
731 | empty = 0; | 731 | empty = 0; |
732 | if (sock_flag(sk, SOCK_TIMESTAMPING_RAW_HARDWARE) && | ||
733 | ktime_to_timespec_cond(shhwtstamps->hwtstamp, ts + 2)) | ||
734 | empty = 0; | ||
735 | } | ||
736 | if (!empty) | 732 | if (!empty) |
737 | put_cmsg(msg, SOL_SOCKET, | 733 | put_cmsg(msg, SOL_SOCKET, |
738 | SCM_TIMESTAMPING, sizeof(ts), &ts); | 734 | SCM_TIMESTAMPING, sizeof(ts), &ts); |