diff --git a/package/gluon-radv-filterd/src/gluon-radv-filterd.c b/package/gluon-radv-filterd/src/gluon-radv-filterd.c
index 3506b351291cae1193dd2cb8d9015c3479e3dd10..067cfd55f042cb10d801ec639dcf72c7ad7c3a8a 100644
--- a/package/gluon-radv-filterd/src/gluon-radv-filterd.c
+++ b/package/gluon-radv-filterd/src/gluon-radv-filterd.c
@@ -53,8 +53,8 @@
 // seconds). Re-read it from the transtable afterwards.
 #define ORIGINATOR_CACHE_TTL 300
 
-// max execution time of a single ebtables call in nanoseconds
-#define EBTABLES_TIMEOUT 500000000 // 500ms
+// max execution time of a single ebtables call in seconds
+#define EBTABLES_TIMEOUT 2
 
 // TQ value assigned to local routers
 #define LOCAL_TQ 512
@@ -143,7 +143,7 @@ static int timespec_diff(struct timespec *tv1, struct timespec *tv2,
 static void cleanup(void) {
 	struct router *router;
 	struct timespec timeout = {
-		.tv_nsec = EBTABLES_TIMEOUT,
+		.tv_sec = EBTABLES_TIMEOUT,
 	};
 
 	close(G.sock);
@@ -658,7 +658,7 @@ static void update_tqs(void) {
 static void update_redirect(void) {
 	struct router *router;
 	struct timespec timeout = {
-		.tv_nsec = EBTABLES_TIMEOUT,
+		.tv_sec = EBTABLES_TIMEOUT,
 	};
 
 	foreach(router, G.routers) {
@@ -770,7 +770,7 @@ static bool election_required(void)
 
 static void update_ebtables(void) {
 	struct timespec timeout = {
-		.tv_nsec = EBTABLES_TIMEOUT,
+		.tv_sec = EBTABLES_TIMEOUT,
 	};
 	char mac[F_MAC_LEN + 1];
 	struct router *router;