#include "gigaset.h"
 #include <linux/proc_fs.h>
 #include <linux/seq_file.h>
+#include <linux/ratelimit.h>
 #include <linux/isdn/capilli.h>
 #include <linux/isdn/capicmd.h>
 #include <linux/isdn/capiutil.h>
 static inline void dump_cmsg(enum debuglevel level, const char *tag, _cmsg *p)
 {
 #ifdef CONFIG_GIGASET_DEBUG
+       /* dump at most 20 messages in 20 secs */
+       static DEFINE_RATELIMIT_STATE(msg_dump_ratelimit, 20 * HZ, 20);
        _cdebbuf *cdb;
 
        if (!(gigaset_debuglevel & level))
                return;
+       if (!___ratelimit(&msg_dump_ratelimit, tag))
+               return;
 
        cdb = capi_cmsg2str(p);
        if (cdb) {
                  CapiResetProcedureNotSupportedByCurrentProtocol);
 }
 
-/*
- * dump unsupported/ignored messages at most twice per minute,
- * some apps send those very frequently
- */
-static unsigned long ignored_msg_dump_time;
-
 /*
  * unsupported CAPI message handler
  */
 {
        /* decode message */
        capi_message2cmsg(&iif->acmsg, skb->data);
-       if (printk_timed_ratelimit(&ignored_msg_dump_time, 30 * 1000))
-               dump_cmsg(DEBUG_CMD, __func__, &iif->acmsg);
+       dump_cmsg(DEBUG_CMD, __func__, &iif->acmsg);
        send_conf(iif, ap, skb, CapiMessageNotSupportedInCurrentState);
 }
 
                       struct gigaset_capi_appl *ap,
                       struct sk_buff *skb)
 {
-       if (printk_timed_ratelimit(&ignored_msg_dump_time, 30 * 1000)) {
-               /* decode message */
-               capi_message2cmsg(&iif->acmsg, skb->data);
-               dump_cmsg(DEBUG_CMD, __func__, &iif->acmsg);
-       }
+       /* decode message */
+       capi_message2cmsg(&iif->acmsg, skb->data);
+       dump_cmsg(DEBUG_CMD, __func__, &iif->acmsg);
        dev_kfree_skb_any(skb);
 }