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: Thu, 15 Nov 2012 19:07:58 +0000 (UTC)	[thread overview]
Message-ID: <loom.20121115T200742-282@post.gmane.org> (raw)
In-Reply-To: 50A4E5FC.5020103@pengutronix.de

Marc Kleine-Budde <mkl@pengutronix.de> wrote on 11/15/2012 06:54:20 AM:

> > Right now we are taking the interface down and then back up and while this 
> > works for a single process using CAN, I don't think it will work well with 
> > multi-process support.  Would the other processes know that the interface 
> > was taken down?  I haven't decided the route we will go, but maybe an 
> 
> If the other process is doing a read, the read will return. I'm not sure
> what happens to a write after ifdown/ifup, I think it will fail.
> 

But you wouldn't want all processes to implement this timeout, otherwise 
they would all timeout at the same time and bring the interface down 
hence having something lower down in the stack implement it. 


> > Ideally a packet timeout would be implemented in the driver since it knows 
> > when the last message was transmitted (tx interrupt) and could perform the 
> > flush properly.  Has there been any more thought to this scenario?
> 
> This is a scenario, I think the first step will be to implement an
> "abort currently transmitted frame" callback. Note that not all hardware
> supports a tx-complete interrupt. A timeout mechanism can then be
> implemented in the framework in a hardware independent way, e.g. if you
> extend the currently used can_echo mechanism.
> 
> Marc

Every piece of CAN hardware I've seen (10+ devices) has a tx interrupt 
that indicates when the message is transmitted.  If the current message 
being transmitted has been in the buffer XX amount of time, then it 
and probably the entire queue should be flushed.  Obviously not all 
hardware supports aborting the current frame, but there are work arounds. 
Usually if a CAN message can't transmit within this time it's data is way 
too old to be sent.  The actual time might be up for discussion and 
depends on what is being sent, but for controls its not that long. 

Jason



  parent reply	other threads:[~2012-11-15 19:08 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-17 13:58 What are you doing if the TX buffer overflows? 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
     [not found]           ` <34567791.oZ5dyCnTQA@lisa>
2012-09-19 10:26             ` [Socketcan-users] " Kurt Van Dijck
2012-09-19 11:32               ` 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 [this message]
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
  -- strict thread matches above, loose matches on Subject: below --
2013-01-08 10:09 Alexander Stein
2014-01-27 20:47 ` Jason White

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.20121115T200742-282@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).