hires timestamps for netif_rx()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I'd love to have a run-time tuneable kernel parameter that lets me use
do_gettimeofday() instead of get_fast_time for received packet
timestamping.  Does this seem reasonable?

This is especially useful for me when I perform round trip time
measurements (despite the affects of interrupt latency).

Here's a patch against the 2.4.17.  Modified files are
include/linux/sysctl.h, net/core/dev.c, and net/core/sysctrl_net_core.c.
The sysctl tuneable parameter is /proc/sys/net/core/hires_rx_timestamp,
which is set to 0 by default.

Feedback, advice would be appreciated.

Patch follows:

diff -urN -X dontdiff linux-2.4.17/include/linux/sysctl.h linux-2.4.17-wilson/include/linux/sysctl.h
--- linux-2.4.17/include/linux/sysctl.h	Mon Nov 26 05:29:17 2001
+++ linux-2.4.17-wilson/include/linux/sysctl.h	Wed Jan 16 11:54:00 2002
@@ -204,7 +204,8 @@
 	NET_CORE_NO_CONG_THRESH=13,
 	NET_CORE_NO_CONG=14,
 	NET_CORE_LO_CONG=15,
-	NET_CORE_MOD_CONG=16
+	NET_CORE_MOD_CONG=16,
+	NET_CORE_HIRES_RX_TIMESTAMP=17
 };

 /* /proc/sys/net/ethernet */
diff -urN -X dontdiff linux-2.4.17/net/core/dev.c linux-2.4.17-wilson/net/core/dev.c
--- linux-2.4.17/net/core/dev.c	Wed Nov  7 14:39:36 2001
+++ linux-2.4.17-wilson/net/core/dev.c	Wed Jan 16 11:53:30 2002
@@ -1069,7 +1069,6 @@
 /*=======================================================================
 			Receiver routines
   =======================================================================*/
-
 int netdev_max_backlog = 300;
 /* These numbers are selected based on intuition and some
  * experimentatiom, if you have more scientific way of doing this
@@ -1082,6 +1081,7 @@

 struct netif_rx_stats netdev_rx_stat[NR_CPUS];

+int hires_rx_timestamp;

 #ifdef CONFIG_NET_HW_FLOWCONTROL
 atomic_t netdev_dropping = ATOMIC_INIT(0);
@@ -1217,8 +1217,12 @@
 	struct softnet_data *queue;
 	unsigned long flags;

-	if (skb->stamp.tv_sec == 0)
-		get_fast_time(&skb->stamp);
+	if (skb->stamp.tv_sec == 0) {
+		if (hires_rx_timestamp)
+			do_gettimeofday(&skb->stamp);
+		else
+			get_fast_time(&skb->stamp);
+	}

 	/* The code is rearranged so that the path is the most
 	   short when CPU is congested, but is still operating.
diff -urN -X dontdiff linux-2.4.17/net/core/sysctl_net_core.c linux-2.4.17-wilson/net/core/sysctl_net_core.c
--- linux-2.4.17/net/core/sysctl_net_core.c	Tue Oct 10 10:33:52 2000
+++ linux-2.4.17-wilson/net/core/sysctl_net_core.c	Wed Jan 16 11:52:39 2002
@@ -19,6 +19,7 @@
 extern int netdev_fastroute;
 extern int net_msg_cost;
 extern int net_msg_burst;
+extern int hires_rx_timestamp;

 extern __u32 sysctl_wmem_max;
 extern __u32 sysctl_rmem_max;
@@ -62,6 +63,9 @@
 	{NET_CORE_MOD_CONG, "mod_cong",
 	 &mod_cong, sizeof(int), 0644, NULL,
 	 &proc_dointvec},
+	{NET_CORE_HIRES_RX_TIMESTAMP, "hires_rx_timestamp",
+	 &hires_rx_timestamp, sizeof(int), 0644, NULL,
+	 &proc_dointvec},
 #ifdef CONFIG_NET_FASTROUTE
 	{NET_CORE_FASTROUTE, "netdev_fastroute",
 	 &netdev_fastroute, sizeof(int), 0644, NULL,


-
: send the line "unsubscribe linux-net" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux 802.1Q VLAN]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Git]     [Bugtraq]     [Yosemite News and Information]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux PCI]     [Linux Admin]     [Samba]

  Powered by Linux