linux-can.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Varka Bhadram <varkabhadram@gmail.com>
To: Matthias Klein <matthias.klein@optimeas.de>,
	wg@grandegger.com, mkl@pengutronix.de, linux-can@vger.kernel.org,
	support@karo-electronics.de
Cc: bigeasy@linutronix.de
Subject: Re: [PATCH V2 5/5] net: can: flexcan: fix for wrong TX error count behaviour on i.MX53
Date: Mon, 28 Jul 2014 12:09:17 +0530	[thread overview]
Message-ID: <53D5F015.30703@gmail.com> (raw)
In-Reply-To: <1406529268-20126-5-git-send-email-matthias.klein@optimeas.de>

On 07/28/2014 12:04 PM, Matthias Klein wrote:
> Once the CAN-bus is open and a packet is sent, the controller switches
> into the PASSIVE state and the TX error count goes to 0x80. When the
> bus is closed and the packet gets acknowledged the controller switches
> to ERROR-WARNING state and the TX error counter is decremented to 0x7f.
> Everything OK so far.
>
> When now the bus is open again and a packet is sent, the controller
> switches into PASSIVE state and sets the TX error count to 0x86.
> When now the bus is closed the TX error is decremented to 0x85, but
> the state does not change to ERROR-WARNING. Now with each successfully
> transfered packet (in PASSIVE state!) the TX error counter is
> decremented, and when the TX error counter reaches 0x7f the controller
> switched back into ERROR-WARNING state.
>
> This fix sets the TX error count back to zero when entering the
> ERROR-WARNING state (after the first retransfered packet is acknowledged).
>
> Signed-off-by: Matthias Klein <matthias.klein@optimeas.de>
> ---
>   drivers/net/can/flexcan.c | 30 ++++++++++++++++++++++++++++++
>   1 file changed, 30 insertions(+)
>
> diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c
> index b77f1da..f9fefcb 100644
> --- a/drivers/net/can/flexcan.c
> +++ b/drivers/net/can/flexcan.c
> @@ -479,6 +479,34 @@ static int flexcan_poll_bus_err(struct net_device *dev, u32 reg_esr)
>   	return 1;
>   }
>   
> +static void flexcan_reset_err_reg(struct flexcan_priv *priv)
> +{
> +	struct flexcan_regs __iomem *regs = priv->base;
> +
> +	/*
> +	 * The reset of the error counter is ugly but I don't see any other way.
> +	 * Open the CAN bus, send packet => HW goes to ERR-pasive, TX-err
> +	 * counter is around 128 (maybe 129). Close the CAN-Bus, the TX-err
> +	 * counter drops down to somewhere between 126 … 127, HW goes to
> +	 * ERR-Warning, everything is fine.
> +	 *
> +	 * Now: Repeat the above procedure. What happens is that on send the
> +	 * TX-err increases to around 134…136 and on connect it drops to
> +	 * around 130. Occording to ESR the HW is still in passive mode _but_ it
> +	 * is possible send packets - that means can send packets but has no
> +	 * clue about it.
> +	 * To get a consistent behavior here, the error counter are reset so we
> +	 * fall back to Err-Active mode and the second "can send on open bus"
> +	 * behaves just like the first one.
> +	 */
> +

networking comment style...?

/* bla bla
  * bla
  */


-- 
Regards,
Varka Bhadram.


  reply	other threads:[~2014-07-28  6:40 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-28  6:34 [PATCH V2 1/5] net: can: flexcan: provide propper return code in ISR Matthias Klein
2014-07-28  6:34 ` [PATCH V2 2/5] net: can: flexcan: disable error interrupts in non ERR-Active state Matthias Klein
2014-07-28  6:40   ` Varka Bhadram
2014-07-28  6:34 ` [PATCH V2 3/5] net: can: flexcan: handle state passive -> warning transition Matthias Klein
2014-07-28  6:34 ` [PATCH V2 4/5] can: flexcan: fix transition from and to freeze mode in chip_{,un}freeze Matthias Klein
2014-07-28  6:38   ` Marc Kleine-Budde
2014-07-28  6:34 ` [PATCH V2 5/5] net: can: flexcan: fix for wrong TX error count behaviour on i.MX53 Matthias Klein
2014-07-28  6:39   ` Varka Bhadram [this message]
2014-07-28  7:05   ` Marc Kleine-Budde
2014-07-28  7:08     ` Sebastian Andrzej Siewior
2014-07-28  6:36 ` [PATCH V2 1/5] net: can: flexcan: provide propper return code in ISR Varka Bhadram

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=53D5F015.30703@gmail.com \
    --to=varkabhadram@gmail.com \
    --cc=bigeasy@linutronix.de \
    --cc=linux-can@vger.kernel.org \
    --cc=matthias.klein@optimeas.de \
    --cc=mkl@pengutronix.de \
    --cc=support@karo-electronics.de \
    --cc=wg@grandegger.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).