From: Oliver Hartkopp <socketcan@hartkopp.net>
To: Marc Kleine-Budde <mkl@pengutronix.de>,
Dong Aisheng <b29396@freescale.com>
Cc: linux-can@vger.kernel.org, wg@grandegger.com,
varkabhadram@gmail.com, netdev@vger.kernel.org,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 7/7] can: m_can: workaround for transmit data less than 4 bytes
Date: Tue, 04 Nov 2014 14:13:30 +0100 [thread overview]
Message-ID: <5458D0FA.1040504@hartkopp.net> (raw)
In-Reply-To: <5458AB65.7000500@pengutronix.de>
On 04.11.2014 11:33, Marc Kleine-Budde wrote:
> On 11/04/2014 10:27 AM, Dong Aisheng wrote:
>> + /* We meet an IC issue that we have to write the full 8
>
> At least on the *insert SoC name here*, an issue with the Message RAM
> was discovered. Sending CAN frames with dlc less than 4 bytes will lead
> to bit errors, when the first 8 bytes of the Message RAM have not been
> initialized (i.e. written to). To work around this issue, the first 8
> bytes are initialized here.
Yes. Also put the current IP revision (3.0.x) into the comment.
Did inform the Bosch guys from this issue - or is it already in some errata sheet?
>
>> + * bytes (whatever value for the second word) in Message RAM to
>> + * avoid bit error for transmit data less than 4 bytes at the first
>> + * time. By initializing the first 8 bytes of tx buffer before using
>> + * it can avoid such issue.
>> + */
>> + m_can_fifo_write(priv, 0, M_CAN_FIFO_DATA(0), 0x0);
>> + m_can_fifo_write(priv, 0, M_CAN_FIFO_DATA(1), 0x0);
>> +
>> m_can_config_endisable(priv, false);
>> }
>
> Can you trigger the issue when sending CAN-FD frames with dlc > 8 && dlc
> < 64?
Just a nitpick:
DLC can just be 0 .. 15
and the length (struct canfd_frame.len) can be from 0 .. 64
See:
http://lxr.free-electrons.com/source/include/uapi/linux/can.h#L83
That's the reason for all these helpers
http://lxr.free-electrons.com/source/drivers/net/can/dev.c#L36
that hide the evil "DLC" from userspace now and make 'len' a usable loop
variable as we were able to use the former dlc for classic CAN :-)
Regards,
Oliver
WARNING: multiple messages have this Message-ID (diff)
From: socketcan@hartkopp.net (Oliver Hartkopp)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 7/7] can: m_can: workaround for transmit data less than 4 bytes
Date: Tue, 04 Nov 2014 14:13:30 +0100 [thread overview]
Message-ID: <5458D0FA.1040504@hartkopp.net> (raw)
In-Reply-To: <5458AB65.7000500@pengutronix.de>
On 04.11.2014 11:33, Marc Kleine-Budde wrote:
> On 11/04/2014 10:27 AM, Dong Aisheng wrote:
>> + /* We meet an IC issue that we have to write the full 8
>
> At least on the *insert SoC name here*, an issue with the Message RAM
> was discovered. Sending CAN frames with dlc less than 4 bytes will lead
> to bit errors, when the first 8 bytes of the Message RAM have not been
> initialized (i.e. written to). To work around this issue, the first 8
> bytes are initialized here.
Yes. Also put the current IP revision (3.0.x) into the comment.
Did inform the Bosch guys from this issue - or is it already in some errata sheet?
>
>> + * bytes (whatever value for the second word) in Message RAM to
>> + * avoid bit error for transmit data less than 4 bytes at the first
>> + * time. By initializing the first 8 bytes of tx buffer before using
>> + * it can avoid such issue.
>> + */
>> + m_can_fifo_write(priv, 0, M_CAN_FIFO_DATA(0), 0x0);
>> + m_can_fifo_write(priv, 0, M_CAN_FIFO_DATA(1), 0x0);
>> +
>> m_can_config_endisable(priv, false);
>> }
>
> Can you trigger the issue when sending CAN-FD frames with dlc > 8 && dlc
> < 64?
Just a nitpick:
DLC can just be 0 .. 15
and the length (struct canfd_frame.len) can be from 0 .. 64
See:
http://lxr.free-electrons.com/source/include/uapi/linux/can.h#L83
That's the reason for all these helpers
http://lxr.free-electrons.com/source/drivers/net/can/dev.c#L36
that hide the evil "DLC" from userspace now and make 'len' a usable loop
variable as we were able to use the former dlc for classic CAN :-)
Regards,
Oliver
next prev parent reply other threads:[~2014-11-04 13:13 UTC|newest]
Thread overview: 79+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-29 10:45 [PATCH 1/7] can: m_can: fix possible sleep in napi poll Dong Aisheng
2014-10-29 10:45 ` Dong Aisheng
2014-10-29 10:45 ` Dong Aisheng
2014-10-29 10:45 ` [PATCH 2/7] can: m_can: fix the incorrect error messages Dong Aisheng
2014-10-29 10:45 ` Dong Aisheng
2014-10-29 10:45 ` Dong Aisheng
2014-11-03 16:25 ` Marc Kleine-Budde
2014-11-03 16:25 ` Marc Kleine-Budde
2014-10-29 10:45 ` [PATCH 3/7] can: m_can: add .ndo_change_mtu function Dong Aisheng
2014-10-29 10:45 ` Dong Aisheng
2014-10-29 10:45 ` Dong Aisheng
2014-11-03 16:49 ` Marc Kleine-Budde
2014-11-03 16:49 ` Marc Kleine-Budde
2014-10-29 10:45 ` [PATCH 4/7] can: m_can: add a bit delay after setting CCCR_INIT bit Dong Aisheng
2014-10-29 10:45 ` Dong Aisheng
2014-10-29 10:45 ` Dong Aisheng
2014-11-03 16:52 ` Marc Kleine-Budde
2014-11-03 16:52 ` Marc Kleine-Budde
2014-10-29 10:45 ` [PATCH 5/7] can: clear ctrlmode when close candev Dong Aisheng
2014-10-29 10:45 ` Dong Aisheng
2014-10-29 10:45 ` Dong Aisheng
2014-11-03 16:28 ` Marc Kleine-Budde
2014-11-03 16:28 ` Marc Kleine-Budde
2014-11-03 16:28 ` Marc Kleine-Budde
2014-11-03 18:25 ` Oliver Hartkopp
2014-11-03 18:25 ` Oliver Hartkopp
2014-11-03 18:25 ` Oliver Hartkopp
2014-11-03 20:47 ` Marc Kleine-Budde
2014-11-03 20:47 ` Marc Kleine-Budde
2014-11-04 8:27 ` Dong Aisheng
2014-11-04 8:27 ` Dong Aisheng
2014-11-04 8:27 ` Dong Aisheng
2014-10-29 10:45 ` [PATCH 6/7] can: m_can: update to support CAN FD features Dong Aisheng
2014-10-29 10:45 ` Dong Aisheng
2014-10-29 10:45 ` Dong Aisheng
2014-10-29 19:21 ` Oliver Hartkopp
2014-10-29 19:21 ` Oliver Hartkopp
2014-10-30 2:42 ` Dong Aisheng
2014-10-30 2:42 ` Dong Aisheng
2014-10-30 2:42 ` Dong Aisheng
2014-10-30 20:32 ` Oliver Hartkopp
2014-10-30 20:32 ` Oliver Hartkopp
2014-11-04 7:12 ` Dong Aisheng
2014-11-04 7:12 ` Dong Aisheng
2014-10-29 10:45 ` [PATCH 7/7] can: m_can: workaround for transmit data less than 4 bytes Dong Aisheng
2014-10-29 10:45 ` Dong Aisheng
2014-10-29 10:45 ` Dong Aisheng
2014-11-03 16:48 ` Marc Kleine-Budde
2014-11-03 16:48 ` Marc Kleine-Budde
2014-11-04 8:25 ` Dong Aisheng
2014-11-04 8:25 ` Dong Aisheng
2014-11-04 8:25 ` Dong Aisheng
2014-11-04 9:22 ` Marc Kleine-Budde
2014-11-04 9:22 ` Marc Kleine-Budde
2014-11-04 9:27 ` Dong Aisheng
2014-11-04 9:27 ` Dong Aisheng
2014-11-04 9:27 ` Dong Aisheng
2014-11-04 10:33 ` Marc Kleine-Budde
2014-11-04 10:33 ` Marc Kleine-Budde
2014-11-04 13:13 ` Oliver Hartkopp [this message]
2014-11-04 13:13 ` Oliver Hartkopp
2014-11-04 13:28 ` Marc Kleine-Budde
2014-11-04 13:28 ` Marc Kleine-Budde
2014-11-05 2:07 ` Dong Aisheng
2014-11-05 2:07 ` Dong Aisheng
2014-11-05 2:07 ` Dong Aisheng
2014-11-05 2:03 ` Dong Aisheng
2014-11-05 2:03 ` Dong Aisheng
2014-11-05 2:03 ` Dong Aisheng
2014-11-03 16:24 ` [PATCH 1/7] can: m_can: fix possible sleep in napi poll Marc Kleine-Budde
2014-11-03 16:24 ` Marc Kleine-Budde
2014-11-03 17:02 ` Marc Kleine-Budde
2014-11-03 17:02 ` Marc Kleine-Budde
2014-11-03 18:37 ` Oliver Hartkopp
2014-11-03 18:37 ` Oliver Hartkopp
2014-11-03 20:49 ` Marc Kleine-Budde
2014-11-03 20:49 ` Marc Kleine-Budde
2014-11-03 21:12 ` Oliver Hartkopp
2014-11-03 21:12 ` Oliver Hartkopp
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=5458D0FA.1040504@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.