Skip to contentSkip to conversation

: Move rx timestamp functions to net/core/dev.c

PATCH In review Patrick McHardy 1 participant 1 message Nov 15, 2004

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 5/9 : Move rx timestamp functions to net/core/dev.c

This patch moves the rx timestamp functions to net/core/dev.c. This is necessary for the next patch: ip_queue needs to enable timestamps while packets are received by it.

# This is a BitKeeper generated diff -Nru style patch. #
# ChangeSet
# 2004/11/13 13:27:50+01:00 [email protected]
# [NET]: Move rx timestamp functions to net/core/dev.c
#
# Signed-off-by: Patrick McHardy <[email protected]>
#

# net/core/sock.c
#   2004/11/13 13:27:44+01:00 [email protected] +2 -5
#   [NET]: Move rx timestamp functions to net/core/dev.c
#   
#   Signed-off-by: Patrick McHardy <[email protected]>
# 
# net/core/dev.c
#   2004/11/13 13:27:43+01:00 [email protected] +25 -0
#   [NET]: Move rx timestamp functions to net/core/dev.c
#   
#   Signed-off-by: Patrick McHardy <[email protected]>
# 
# include/net/sock.h
#   2004/11/13 13:27:43+01:00 [email protected] +0 -12
#   [NET]: Move rx timestamp functions to net/core/dev.c
#   
#   Signed-off-by: Patrick McHardy <[email protected]>
# 
# include/linux/netdevice.h
#   2004/11/13 13:27:43+01:00 [email protected] +3 -0
#   [NET]: Move rx timestamp functions to net/core/dev.c
#   
#   Signed-off-by: Patrick McHardy <[email protected]>
# 
diff -Nru a/include/linux/netdevice.h b/include/linux/netdevice.h
--- a/include/linux/netdevice.h	2004-11-15 22:07:09 +01:00
+++ b/include/linux/netdevice.h	2004-11-15 22:07:09 +01:00
@@ -928,6 +928,9 @@
 extern atomic_t netdev_dropping;
 extern int		netdev_set_master(struct net_device *dev, struct net_device *master);
 extern int skb_checksum_help(struct sk_buff *skb, int inward);
+/* rx skb timestamps */
+extern void		net_enable_timestamp(void);
+extern void		net_disable_timestamp(void);

#ifdef CONFIG_SYSCTL
extern char *net_sysctl_strdup(const char *s);

include/net/sock.h +0 -12
diff -Nru a/include/net/sock.h b/include/net/sock.h
@@ -1270,19 +1270,7 @@
 	__kfree_skb(skb);
 }
 
-extern atomic_t netstamp_needed;
 extern void sock_enable_timestamp(struct sock *sk);
-
-static inline void net_timestamp(struct timeval *stamp) 
-{ 
-	if (atomic_read(&netstamp_needed)) 
-		do_gettimeofday(stamp);
-	else {
-		stamp->tv_sec = 0;
-		stamp->tv_usec = 0;
-	}		
-} 
-
 extern int sock_get_timestamp(struct sock *, struct timeval __user *);
 
 /* 
net/core/dev.c +25 -0
diff -Nru a/net/core/dev.c b/net/core/dev.c
@@ -1001,6 +1001,29 @@
 	return notifier_call_chain(&netdev_chain, val, v);
 }
 
+/* When > 0 there are consumers of rx skb time stamps */
+static atomic_t netstamp_needed = ATOMIC_INIT(0);
+
+void net_enable_timestamp(void)
+{
+	atomic_inc(&netstamp_needed);
+}
+
+void net_disable_timestamp(void)
+{
+	atomic_dec(&netstamp_needed);
+}
+
+static inline void net_timestamp(struct timeval *stamp)
+{
+	if (atomic_read(&netstamp_needed))
+		do_gettimeofday(stamp);
+	else {
+		stamp->tv_sec = 0;
+		stamp->tv_usec = 0;
+	}
+}
+
 /*
  *	Support routine. Sends outgoing frames to any network
  *	taps currently in use.
@@ -3215,6 +3238,8 @@
 EXPORT_SYMBOL(synchronize_net);
 EXPORT_SYMBOL(unregister_netdevice);
 EXPORT_SYMBOL(unregister_netdevice_notifier);
+EXPORT_SYMBOL(net_enable_timestamp);
+EXPORT_SYMBOL(net_disable_timestamp);
 
 #if defined(CONFIG_BRIDGE) || defined(CONFIG_BRIDGE_MODULE)
 EXPORT_SYMBOL(br_handle_frame_hook);
net/core/sock.c +2 -5
diff -Nru a/net/core/sock.c b/net/core/sock.c
@@ -179,7 +179,7 @@
 {	
 	if (sock_flag(sk, SOCK_TIMESTAMP)) { 
 		sock_reset_flag(sk, SOCK_TIMESTAMP);
-		atomic_dec(&netstamp_needed);
+		net_disable_timestamp();
 	}
 }
 
@@ -1226,9 +1226,6 @@
 }
 EXPORT_SYMBOL(release_sock);
 
-/* When > 0 there are consumers of rx skb time stamps */
-atomic_t netstamp_needed = ATOMIC_INIT(0); 
-
 int sock_get_timestamp(struct sock *sk, struct timeval __user *userstamp)
 { 
 	if (!sock_flag(sk, SOCK_TIMESTAMP))
@@ -1246,7 +1243,7 @@
 {	
 	if (!sock_flag(sk, SOCK_TIMESTAMP)) { 
 		sock_set_flag(sk, SOCK_TIMESTAMP);
-		atomic_inc(&netstamp_needed);
+		net_enable_timestamp();
 	}
 }
 EXPORT_SYMBOL(sock_enable_timestamp);