From: Marc Kleine-Budde <mkl@pengutronix.de>
To: Olivier Sobrie <olivier@sobrie.be>
Cc: Wolfgang Grandegger <wg@grandegger.com>,
linux-can@vger.kernel.org, netdev@vger.kernel.org
Subject: Re: [PATCH] can: kvaser_usb: Add support for Kvaser CAN/USB devices
Date: Thu, 02 Aug 2012 13:56:23 +0200 [thread overview]
Message-ID: <501A6AE7.9060508@pengutronix.de> (raw)
In-Reply-To: <20120802105358.GA23787@hposo>
[-- Attachment #1: Type: text/plain, Size: 4693 bytes --]
On 08/02/2012 12:53 PM, Olivier Sobrie wrote:
>>> 1) With the short circuit:
>>>
>>> I perform the test you described. It showed that the Kvaser passes from
>>> ERROR-WARNING to ERROR-PASSIVE and then BUS-OFF. But after going to the
>>> state BUS-OFF it comes back to ERROR-WARNING.
>>>
>>> can1 20000088 [8] 00 10 90 00 00 00 00 00 ERRORFRAME
>>> can1 20000088 [8] 00 10 90 00 00 00 00 00 ERRORFRAME
>>> can1 20000088 [8] 00 10 90 00 00 00 00 00 ERRORFRAME
>>> can1 20000088 [8] 00 10 90 00 00 00 00 00 ERRORFRAME
>>> can1 20000088 [8] 00 10 90 00 00 00 00 00 ERRORFRAME
>>> can1 20000088 [8] 00 10 90 00 00 00 00 00 ERRORFRAME
>>> can1 20000088 [8] 00 10 90 00 00 00 00 00 ERRORFRAME
>>> can1 20000088 [8] 00 10 90 00 00 00 00 00 ERRORFRAME
>>> can1 20000088 [8] 00 10 90 00 00 00 00 00 ERRORFRAME
>>
>> Why don't we have any rx/tx numbers in the error frame?
>
> Because the hardware seems to not update the tx/rx_errors_count
> fields :-(
Okay.
>> From the hardware point of view the short circuit and open end tests
>> look good. Please adjust the driver to turn off the CAN interface in
>> case of a bus off if restart_ms is 0.
>
> And in the case where restart_ms is not 0? Don't I've to put it off so
> and drop the frame?
No, don't drop the frame. restart-ms != 0 means the controller is
automatically restarted after the specified time (if the controller
supports). Or in your and the at91 case, automatically.
> I actually implemeted it as you said and here is what I observed in
> candump output with restart_ms set to 100 ms:
>
> t0: Short circuit between CAN-H and CAN-L + cansend can1 123#1122
> can1 2000008C [8] 00 04 90 00 00 00 00 00 ERRORFRAME
> controller-problem{rx-error-warning}
> protocol-violation{{tx-recessive-bit-error,error-on-tx}{}}
> bus-error
> can1 2000008C [8] 00 10 90 00 00 00 00 00 ERRORFRAME
> controller-problem{rx-error-passive}
> protocol-violation{{tx-recessive-bit-error,error-on-tx}{}}
> bus-error
> can1 200000C8 [8] 00 00 90 00 00 00 00 00 ERRORFRAME
> protocol-violation{{tx-recessive-bit-error,error-on-tx}{}}
> bus-off
> bus-error
> ...
> can1 2000008C [8] 00 04 90 00 00 00 00 00 ERRORFRAME
> controller-problem{rx-error-warning}
> protocol-violation{{tx-recessive-bit-error,error-on-tx}{}}
> bus-error
> can1 2000008C [8] 00 10 90 00 00 00 00 00 ERRORFRAME
> controller-problem{rx-error-passive}
> protocol-violation{{tx-recessive-bit-error,error-on-tx}{}}
> bus-error
> can1 200000C8 [8] 00 00 90 00 00 00 00 00 ERRORFRAME
> protocol-violation{{tx-recessive-bit-error,error-on-tx}{}}
> bus-off
> bus-error
>
> t1: short circuit removed
> can1 123 [2] 11 22
> can1 20000100 [8] 00 00 00 00 00 00 00 00 ERRORFRAME
> restarted-after-bus-of
>
> The echo coming before the restart looks weird? No?
> Shouldn't we drop the frame once BUF-OFF is reached?
No, I don't think so. But wait for Wolfgang, here's more into error
handling then me.
>
>>>>>>> + if ((priv->can.state == CAN_STATE_ERROR_WARNING) ||
>>>>>>> + (priv->can.state == CAN_STATE_ERROR_PASSIVE)) {
>>>>>>> + cf->data[1] = (txerr > rxerr) ?
>>>>>>> + CAN_ERR_CRTL_TX_PASSIVE
>>>>>>> + : CAN_ERR_CRTL_RX_PASSIVE;
>>
>> Please use CAN_ERR_CRTL_RX_WARNING, CAN_ERR_CRTL_TX_WARNING where
>> appropriate.
> Ok. As the hardware doesn't report good values for txerr and rxerr, I'll
> also remove the tests on txerr and rxerr.
> I observed the same behavior with the original driver.
> I asked Kvaser for this problem. I've to wait before their developer is
> back (same for the GPL issue).
Okay.
>>>>>>> +static int kvaser_usb_get_berr_counter(const struct net_device *netdev,
>>>>>>> + struct can_berr_counter *bec)
>>>>>>> +{
>>>>>>> + struct kvaser_usb_net_priv *priv = netdev_priv(netdev);
>>>>>>> +
>>>>>>> + bec->txerr = priv->bec.txerr;
>>>>>>> + bec->rxerr = priv->bec.rxerr;
>>
>> I think you can copy the struct like this:
>>
>> *bec = priv->bec;
>
> Thanks. I'll remove the function kvaser_usb_get_berr_counter as the
> hardware seems to never report txerr and rxerr.
Sounds reasonable.
BTW: is it possible to update the firmware on these devices?
> I'll look deeper at this driver during the week-end if possible...
Marc
--
Pengutronix e.K. | Marc Kleine-Budde |
Industrial Linux Solutions | Phone: +49-231-2826-924 |
Vertretung West/Dortmund | Fax: +49-5121-206917-5555 |
Amtsgericht Hildesheim, HRA 2686 | http://www.pengutronix.de |
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 262 bytes --]
next prev parent reply other threads:[~2012-08-02 11:56 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-30 5:32 [PATCH] can: kvaser_usb: Add support for Kvaser CAN/USB devices Olivier Sobrie
2012-07-30 11:11 ` Marc Kleine-Budde
2012-07-30 13:33 ` Olivier Sobrie
2012-07-31 9:56 ` Marc Kleine-Budde
2012-07-31 13:06 ` Olivier Sobrie
2012-07-31 13:27 ` Marc Kleine-Budde
2012-08-02 10:53 ` Olivier Sobrie
2012-08-02 11:56 ` Marc Kleine-Budde [this message]
2012-08-02 12:16 ` Olivier Sobrie
2012-08-02 12:33 ` Marc Kleine-Budde
2012-08-02 13:20 ` Olivier Sobrie
2012-08-05 20:43 ` Wolfgang Grandegger
2012-08-06 5:27 ` Olivier Sobrie
2012-07-31 13:43 ` Wolfgang Grandegger
2012-08-05 20:41 ` Wolfgang Grandegger
2012-08-06 5:21 ` [PATCH v2] " Olivier Sobrie
2012-08-06 8:10 ` Oliver Neukum
2012-08-08 5:28 ` Olivier Sobrie
2012-08-07 6:26 ` Wolfgang Grandegger
2012-08-08 6:14 ` Olivier Sobrie
2012-08-08 8:25 ` Wolfgang Grandegger
[not found] ` <5022227F.60800-5Yr1BZd7O62+XT7JhA+gdA@public.gmane.org>
2012-08-08 13:30 ` Olivier Sobrie
2012-08-08 15:02 ` Wolfgang Grandegger
2012-08-13 13:51 ` [PATCH v3] " Olivier Sobrie
2012-09-20 5:06 ` [PATCH v4] " Olivier Sobrie
[not found] ` <1348117587-2905-1-git-send-email-olivier-Ui3EtX6WB9GzQB+pC5nmwQ@public.gmane.org>
2012-09-21 9:54 ` Marc Kleine-Budde
2012-09-22 16:02 ` Wolfgang Grandegger
[not found] ` <505DE106.6060405-5Yr1BZd7O62+XT7JhA+gdA@public.gmane.org>
2012-10-02 7:14 ` Olivier Sobrie
2012-10-02 7:16 ` [PATCH v5] " Olivier Sobrie
2012-11-07 20:29 ` Marc Kleine-Budde
2012-11-20 8:46 ` Olivier Sobrie
2012-11-20 10:59 ` Marc Kleine-Budde
[not found] ` <1343626352-24760-1-git-send-email-olivier-Ui3EtX6WB9GzQB+pC5nmwQ@public.gmane.org>
2012-11-21 7:11 ` [PATCH v6] " Olivier Sobrie
2012-11-22 11:01 ` Marc Kleine-Budde
2012-11-22 15:01 ` Olivier Sobrie
2012-11-22 21:30 ` Greg KH
2012-11-23 8:48 ` Marc Kleine-Budde
2012-11-23 13:30 ` [PATCH] kvaser_usb: fix "dma on the stack" errors Olivier Sobrie
2012-11-23 13:40 ` Olivier Sobrie
2012-11-23 13:48 ` Marc Kleine-Budde
2012-11-23 13:54 ` [PATCH v2] " Olivier Sobrie
2012-11-23 14:08 ` Marc Kleine-Budde
2012-11-23 14:16 ` Olivier Sobrie
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=501A6AE7.9060508@pengutronix.de \
--to=mkl@pengutronix.de \
--cc=linux-can@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=olivier@sobrie.be \
--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.