linux-can.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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





  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).