linux-can.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Oliver Hartkopp <socketcan@hartkopp.net>
To: Dong Aisheng <b29396@freescale.com>
Cc: Marc Kleine-Budde <mkl@pengutronix.de>,
	linux-can@vger.kernel.org, wg@grandegger.com,
	varkabhadram@gmail.com, netdev@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org
Subject: Re: M_CAN message RAM initialization AppNote  - was: Re: [PATCH V3 3/3] can: m_can: workaround for transmit data less than 4 bytes
Date: Thu, 06 Nov 2014 13:33:56 +0100	[thread overview]
Message-ID: <545B6AB4.70003@hartkopp.net> (raw)
In-Reply-To: <20141106080940.GA22964@shlinux1.ap.freescale.net>

On 06.11.2014 09:09, Dong Aisheng wrote:
> On Thu, Nov 06, 2014 at 08:04:17AM +0100, Oliver Hartkopp wrote:


>> To prevent the M_CAN controller detecting checksum errors when
>> reading potentially uninitialized TX message RAM content to transmit
>> CAN frames the TX message RAM has to be written with (any kind of)
>> initial data.
>>
>
> The key point of the issue is that why M_CAN will read potentially uninitialized
> TX message RAM content which should not happen?
> e.g. for our case of the issue, if we sending a no data frame or a less
> than 4 bytes frame, why m_can will read extra 4 bytes uninitialized/unset
> data which seems not reasonable?
>
>  From IP code logic, it will read full 8 bytes of data no matter how many data
> actually to be transfered which is strange.

Yes.

>
> For sending data over 4 bytes, since the Message RAM content will be filled
> with the real data to be transfered so there's no such issue.

E.g. think about the transfer of a CAN FD frame with 32 byte.
When you only fill up content until 28 byte the last four bytes still remain 
uninitialized.

Did you try this 28 byte use-case with an uninitialized TX message RAM ?

cansend can0 123##1001122334566778899AABBCCDDEEFF001122334566778899AABB

To me it looks too risky when we only initialize the first 8 byte.

>
>> ---
>>
>> Then the code should memset() the entire TX FIFO element - and not
>> only the 8 data bytes we are addressing now.
>>
>
> Our IC guy told me the issue only happened on transferring a data size
> of less than 4 bytes and my test also proved that.

'less than'?

So you might try to use 26 bytes too:

cansend can0 123##1001122334566778899AABBCCDDEEFF001122334566778899


> So i'm not sure memset() the entire TX FIFO element is neccesary...

It's no big deal - so we should be defensive here.
And memset() is not working as Marc pointed out in another mail.

So we would need to loop with

	m_can_fifo_write(priv, 0, M_CAN_FIFO_DATA(i), 0x0);

>
> Do you think we could keep the current solution firstly and updated later
> if needed?

No :-)

I would like to have all data bytes to be written at startup.

Regards,
Oliver


  reply	other threads:[~2014-11-06 12:34 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-05 13:16 [PATCH V3 1/3] can: add can_is_canfd_skb() API Dong Aisheng
2014-11-05 13:16 ` [PATCH V3 2/3] can: m_can: update to support CAN FD features Dong Aisheng
2014-11-05 14:31   ` Marc Kleine-Budde
2014-11-05 14:42     ` Oliver Hartkopp
2014-11-05 13:16 ` [PATCH V3 3/3] can: m_can: workaround for transmit data less than 4 bytes Dong Aisheng
2014-11-05 14:29   ` Marc Kleine-Budde
2014-11-05 18:15     ` M_CAN message RAM initialization AppNote - was: " Oliver Hartkopp
2014-11-06  1:57       ` Dong Aisheng
2014-11-06  7:04         ` Oliver Hartkopp
2014-11-06  8:09           ` Dong Aisheng
2014-11-06 12:33             ` Oliver Hartkopp [this message]
2014-11-06 12:47               ` Marc Kleine-Budde
     [not found]                 ` <545BA039.7080108@hartkopp.net>
2014-11-07  8:15                   ` Dong Aisheng
2015-02-05 19:04                   ` new M_CAN IP rev 3.2.x documentation available - was: Re: M_CAN message RAM initialization AppNote Oliver Hartkopp
2014-11-07  8:40                 ` M_CAN message RAM initialization AppNote - was: Re: [PATCH V3 3/3] can: m_can: workaround for transmit data less than 4 bytes Dong Aisheng
2014-11-07  8:34               ` Dong Aisheng
2014-11-06  9:00           ` Marc Kleine-Budde
2014-11-05 16:22 ` [PATCH V3 1/3] can: add can_is_canfd_skb() API Eric Dumazet
2014-11-05 17:33   ` Oliver Hartkopp
2014-11-06  1:52     ` Dong Aisheng

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=545B6AB4.70003@hartkopp.net \
    --to=socketcan@hartkopp.net \
    --cc=b29396@freescale.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-can@vger.kernel.org \
    --cc=mkl@pengutronix.de \
    --cc=netdev@vger.kernel.org \
    --cc=varkabhadram@gmail.com \
    --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).