aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2014-07-29 14:40:07 -0400
committerDavid S. Miller <davem@davemloft.net>2014-07-29 14:40:25 -0400
commit9d7e3ea73c6be20538a69c14ab8bfb3b36f8d1a8 (patch)
tree2915bc3a3e8ea825e7b02349b05915aaff8a91eb /net
parent13e9b9972fa0f34059e737ae215a26e43966b46f (diff)
parent4d276eb6a478307a28ae843836c455bf04b37a3c (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.c4
-rw-r--r--net/packet/af_packet.c12
-rw-r--r--net/socket.c12
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);