batman-adv: Consolidate logging related functions
authorSven Eckelmann <sven@narfation.org>
Sun, 15 May 2016 21:48:31 +0000 (23:48 +0200)
committerSimon Wunderlich <sw@simonwunderlich.de>
Thu, 30 Jun 2016 08:29:43 +0000 (10:29 +0200)
There are several places in batman-adv which provide logging related
functions. These should be grouped together in the log.* files to make them
easier to find.

Reported-by: Markus Pargmann <mpa@pengutronix.de>
Signed-off-by: Sven Eckelmann <sven@narfation.org>
Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
23 files changed:
net/batman-adv/Makefile
net/batman-adv/bat_iv_ogm.c
net/batman-adv/bat_v_elp.c
net/batman-adv/bat_v_ogm.c
net/batman-adv/bitarray.c
net/batman-adv/bridge_loop_avoidance.c
net/batman-adv/debugfs.c
net/batman-adv/distributed-arp-table.c
net/batman-adv/gateway_client.c
net/batman-adv/gateway_common.c
net/batman-adv/hard-interface.c
net/batman-adv/icmp_socket.c
net/batman-adv/log.c [new file with mode: 0644]
net/batman-adv/log.h [new file with mode: 0644]
net/batman-adv/main.c
net/batman-adv/main.h
net/batman-adv/multicast.c
net/batman-adv/network-coding.c
net/batman-adv/originator.c
net/batman-adv/routing.c
net/batman-adv/send.c
net/batman-adv/sysfs.c
net/batman-adv/translation-table.c

index 5260c17e206940837e30c922a06f32c47b88b23d..a55f4ec970688808f39b2134593628a13734bc74 100644 (file)
@@ -32,6 +32,7 @@ batman-adv-y += gateway_common.o
 batman-adv-y += hard-interface.o
 batman-adv-y += hash.o
 batman-adv-y += icmp_socket.o
+batman-adv-$(CONFIG_BATMAN_ADV_DEBUG) += log.o
 batman-adv-y += main.o
 batman-adv-$(CONFIG_BATMAN_ADV_MCAST) += multicast.o
 batman-adv-$(CONFIG_BATMAN_ADV_NC) += network-coding.o
index 948a5b45474d397ae9101467f631c68b7261ea4c..805532a958601961553bfb0eb33a811eae9e152f 100644 (file)
@@ -52,6 +52,7 @@
 #include "bitarray.h"
 #include "hard-interface.h"
 #include "hash.h"
+#include "log.h"
 #include "network-coding.h"
 #include "originator.h"
 #include "packet.h"
index cf0262becd083151c6888d81ade06721eba2fa89..15cf2726d6a55032c6decd814164f4c7b3c5d826 100644 (file)
@@ -43,6 +43,7 @@
 #include "bat_algo.h"
 #include "bat_v_ogm.h"
 #include "hard-interface.h"
+#include "log.h"
 #include "originator.h"
 #include "packet.h"
 #include "routing.h"
index 93e3d760bfe0370ab0125ff3487b2d696c7fd129..7ac9e0b306180bbf77af4a65030ede3cd939ff81 100644 (file)
@@ -42,6 +42,7 @@
 #include "bat_algo.h"
 #include "hard-interface.h"
 #include "hash.h"
+#include "log.h"
 #include "originator.h"
 #include "packet.h"
 #include "routing.h"
index a0c7913837a58af3a293c98720fa8f5480c6450a..032271421a203162ba3b5c8766746c3feccbf877 100644 (file)
@@ -20,6 +20,8 @@
 
 #include <linux/bitmap.h>
 
