From 4be023c5e3611babcf97e408966161a189b2dd16 Mon Sep 17 00:00:00 2001 From: wolf Date: Sat, 14 Feb 2009 14:35:38 +0000 Subject: [PATCH] Enable device dev_dbg with CONFIG_CAN_DEBUG_DEVICES The following patch allows to enable CAN device debug messages via CONFIG_CAN_DEBUG_DEVICES and adds some useful dev_dbg() to dev.c, sja1000.c and mscan.c. The old MSCAN driver used dev_dbg() the heavy way, e.g. printing messages for each message sent and received. I think that's only useful for development. Signed-off-by: Wolfgang Grandegger git-svn-id: svn://svn.berlios.de//socketcan/trunk@942 030b6a49-0b11-0410-94ab-b0dab22257f2 --- kernel/2.6/Makefile.common | 4 ++++ kernel/2.6/drivers/net/can/Makefile | 4 ++++ kernel/2.6/drivers/net/can/dev.c | 3 +++ kernel/2.6/drivers/net/can/mscan/Makefile | 4 ++++ kernel/2.6/drivers/net/can/mscan/mscan.c | 12 +++--------- kernel/2.6/drivers/net/can/sja1000/Makefile | 4 ++++ kernel/2.6/drivers/net/can/sja1000/sja1000.c | 13 ++++++++++--- 7 files changed, 32 insertions(+), 12 deletions(-) diff --git a/kernel/2.6/Makefile.common b/kernel/2.6/Makefile.common index 4ffa944..9e0aace 100644 --- a/kernel/2.6/Makefile.common +++ b/kernel/2.6/Makefile.common @@ -11,4 +11,8 @@ ifneq ($(CONFIG_CAN_CALC_BITTIMING),n) EXTRA_CFLAGS += -DCONFIG_CAN_CALC_BITTIMING endif +ifeq ($(CONFIG_CAN_DEBUG_DEVICES),y) +EXTRA_CFLAGS += -DCONFIG_CAN_DEBUG_DEVICES +endif + endif diff --git a/kernel/2.6/drivers/net/can/Makefile b/kernel/2.6/drivers/net/can/Makefile index 3f45b30..7282c7e 100644 --- a/kernel/2.6/drivers/net/can/Makefile +++ b/kernel/2.6/drivers/net/can/Makefile @@ -44,4 +44,8 @@ obj-$(CONFIG_CAN_MSCAN_OLD) += old/mscan/ obj-$(CONFIG_CAN_CCAN_OLD) += old/ccan/ obj-$(CONFIG_CAN_MCP251X) += mcp251x.o +ifeq ($(CONFIG_CAN_DEBUG_DEVICES),y) +EXTRA_CFLAGS += -DDEBUG +endif + endif diff --git a/kernel/2.6/drivers/net/can/dev.c b/kernel/2.6/drivers/net/can/dev.c index bebd547..5876cd4 100644 --- a/kernel/2.6/drivers/net/can/dev.c +++ b/kernel/2.6/drivers/net/can/dev.c @@ -465,6 +465,7 @@ int can_restart_now(struct net_device *dev) netif_carrier_on(dev); + dev_dbg(ND2D(dev), "restarted\n"); priv->can_stats.restarts++; /* send restart message upstream */ @@ -507,6 +508,8 @@ void can_bus_off(struct net_device *dev) { struct can_priv *priv = netdev_priv(dev); + dev_dbg(ND2D(dev), "bus-off\n"); + netif_carrier_off(dev); if (priv->restart_ms > 0 && !priv->timer.expires) { diff --git a/kernel/2.6/drivers/net/can/mscan/Makefile b/kernel/2.6/drivers/net/can/mscan/Makefile index d550ce2..26f5e9b 100644 --- a/kernel/2.6/drivers/net/can/mscan/Makefile +++ b/kernel/2.6/drivers/net/can/mscan/Makefile @@ -19,4 +19,8 @@ obj-$(CONFIG_CAN_MPC52XX) += mscan-mpc52xx.o mscan-mpc52xx-objs := mscan.o mpc52xx_can.o +ifeq ($(CONFIG_CAN_DEBUG_DEVICES),y) +EXTRA_CFLAGS += -DDEBUG +endif + endif diff --git a/kernel/2.6/drivers/net/can/mscan/mscan.c b/kernel/2.6/drivers/net/can/mscan/mscan.c index 15df101..4c2b46d 100644 --- a/kernel/2.6/drivers/net/can/mscan/mscan.c +++ b/kernel/2.6/drivers/net/can/mscan/mscan.c @@ -232,7 +232,6 @@ static int mscan_start_xmit(struct sk_buff *skb, struct net_device *dev) if (frame->can_dlc > 8) return -EINVAL; - dev_dbg(ND2D(dev), "%s\n", __func__); out_8(®s->cantier, 0); i = ~priv->tx_active & MSCAN_TXE; @@ -258,8 +257,6 @@ static int mscan_start_xmit(struct sk_buff *skb, struct net_device *dev) rtr = frame->can_id & CAN_RTR_FLAG; if (frame->can_id & CAN_EFF_FLAG) { - dev_dbg(ND2D(dev), "sending extended frame\n"); - can_id = (frame->can_id & CAN_EFF_MASK) << 1; if (rtr) can_id |= 1; @@ -268,7 +265,6 @@ static int mscan_start_xmit(struct sk_buff *skb, struct net_device *dev) can_id >>= 16; can_id = (can_id & 0x7) | ((can_id << 2) & 0xffe0) | (3 << 3); } else { - dev_dbg(ND2D(dev), "sending standard frame\n"); can_id = (frame->can_id & CAN_SFF_MASK) << 5; if (rtr) can_id |= 1 << 4; @@ -396,15 +392,13 @@ static int mscan_rx_poll(struct net_device *dev, int *budget) } } - dev_dbg(ND2D(dev), - "received pkt: id: %u dlc: %u data: ", - frame->can_id, frame->can_dlc); - out_8(®s->canrflg, MSCAN_RXF); dev->last_rx = jiffies; stats->rx_packets++; stats->rx_bytes += frame->can_dlc; } else if (canrflg & MSCAN_ERR_IF) { + dev_dbg(ND2D(dev), "error interrupt (canrflg=%#x)\n", + canrflg); frame->can_id = CAN_ERR_FLAG; if (canrflg & MSCAN_OVRIF) { @@ -597,7 +591,7 @@ static int mscan_do_set_bittiming(struct net_device *dev) BTR1_SET_TSEG2(bt->phase_seg2) | BTR1_SET_SAM(priv->can.ctrlmode & CAN_CTRLMODE_3_SAMPLES)); - dev_info(ND2D(dev), "BTR0=0x%02x BTR1=0x%02x\n", btr0, btr1); + dev_info(ND2D(dev), "setting BTR0=0x%02x BTR1=0x%02x\n", btr0, btr1); out_8(®s->canbtr0, btr0); out_8(®s->canbtr1, btr1); diff --git a/kernel/2.6/drivers/net/can/sja1000/Makefile b/kernel/2.6/drivers/net/can/sja1000/Makefile index bd1f0ab..0998de7 100644 --- a/kernel/2.6/drivers/net/can/sja1000/Makefile +++ b/kernel/2.6/drivers/net/can/sja1000/Makefile @@ -25,4 +25,8 @@ obj-$(CONFIG_CAN_PEAK_PCI) += peak_pci.o obj-$(CONFIG_CAN_PIPCAN) += pipcan.o obj-$(CONFIG_CAN_KVASER_PCI) += kvaser_pci.o +ifeq ($(CONFIG_CAN_DEBUG_DEVICES),y) +EXTRA_CFLAGS += -DDEBUG +endif + endif diff --git a/kernel/2.6/drivers/net/can/sja1000/sja1000.c b/kernel/2.6/drivers/net/can/sja1000/sja1000.c index c25a22a..bb2950f 100644 --- a/kernel/2.6/drivers/net/can/sja1000/sja1000.c +++ b/kernel/2.6/drivers/net/can/sja1000/sja1000.c @@ -221,9 +221,9 @@ static int sja1000_get_state(struct net_device *dev, enum can_state *state) } /* Check state */ if (*state != priv->can.state) - dev_err(ND2D(dev), - "Oops, state mismatch: hard %d != soft %d\n", - *state, priv->can.state); + dev_err(ND2D(dev), + "Oops, state mismatch: hard %d != soft %d\n", + *state, priv->can.state); spin_unlock_irq(&priv->can.irq_lock); return 0; } @@ -421,6 +421,7 @@ static int sja1000_err(struct net_device *dev, uint8_t isrc, uint8_t status) if (isrc & IRQ_DOI) { /* data overrun interrupt */ + dev_dbg(ND2D(dev), "data overrun interrupt\n"); cf->can_id |= CAN_ERR_CRTL; cf->data[1] = CAN_ERR_CRTL_RX_OVERFLOW; priv->can.can_stats.data_overrun++; @@ -430,6 +431,7 @@ static int sja1000_err(struct net_device *dev, uint8_t isrc, uint8_t status) if (isrc & IRQ_EI) { /* error warning interrupt */ priv->can.can_stats.error_warning++; + dev_dbg(ND2D(dev), "error warning interrupt\n"); if (status & SR_BS) { state = CAN_STATE_BUS_OFF; @@ -468,6 +470,7 @@ static int sja1000_err(struct net_device *dev, uint8_t isrc, uint8_t status) } if (isrc & IRQ_EPI) { /* error passive interrupt */ + dev_dbg(ND2D(dev), "error passive interrupt\n"); priv->can.can_stats.error_passive++; if (status & SR_ES) state = CAN_STATE_BUS_PASSIVE; @@ -476,6 +479,7 @@ static int sja1000_err(struct net_device *dev, uint8_t isrc, uint8_t status) } if (isrc & IRQ_ALI) { /* arbitration lost interrupt */ + dev_dbg(ND2D(dev), "arbitration lost interrupt\n"); alc = priv->read_reg(dev, REG_ALC); priv->can.can_stats.arbitration_lost++; cf->can_id |= CAN_ERR_LOSTARB; @@ -570,6 +574,9 @@ out: if (priv->post_irq) priv->post_irq(dev); + if (n >= 20) + dev_dbg(ND2D(dev), "Many messages handled in ISR"); + return (n) ? IRQ_HANDLED : IRQ_NONE; } EXPORT_SYMBOL_GPL(sja1000_interrupt); -- 2.39.2