]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
af-packet: ask for hardware timestamp
authorEric Leblond <eric@regit.org>
Fri, 22 Apr 2016 22:30:39 +0000 (00:30 +0200)
committerVictor Julien <victor@inliniac.net>
Fri, 20 May 2016 10:32:40 +0000 (12:32 +0200)
configure.ac
src/source-af-packet.c

index e7237651a2f46bdd3b44eef06026cea5a9e66e9a..fc936abaec7dac3101ce62c07c59183fb3d0ff7c 100644 (file)
             [],
             [[#include <sys/socket.h>
               #include <linux/if_packet.h>]])
+        AC_CHECK_DECL([SOF_TIMESTAMPING_RAW_HARDWARE],
+            AC_DEFINE([HAVE_HW_TIMESTAMPING],[1],[Hardware timestamping support is available]),
+            [],
+            [[#include <linux/net_tstamp.h>]])
     ])
 
   # Netmap support
index 7e1aa5444accceba4274a3790065868bb0028a0d..f6b6237f6830a65b817d8bf88502889c96706b99 100644 (file)
 #include <sys/mman.h>
 #endif
 
+#ifdef HAVE_HW_TIMESTAMPING
+#include <linux/net_tstamp.h>
+#endif
+
 #endif /* HAVE_AF_PACKET */
 
 extern int max_pending_packets;
@@ -1669,6 +1673,16 @@ static int AFPSetupRing(AFPThreadVars *ptv, char *devname)
         return AFP_FATAL_ERROR;
     }
 
+#ifdef HAVE_HW_TIMESTAMPING
+    int req = SOF_TIMESTAMPING_RAW_HARDWARE;
+    if (setsockopt(ptv->socket, SOL_PACKET, PACKET_TIMESTAMP, (void *) &req,
+                sizeof(req)) < 0) {
+        SCLogWarning(SC_ERR_AFP_CREATE,
+                "Can't activate hardware timestamping on packet socket: %s",
+                strerror(errno));
+    }
+#endif
+
     /* Allocate RX ring */
 #ifdef HAVE_TPACKET_V3
     if (ptv->flags & AFP_TPACKET_V3) {