+#include "log.h"
+
 /* shift the packet array by n places. */
 static void batadv_bitmap_shift_left(unsigned long *seq_bits, s32 n)
 {
index 748a9ead7ce50fd65a0a09f2b19eaa035a566327..e4f7494fb974a426739531bf285f636296a7e6ac 100644 (file)
@@ -48,6 +48,7 @@
 
 #include "hard-interface.h"
 #include "hash.h"
+#include "log.h"
 #include "originator.h"
 #include "packet.h"
 #include "sysfs.h"
index 227c84b9db0345d06eb75ed1194d0cc7727747b5..1d68b6e63b9690c031f178b54c77cf87d96921b2 100644 (file)
 #include "debugfs.h"
 #include "main.h"
 
-#include <linux/compiler.h>
 #include <linux/debugfs.h>
 #include <linux/device.h>
 #include <linux/errno.h>
 #include <linux/export.h>
-#include <linux/fcntl.h>
 #include <linux/fs.h>
-#include <linux/jiffies.h>
-#include <linux/kernel.h>
-#include <linux/module.h>
 #include <linux/netdevice.h>
-#include <linux/poll.h>
 #include <linux/printk.h>
 #include <linux/sched.h> /* for linux/wait.h */
 #include <linux/seq_file.h>
-#include <linux/slab.h>
-#include <linux/spinlock.h>
 #include <linux/stat.h>
 #include <linux/stddef.h>
 #include <linux/stringify.h>
 #include <linux/sysfs.h>
-#include <linux/types.h>
-#include <linux/uaccess.h>
-#include <linux/wait.h>
-#include <stdarg.h>
 
 #include "bat_algo.h"
 #include "bridge_loop_avoidance.h"
 #include "distributed-arp-table.h"
 #include "gateway_client.h"
 #include "icmp_socket.h"
+#include "log.h"
 #include "multicast.h"
 #include "network-coding.h"
 #include "originator.h"
 
 static struct dentry *batadv_debugfs;
 
-#ifdef CONFIG_BATMAN_ADV_DEBUG
-#define BATADV_LOG_BUFF_MASK (batadv_log_buff_len - 1)
-
-static const int batadv_log_buff_len = BATADV_LOG_BUF_LEN;
-
-static char *batadv_log_char_addr(struct batadv_priv_debug_log *debug_log,
-                                 size_t idx)
-{
-       return &debug_log->log_buff[idx & BATADV_LOG_BUFF_MASK];
-}
-
-static void batadv_emit_log_char(struct batadv_priv_debug_log *debug_log,
-                                char c)
-{
-       char *char_addr;
-
-       char_addr = batadv_log_char_addr(debug_log, debug_log->log_end);
-       *char_addr = c;
-       debug_log->log_end++;
-
-       if (debug_log->log_end - debug_log->log_start > batadv_log_buff_len)
-               debug_log->log_start = debug_log->log_end - batadv_log_buff_len;
-}
-
-__printf(2, 3)
-static int batadv_fdebug_log(struct batadv_priv_debug_log *debug_log,
-                            const char *fmt, ...)
-{
-       va_list args;
-       static char debug_log_buf[256];
-       char *p;
-
-       if (!debug_log)
-               return 0;
-
-       spin_lock_bh(&debug_log->lock);
-       va_start(args, fmt);
-       vscnprintf(debug_log_buf, sizeof(debug_log_buf), fmt, args);
-       va_end(args);
-
-       for (p = debug_log_buf; *p != 0; p++)
-               batadv_emit_log_char(debug_log, *p);
-
-       spin_unlock_bh(&debug_log->lock);
-
-       wake_up(&debug_log->queue_wait);
-
-       return 0;
-}
-
-int batadv_debug_log(struct batadv_priv *bat_priv, const char *fmt, ...)
-{
-       va_list args;
-       char tmp_log_buf[256];
-
-       va_start(args, fmt);
-       vscnprintf(tmp_log_buf, sizeof(tmp_log_buf), fmt, args);
-       batadv_fdebug_log(bat_priv->debug_log, "[%10u] %s",
-                         jiffies_to_msecs(jiffies), tmp_log_buf);
-       va_end(args);
-
-       return 0;
-}
-
-static int batadv_log_open(struct inode *inode, struct file *file)
-{
-       if (!try_module_get(THIS_MODULE))
-               return -EBUSY;
-
-       nonseekable_open(inode, file);
-       file->private_data = inode->i_private;
-       return 0;
-}
-
-static int batadv_log_release(struct inode *inode, struct file *file)
-{
-       module_put(THIS_MODULE);
-       return 0;
-}
-
-static bool batadv_log_empty(struct batadv_priv_debug_log *debug_log)
-{
-       return !(debug_log->log_start - debug_log->log_end);
-}
-
-static ssize_t batadv_log_read(struct file *file, char __user *buf,
-                              size_t count, loff_t *ppos)
-{
-       struct batadv_priv *bat_priv = file->private_data;
-       struct batadv_priv_debug_log *debug_log = bat_priv->debug_log;
-       int error, i = 0;
-       char *char_addr;
-       char c;
-
-       if ((file->f_flags & O_NONBLOCK) && batadv_log_empty(debug_log))
-               return -EAGAIN;
-
-       if (!buf)
-               return -EINVAL;
-
-       if (count == 0)
-               return 0;
-
-       if (!access_ok(VERIFY_WRITE, buf, count))
-               return -EFAULT;
-
-       error = wait_event_interruptible(debug_log->queue_wait,
-                                        (!batadv_log_empty(debug_log)));
-
-       if (error)
-               return error;
-
-       spin_lock_bh(&debug_log->lock);
-
-       while ((!error) && (i < count) &&
-              (debug_log->log_start != debug_log->log_end)) {
-               char_addr = batadv_log_char_addr(debug_log,
-                                                debug_log->log_start);
-               c = *char_addr;
-
-               debug_log->log_start++;
-
-               spin_unlock_bh(&debug_log->lock);
-
-               error = __put_user(c, buf);
-
-               spin_lock_bh(&debug_log->lock);
-
-               buf++;
-               i++;
-       }
-
-       spin_unlock_bh(&debug_log->lock);
-
-       if (!error)
-               return i;
-
-       return error;
-}
-
-static unsigned int batadv_log_poll(struct file *file, poll_table *wait)
-{
-       struct batadv_priv *bat_priv = file->private_data;
-       struct batadv_priv_debug_log *debug_log = bat_priv->debug_log;
-
-       poll_wait(file, &debug_log->queue_wait, wait);
-
-       if (!batadv_log_empty(debug_log))
-               return POLLIN | POLLRDNORM;
-
-       return 0;
-}
-
-static const struct file_operations batadv_log_fops = {
-       .open           = batadv_log_open,
-       .release        = batadv_log_release,
-       .read           = batadv_log_read,
-       .poll           = batadv_log_poll,
-       .llseek         = no_llseek,
-};
-
-static int batadv_debug_log_setup(struct batadv_priv *bat_priv)
-{
-       struct dentry *d;
-
-       if (!bat_priv->debug_dir)
-               goto err;
-
-       bat_priv->debug_log = kzalloc(sizeof(*bat_priv->debug_log), GFP_ATOMIC);
-       if (!bat_priv->debug_log)
-               goto err;
-
-       spin_lock_init(&bat_priv->debug_log->lock);
-       init_waitqueue_head(&bat_priv->debug_log->queue_wait);
-
-       d = debugfs_create_file("log", S_IFREG | S_IRUSR,
-                               bat_priv->debug_dir, bat_priv,
-                               &batadv_log_fops);
-       if (!d)
-               goto err;
-
-       return 0;
-
-err:
-       return -ENOMEM;
-}
-
-static void batadv_debug_log_cleanup(struct batadv_priv *bat_priv)
-{
-       kfree(bat_priv->debug_log);
-       bat_priv->debug_log = NULL;
-}
-#else /* CONFIG_BATMAN_ADV_DEBUG */
-static int batadv_debug_log_setup(struct batadv_priv *bat_priv)
-{
-       return 0;
-}
-
-static void batadv_debug_log_cleanup(struct batadv_priv *bat_priv)
-{
-}
-#endif
-
 static int batadv_algorithms_open(struct inode *inode, struct file *file)
 {
        return single_open(file, batadv_algo_seq_print_text, NULL);
index 584b827446995c2bb213079543de79f8f73f859f..fa7646532a139282826674e97b50273f5b8b1097 100644 (file)
@@ -45,6 +45,7 @@
 
 #include "hard-interface.h"
 #include "hash.h"
+#include "log.h"
 #include "originator.h"
 #include "send.h"
 #include "translation-table.h"
index 18c3715e5e276984044fae05ef68b932cf0113ba..63a805d3f96e5286c9301fe900b48c2e21241f6a 100644 (file)
@@ -42,6 +42,7 @@
 
 #include "gateway_common.h"
 #include "hard-interface.h"
+#include "log.h"
 #include "originator.h"
 #include "packet.h"
 #include "routing.h"
index 6a6f2d4987e57bfefdf3632b47ecc9631bc34d87..d7bc6a87bcc914de8d131d78bc417ba6d6bf9668 100644 (file)
@@ -28,6 +28,7 @@
 #include <linux/string.h>
 
 #include "gateway_client.h"
+#include "log.h"
 #include "packet.h"
 #include "tvlv.h"
 
index a3483f60c3a176db552610e223501566c304ffed..ad2c37c5583b84431a19c29f590295ec779e2b82 100644 (file)
@@ -42,6 +42,7 @@
 #include "debugfs.h"
 #include "distributed-arp-table.h"
 #include "gateway_client.h"
+#include "log.h"
 #include "originator.h"
 #include "packet.h"
 #include "send.h"
index 777aea10cd8fcb22ce25861ba39e52f68dbcc602..378cc1119d6664ff1dcbf5993a8b2871505c6939 100644 (file)
@@ -45,6 +45,7 @@
 #include <linux/wait.h>
 
 #include "hard-interface.h"
+#include "log.h"
 #include "originator.h"
 #include "packet.h"
 #include "send.h"
diff --git a/net/batman-adv/log.c b/net/batman-adv/log.c
new file mode 100644 (file)
index 0000000..56dc532
--- /dev/null
@@ -0,0 +1,231 @@
+/* Copyright (C) 2010-2016  B.A.T.M.A.N. contributors:
+ *
+ * Marek Lindner
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "log.h"
+#include "main.h"
+
+#include <linux/compiler.h>
+#include <linux/debugfs.h>
+#include <linux/errno.h>
+#include <linux/export.h>
+#include <linux/fcntl.h>
+#include <linux/fs.h>
+#include <linux/jiffies.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/poll.h>
+#include <linux/sched.h> /* for linux/wait.h */
+#include <linux/slab.h>
+#include <linux/spinlock.h>
+#include <linux/stat.h>
+#include <linux/stddef.h>
+#include <linux/types.h>
+#include <linux/uaccess.h>
+#include <linux/wait.h>
+#include <stdarg.h>
+
+#define BATADV_LOG_BUFF_MASK (batadv_log_buff_len - 1)
+
+static const int batadv_log_buff_len = BATADV_LOG_BUF_LEN;
+
+static char *batadv_log_char_addr(struct batadv_priv_debug_log *debug_log,
+                                 size_t idx)
+{
+       return &debug_log->log_buff[idx & BATADV_LOG_BUFF_MASK];
+}
+
+static void batadv_emit_log_char(struct batadv_priv_debug_log *debug_log,
+                                char c)
+{
+       char *char_addr;
+
+       char_addr = batadv_log_char_addr(debug_log, debug_log->log_end);
+       *char_addr = c;
+       debug_log->log_end++;
+
+       if (debug_log->log_end - debug_log->log_start > batadv_log_buff_len)
+               debug_log->log_start = debug_log->log_end - batadv_log_buff_len;
+}
+
+__printf(2, 3)
+static int batadv_fdebug_log(struct batadv_priv_debug_log *debug_log,
+                            const char *fmt, ...)
+{
+       va_list args;
+       static char debug_log_buf[256];
+       char *p;
+
+       if (!debug_log)
+               return 0;
+
+       spin_lock_bh(&debug_log->lock);
+       va_start(args, fmt);
+       vscnprintf(debug_log_buf, sizeof(debug_log_buf), fmt, args);
+       va_end(args);
+
+       for (p = debug_log_buf; *p != 0; p++)
+               batadv_emit_log_char(debug_log, *p);
+
+       spin_unlock_bh(&debug_log->lock);
+
+       wake_up(&debug_log->queue_wait);
+
+       return 0;
+}
+
+int batadv_debug_log(struct batadv_priv *bat_priv, const char *fmt, ...)
+{
+       va_list args;
+       char tmp_log_buf[256];
+
+       va_start(args, fmt);
+       vscnprintf(tmp_log_buf, sizeof(tmp_log_buf), fmt, args);
+       batadv_fdebug_log(bat_priv->debug_log, "[%10u] %s",
+                         jiffies_to_msecs(jiffies), tmp_log_buf);
+       va_end(args);
+
+       return 0;
+}
+
+static int batadv_log_open(struct inode *inode, struct file *file)
+{
+       if (!try_module_get(THIS_MODULE))
+               return -EBUSY;
+
+       nonseekable_open(inode, file);
+       file->private_data = inode->i_private;
+       return 0;
+}
+
+static int batadv_log_release(struct inode *inode, struct file *file)
+{
+       module_put(THIS_MODULE);
+       return 0;
+}
+
+static bool batadv_log_empty(struct batadv_priv_debug_log *debug_log)
+{
+       return !(debug_log->log_start - debug_log->log_end);
+}
+
+static ssize_t batadv_log_read(struct file *file, char __user *buf,
+                              size_t count, loff_t *ppos)
+{
+       struct batadv_priv *bat_priv = file->private_data;
+       struct batadv_priv_debug_log *debug_log = bat_priv->debug_log;
+       int error, i = 0;
+       char *char_addr;
+       char c;
+
+       if ((file->f_flags & O_NONBLOCK) && batadv_log_empty(debug_log))
+               return -EAGAIN;
+
+       if (!buf)
+               return -EINVAL;
+
+       if (count == 0)
+               return 0;
+
+       if (!access_ok(VERIFY_WRITE, buf, count))
+               return -EFAULT;
+
+       error = wait_event_interruptible(debug_log->queue_wait,
+                                        (!batadv_log_empty(debug_log)));
+
+       if (error)
+               return error;
+
+       spin_lock_bh(&debug_log->lock);
+
+       while ((!error) && (i < count) &&
+              (debug_log->log_start != debug_log->log_end)) {
+               char_addr = batadv_log_char_addr(debug_log,
+                                                debug_log->log_start);
+               c = *char_addr;
+
+               debug_log->log_start++;
+
+               spin_unlock_bh(&debug_log->lock);
+
+               error = __put_user(c, buf);
+
+               spin_lock_bh(&debug_log->lock);
+
+               buf++;
+               i++;
+       }
+
+       spin_unlock_bh(&debug_log->lock);
+
+       if (!error)
+               return i;
+
+       return error;
+}
+
+static unsigned int batadv_log_poll(struct file *file, poll_table *wait)
+{
+       struct batadv_priv *bat_priv = file->private_data;
+       struct batadv_priv_debug_log *debug_log = bat_priv->debug_log;
+
+       poll_wait(file, &debug_log->queue_wait, wait);
+
+       if (!batadv_log_empty(debug_log))
+               return POLLIN | POLLRDNORM;
+
+       return 0;
+}
+
+static const struct file_operations batadv_log_fops = {
+       .open           = batadv_log_open,
+       .release        = batadv_log_release,
+       .read           = batadv_log_read,
+       .poll           = batadv_log_poll,
+       .llseek         = no_llseek,
+};
+
+int batadv_debug_log_setup(struct batadv_priv *bat_priv)
+{
+       struct dentry *d;
+
+       if (!bat_priv->debug_dir)
+               goto err;
+
+       bat_priv->debug_log = kzalloc(sizeof(*bat_priv->debug_log), GFP_ATOMIC);
+       if (!bat_priv->debug_log)
+               goto err;
+
+       spin_lock_init(&bat_priv->debug_log->lock);
+       init_waitqueue_head(&bat_priv->debug_log->queue_wait);
+
+       d = debugfs_create_file("log", S_IFREG | S_IRUSR,
+                               bat_priv->debug_dir, bat_priv,
+                               &batadv_log_fops);
+       if (!d)
+               goto err;
+
+       return 0;
+
+err:
+       return -ENOMEM;
+}
+
+void batadv_debug_log_cleanup(struct batadv_priv *bat_priv)
+{
+       kfree(bat_priv->debug_log);
+       bat_priv->debug_log = NULL;
+}
diff --git a/net/batman-adv/log.h b/net/batman-adv/log.h
new file mode 100644 (file)
index 0000000..9948e56
--- /dev/null
@@ -0,0 +1,109 @@
+/* Copyright (C) 2007-2016  B.A.T.M.A.N. contributors:
+ *
+ * Marek Lindner, Simon Wunderlich
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef _NET_BATMAN_ADV_LOG_H_
+#define _NET_BATMAN_ADV_LOG_H_
+
+#include "main.h"
+
+#include <linux/bitops.h>
+#include <linux/compiler.h>
+#include <linux/printk.h>
+
+#ifdef CONFIG_BATMAN_ADV_DEBUG
+
+int batadv_debug_log_setup(struct batadv_priv *bat_priv);
+void batadv_debug_log_cleanup(struct batadv_priv *bat_priv);
+
+#else
+
+static inline int batadv_debug_log_setup(struct batadv_priv *bat_priv)
+{
+       return 0;
+}
+
+static inline void batadv_debug_log_cleanup(struct batadv_priv *bat_priv)
+{
+}
+
+#endif
+
+/**
+ * enum batadv_dbg_level - available log levels
+ * @BATADV_DBG_BATMAN: OGM and TQ computations related messages
+ * @BATADV_DBG_ROUTES: route added / changed / deleted
+ * @BATADV_DBG_TT: translation table messages
+ * @BATADV_DBG_BLA: bridge loop avoidance messages
+ * @BATADV_DBG_DAT: ARP snooping and DAT related messages
+ * @BATADV_DBG_NC: network coding related messages
+ * @BATADV_DBG_MCAST: multicast related messages
+ * @BATADV_DBG_ALL: the union of all the above log levels
+ */
+enum batadv_dbg_level {
+       BATADV_DBG_BATMAN = BIT(0),
+       BATADV_DBG_ROUTES = BIT(1),
+       BATADV_DBG_TT     = BIT(2),
+       BATADV_DBG_BLA    = BIT(3),
+       BATADV_DBG_DAT    = BIT(4),
+       BATADV_DBG_NC     = BIT(5),
+       BATADV_DBG_MCAST  = BIT(6),
+       BATADV_DBG_ALL    = 127,
+};
+
+#ifdef CONFIG_BATMAN_ADV_DEBUG
+int batadv_debug_log(struct batadv_priv *bat_priv, const char *fmt, ...)
+__printf(2, 3);
+
+/* possibly ratelimited debug output */
+#define _batadv_dbg(type, bat_priv, ratelimited, fmt, arg...)  \
+       do {                                                    \
+               if (atomic_read(&bat_priv->log_level) & type && \
+                   (!ratelimited || net_ratelimit()))          \
+                       batadv_debug_log(bat_priv, fmt, ## arg);\
+       }                                                       \
+       while (0)
+#else /* !CONFIG_BATMAN_ADV_DEBUG */
+__printf(4, 5)
+static inline void _batadv_dbg(int type __always_unused,
+                              struct batadv_priv *bat_priv __always_unused,
+                              int ratelimited __always_unused,
+                              const char *fmt __always_unused, ...)
+{
+}
+#endif
+
+#define batadv_dbg(type, bat_priv, arg...) \
+       _batadv_dbg(type, bat_priv, 0, ## arg)
+#define batadv_dbg_ratelimited(type, bat_priv, arg...) \
+       _batadv_dbg(type, bat_priv, 1, ## arg)
+
+#define batadv_info(net_dev, fmt, arg...)                              \
+       do {                                                            \
+               struct net_device *_netdev = (net_dev);                 \
+               struct batadv_priv *_batpriv = netdev_priv(_netdev);    \
+               batadv_dbg(BATADV_DBG_ALL, _batpriv, fmt, ## arg);      \
+               pr_info("%s: " fmt, _netdev->name, ## arg);             \
+       } while (0)
+#define batadv_err(net_dev, fmt, arg...)                               \
+       do {                                                            \
+               struct net_device *_netdev = (net_dev);                 \
+               struct batadv_priv *_batpriv = netdev_priv(_netdev);    \
+               batadv_dbg(BATADV_DBG_ALL, _batpriv, fmt, ## arg);      \
+               pr_err("%s: " fmt, _netdev->name, ## arg);              \
+       } while (0)
+
+#endif /* _NET_BATMAN_ADV_LOG_H_ */
index c5a7cab0f5678c89be74136a52590259a22be443..05e559c86e8223b228439dff3b30ca8cab8d6461 100644 (file)
@@ -33,6 +33,7 @@
 #include <linux/list.h>
 #include <linux/module.h>
 #include <linux/netdevice.h>
+#include <linux/printk.h>
 #include <linux/rculist.h>
 #include <linux/rcupdate.h>
 #include <linux/seq_file.h>
@@ -52,6 +53,7 @@
 #include "gateway_common.h"
 #include "hard-interface.h"
 #include "icmp_socket.h"
+#include "log.h"
 #include "multicast.h"
 #include "network-coding.h"
 #include "originator.h"
index 3ec62853e51970e21f1465376e9ee9e05047902d..857fb5a4e37a451e4e655f892ffca6c13b298beb 100644 (file)
@@ -175,7 +175,6 @@ enum batadv_uev_type {
 
 /* Kernel headers */
 
-#include <linux/atomic.h>
 #include <linux/bitops.h> /* for packet.h */
 #include <linux/compiler.h>
 #include <linux/cpumask.h>
@@ -183,13 +182,13 @@ enum batadv_uev_type {
 #include <linux/if_ether.h> /* for packet.h */
 #include <linux/if_vlan.h>
 #include <linux/jiffies.h>
-#include <linux/netdevice.h>
 #include <linux/percpu.h>
-#include <linux/printk.h>
 #include <linux/types.h>
 
 #include "types.h"
 
+struct net_device;
+struct packet_type;
 struct seq_file;
 struct sk_buff;
 
@@ -218,70 +217,6 @@ batadv_recv_handler_register(u8 packet_type,
 void batadv_recv_handler_unregister(u8 packet_type);
 __be32 batadv_skb_crc32(struct sk_buff *skb, u8 *payload_ptr);
 
-/**
- * enum batadv_dbg_level - available log levels
- * @BATADV_DBG_BATMAN: OGM and TQ computations related messages
- * @BATADV_DBG_ROUTES: route added / changed / deleted
- * @BATADV_DBG_TT: translation table messages
- * @BATADV_DBG_BLA: bridge loop avoidance messages
- * @BATADV_DBG_DAT: ARP snooping and DAT related messages
- * @BATADV_DBG_NC: network coding related messages
- * @BATADV_DBG_MCAST: multicast related messages
- * @BATADV_DBG_ALL: the union of all the above log levels
- */
-enum batadv_dbg_level {
-       BATADV_DBG_BATMAN = BIT(0),
-       BATADV_DBG_ROUTES = BIT(1),
-       BATADV_DBG_TT     = BIT(2),
-       BATADV_DBG_BLA    = BIT(3),
-       BATADV_DBG_DAT    = BIT(4),
-       BATADV_DBG_NC     = BIT(5),
-       BATADV_DBG_MCAST  = BIT(6),
-       BATADV_DBG_ALL    = 127,
-};
-
-#ifdef CONFIG_BATMAN_ADV_DEBUG
-int batadv_debug_log(struct batadv_priv *bat_priv, const char *fmt, ...)
-__printf(2, 3);
-
-/* possibly ratelimited debug output */
-#define _batadv_dbg(type, bat_priv, ratelimited, fmt, arg...)  \
-       do {                                                    \
-               if (atomic_read(&bat_priv->log_level) & type && \
-                   (!ratelimited || net_ratelimit()))          \
-                       batadv_debug_log(bat_priv, fmt, ## arg);\
-       }                                                       \
-       while (0)
-#else /* !CONFIG_BATMAN_ADV_DEBUG */
-__printf(4, 5)
-static inline void _batadv_dbg(int type __always_unused,
-                              struct batadv_priv *bat_priv __always_unused,
-                              int ratelimited __always_unused,
-                              const char *fmt __always_unused, ...)
-{
-}
-#endif
-
-#define batadv_dbg(type, bat_priv, arg...) \
-       _batadv_dbg(type, bat_priv, 0, ## arg)
-#define batadv_dbg_ratelimited(type, bat_priv, arg...) \
-       _batadv_dbg(type, bat_priv, 1, ## arg)
-
-#define batadv_info(net_dev, fmt, arg...)                              \
-       do {                                                            \
-               struct net_device *_netdev = (net_dev);                 \
-               struct batadv_priv *_batpriv = netdev_priv(_netdev);    \
-               batadv_dbg(BATADV_DBG_ALL, _batpriv, fmt, ## arg);      \
-               pr_info("%s: " fmt, _netdev->name, ## arg);             \
-       } while (0)
-#define batadv_err(net_dev, fmt, arg...)                               \
-       do {                                                            \
-               struct net_device *_netdev = (net_dev);                 \
-               struct batadv_priv *_batpriv = netdev_priv(_netdev);    \
-               batadv_dbg(BATADV_DBG_ALL, _batpriv, fmt, ## arg);      \
-               pr_err("%s: " fmt, _netdev->name, ## arg);              \
-       } while (0)
-
 /**
  * batadv_compare_eth - Compare two not u16 aligned Ethernet addresses
  * @data1: Pointer to a six-byte array containing the Ethernet address
index 0e7d78f4f1b838ba841263b6dfc43aace09295d9..cc915073a753922c0bb61b577ad651bbde168e59 100644 (file)
@@ -55,6 +55,7 @@
 
 #include "hard-interface.h"
 #include "hash.h"
+#include "log.h"
 #include "packet.h"
 #include "translation-table.h"
 #include "tvlv.h"
index d0383dea6440dd72118ea94bb728c9c32b224e0b..293ef4ffd4e1650318020f9e6772bcf58a9e1300 100644 (file)
@@ -51,6 +51,7 @@
 
 #include "hard-interface.h"
 #include "hash.h"
+#include "log.h"
 #include "originator.h"
 #include "packet.h"
 #include "routing.h"
index 592cbda283e373204b9564356e86b037a2d0a293..8ad17ad477e41d765c4dc2bb555309d2bcb9ecf7 100644 (file)
@@ -40,6 +40,7 @@
 #include "gateway_client.h"
 #include "hard-interface.h"
 #include "hash.h"
+#include "log.h"
 #include "multicast.h"
 #include "network-coding.h"
 #include "routing.h"
index b9c7325ea0aa1c36fc04e90ed3eb5a3c5283b56c..a5b53a3fc2ba050145b3b10a49bde267c548f576 100644 (file)
@@ -41,6 +41,7 @@
 #include "fragmentation.h"
 #include "hard-interface.h"
 #include "icmp_socket.h"
+#include "log.h"
 #include "network-coding.h"
 #include "originator.h"
 #include "packet.h"
index 4e49454dfed4542736d789a2878f34a4a1cfe67b..3a59df26ee322ae75120bffe2edf3904dc387a21 100644 (file)
@@ -42,6 +42,7 @@
 #include "fragmentation.h"
 #include "gateway_client.h"
 #include "hard-interface.h"
+#include "log.h"
 #include "network-coding.h"
 #include "originator.h"
 #include "routing.h"
index 6244a9a336d027737ed01a95693c0f053280ba8f..1a7942ddf7300d49287f55db08bb946c7fb039b4 100644 (file)
@@ -43,6 +43,7 @@
 #include "gateway_client.h"
 #include "gateway_common.h"
 #include "hard-interface.h"
+#include "log.h"
 #include "network-coding.h"
 #include "packet.h"
 #include "soft-interface.h"
index 5c3cf7ffc77e38df5e9bc60e5cae4a1af168d391..53458d6fb87dc351ca17927250c648c3885d971f 100644 (file)
@@ -48,6 +48,7 @@
 #include "bridge_loop_avoidance.h"
 #include "hard-interface.h"
 #include "hash.h"
+#include "log.h"
 #include "multicast.h"
 #include "originator.h"
 #include "packet.h"