@ -14,6 +14,7 @@
# 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>
@ -223,10 +224,14 @@ get_appl(struct gigaset_capi_ctr *iif, u16 appl)
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 ) {
@ -2058,12 +2063,6 @@ static void do_reset_b3_req(struct gigaset_capi_ctr *iif,
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
*/
@ -2073,8 +2072,7 @@ static void do_unsupported(struct gigaset_capi_ctr *iif,
{
/* 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 ) ;
}
@ -2085,11 +2083,9 @@ static void do_nothing(struct gigaset_capi_ctr *iif,
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 ) ;
}