From: Jason White <white_jason_r1@cat.com>
To: linux-can@vger.kernel.org
Subject: Re: What are you doing if the TX buffer overflows?
Date: Mon, 27 Jan 2014 20:47:18 +0000 (UTC) [thread overview]
Message-ID: <loom.20140127T210023-257@post.gmane.org> (raw)
In-Reply-To: 1838723.N2loBrR0E2@ws-stein
Alexander Stein <alexander.stein <at> systec-electronic.com> writes:
>
> Sorry for "new" thread, I don't have the old messages for reply
>
> Jason White wrote:
> > Kurt Van Dijck <kurt.van.dijck <at> eia.be> writes:
> > > > Officially the TX-timeout has been removed as the controller just
sends
> > > > out
> > > > the CAN frames, when it comes back to life ...
> > > >
> > > > The question is, if the controller gets into the BUS_OFF state and
if
> > > > the
> > > > restart-ms option (see ip tool) would help here.
> > >
> > > FYI:
> > > A CAN chip that sits alone on a proper bus, trying to transmit a
frame,
> > > will never go into BUS_OFF. It can only go in BUS_OFF when a bad
network
> > > is encountered, i.e. the chip does not see it's TX activity on its RX.
> > >
> > > I think this scenario (chip alone, going in BUS_OFF) is no different
> > > than regular BUS_OFF, and should be treated likewise.
> >
> > This sounds like something I would be interested in. Just a couple of
> > questions. What do you mean TX-timeout has been removed? Also does
> > it work in error passive state (scenario where the ECU is alone on
> > the bus - no ack from another ECU). Does it just reset the CAN
> > hardware or does the queues get flushed as well?
>
> Is there any progress on this topic? I would be particilar interested in
clearing the socket queue,
> especially in case a BUS-OFF happens or when no device is on the bus (no
ACK).
>
> Best regards,
> Alexander
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-can" in
> the body of a message to majordomo <at> vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
>
I never saw a response to Alexandar's question and got side tracked myself,
so assume there has not been any further development when the device goes
error-passive. I believe there is a command to reset the device when it
goes to bus-off (IFLA_CAN_RESTART manually and can_bus_off()).
The general consensus I've seen is to bring the device interface down and
then up to flush the tx queue. We have been doing that, but this has
recently come up again because of the overhead of making system calls from a
C application especially when the timeout to flush is relatively fast.
Looking more at the logic within IFLA_CAN_RESTART and the can_bus_off()
function, I don't see why this couldn't be extended to error-passive state.
I'm not totally certain what netif_carrier_off() does (hoping it would flush
tx queues), but its for when a link state goes down, which is what happens
with error-passive (missing ack frames with no other nodes on the CAN bus).
Could a can_error_passive() function be created that acted similar to
can_bus_off() and called from each specific driver when that state is
encountered? The other option is to extend IFLA_CAN_RESTART so that it
allowed to be called in the error-passive state (or whenever) instead of
just bus-off.
Thoughts?
Thanks,
Jason
next prev parent reply other threads:[~2014-01-27 20:47 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-08 10:09 What are you doing if the TX buffer overflows? Alexander Stein
2014-01-27 20:47 ` Jason White [this message]
-- strict thread matches above, loose matches on Subject: below --
2012-09-17 13:58 Heinz-Jürgen Oertel
2012-09-17 19:19 ` Oliver Hartkopp
2012-09-17 19:26 ` Andrew Bell
2012-09-17 19:33 ` Oliver Hartkopp
2012-09-18 13:36 ` Andrew Bell
2012-09-18 13:46 ` Wolfgang Grandegger
[not found] ` <4283CE44E963D741A50240F32D185B9F109AA1@SBSPORT3.portgmbh.local>
2012-09-17 19:40 ` Heinz-Jürgen Oertel
2012-09-18 11:44 ` Kurt Van Dijck
2012-09-18 12:14 ` Wolfgang Grandegger
2012-09-18 12:34 ` Marc Kleine-Budde
2012-09-18 12:49 ` Wolfgang Grandegger
2012-09-18 13:00 ` Marc Kleine-Budde
2012-09-18 13:39 ` Wolfgang Grandegger
2012-09-18 13:42 ` Marc Kleine-Budde
2012-09-18 18:50 ` Wolfgang Grandegger
2012-09-18 19:01 ` Marc Kleine-Budde
2012-09-18 19:13 ` Wolfgang Grandegger
2012-09-18 20:20 ` Kurt Van Dijck
2012-09-19 5:42 ` Oliver Hartkopp
2012-09-19 7:47 ` Marc Kleine-Budde
2012-09-19 9:04 ` Kurt Van Dijck
2012-09-19 6:50 ` Wolfgang Grandegger
2012-09-19 7:39 ` Marc Kleine-Budde
2012-09-19 8:10 ` Wolfgang Grandegger
2012-09-19 7:31 ` Marc Kleine-Budde
2012-09-19 10:18 ` Steffen Rose
2012-11-14 20:48 ` Jason White
2012-11-15 12:54 ` Marc Kleine-Budde
2012-11-15 17:12 ` Oliver Hartkopp
2012-11-15 19:11 ` Jason White
2012-11-15 21:04 ` Oliver Hartkopp
2012-11-16 15:13 ` Kurt Van Dijck
2012-11-16 17:09 ` Jason White
2012-11-15 19:07 ` Jason White
2012-09-18 12:37 ` Wolfgang Grandegger
2012-09-18 13:22 ` Marc Kleine-Budde
2012-09-18 13:24 ` Marc Kleine-Budde
2012-09-18 13:25 ` Wolfgang Grandegger
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=loom.20140127T210023-257@post.gmane.org \
--to=white_jason_r1@cat.com \
--cc=linux-can@vger.kernel.org \
/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).