diff options
Diffstat (limited to 'xpp/card_global.c')
-rw-r--r-- | xpp/card_global.c | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/xpp/card_global.c b/xpp/card_global.c index 17e94ef..c2c7022 100644 --- a/xpp/card_global.c +++ b/xpp/card_global.c @@ -30,7 +30,7 @@ static const char rcsid[] = "$Id$"; -DEF_PARM(charp,initdir, "/usr/share/zaptel", "The directory of card initialization scripts"); +DEF_PARM(charp,initdir, "/usr/share/zaptel", 0600, "The directory of card initialization scripts"); extern int print_dbg; static bool pcm_valid(xpd_t *xpd, xpacket_t *pack); @@ -226,27 +226,32 @@ HANDLER_DEF(GLOBAL, SYNC_REPLY) HANDLER_DEF(GLOBAL, ERROR_CODE) { - byte errorcode = RPACKET_FIELD(pack, GLOBAL, ERROR_CODE, errorcode); - reg_cmd_t *bad_cmd; - char xpdname[XPD_NAMELEN]; + byte errorcode = RPACKET_FIELD(pack, GLOBAL, ERROR_CODE, errorcode); + reg_cmd_t *bad_cmd; + char tmp_xpdname[XPD_NAMELEN]; + static long rate_limit; BUG_ON(!xbus); + if((rate_limit++ % 5003) > 200) + return 0; if(!xpd) { int xpd_num = XPD_NUM(pack->addr); - snprintf(xpdname, XPD_NAMELEN, "#%d", xpd_num); + snprintf(tmp_xpdname, XPD_NAMELEN, "#%d", xpd_num); } else { - snprintf(xpdname, XPD_NAMELEN, "%s", xpd->xpdname); + snprintf(tmp_xpdname, XPD_NAMELEN, "%s", xpd->xpdname); } - if(!printk_ratelimit()) - return 0; - NOTICE("%s/%s: %s CODE = 0x%X\n", xbus->busname, xpdname, cmd->name, errorcode); + NOTICE("%s/%s: FIRMWARE: %s CODE = 0x%X (rate_limit=%ld)\n", + xbus->busname, tmp_xpdname, cmd->name, errorcode, rate_limit); switch(errorcode) { case 1: bad_cmd = &RPACKET_FIELD(pack, GLOBAL, ERROR_CODE, info.bad_spi_cmd); - dump_packet("BAD_SPI_CMD", pack, 1); + dump_packet("FIRMWARE: BAD_SPI_CMD", pack, 1); + break; + case 0xAB: + dump_packet("FIRMWARE: BAD_PACKET_LEN", pack, 1); break; default: - NOTICE("%s/%s: %s UNKNOWN CODE = 0x%X\n", xbus->busname, xpdname, cmd->name, errorcode); + NOTICE("%s/%s: FIRMWARE: %s UNKNOWN CODE = 0x%X\n", xbus->busname, tmp_xpdname, cmd->name, errorcode); dump_packet("PACKET", pack, 1); } /* |