public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Arnd Bergmann <arnd@arndb.de>
To: Oliver Hartkopp <socketcan@hartkopp.net>
Cc: Subhasish Ghosh <subhasish@mistralsolutions.com>,
	Wolfgang Grandegger <wg@grandegger.com>,
	sachi@mistralsolutions.com,
	davinci-linux-open-source@linux.davincidsp.com, nsekhar@ti.com,
	open list <linux-kernel@vger.kernel.org>,
	CAN NETWORK DRIVERS <socketcan-core@lists.berlios.de>,
	"Marc Kleine-Budde" <mkl@pengutronix.de>,
	linux-arm-kernel@lists.infradead.org, Netdev@vger.kernel.org,
	m-watkins@ti.com, Alan Cox <alan@lxorguk.ukuu.org.uk>
Subject: Re: [PATCH v4 1/1] can: add pruss CAN driver.
Date: Sun, 22 May 2011 12:30:56 +0200	[thread overview]
Message-ID: <201105221230.56243.arnd@arndb.de> (raw)
In-Reply-To: <4DCBF1B6.6000104@hartkopp.net>

On Thursday 12 May 2011 16:41:58 Oliver Hartkopp wrote:
> E.g. assume you need the CAN-IDs 0x100, 0x200 and 0x300 in your application
> and for that reason you configure these IDs in the pruss CAN driver.
> 
> What if someone generates a 100% CAN busload exactly on CAN-ID 0x100 then?
> 
> Worst case (1MBit/s, DLC=0) you would need to handle about 21.000 irqs/s for
> the correctly received CAN frames with the filtered CAN-ID 0x100 ...

Then I guess the main thing that a "smart" CAN implementation like pruss
should do is interrupt mitigation. When you have a constant flow of
packets coming in, the hardware should be able to DMA a lot of
them into kernel memory before the driver is required to pick them up,
and only get into interrupt driven mode when the kernel has managed
to process all outstanding packets.

> This all depends heavily on Linux networking (skb handling, caching, etc) and
> is pretty fast and optimized!! That was also the reason why it ran on the old
> PowerPC that smoothly. The mostly seen effect if anything drops is when the
> application (holding the socket) was not fast enough to handle the incoming
> data. NB: For that reason we implemented a CAN content filter (CAN_BCM) that
> is able to do content filtering and timeout monitoring in Kernelspace - all
> performed in the SoftIRQ.

Right, dropping packets that no process is waiting for should be done as
early as possible. In pruss-can, the idea was to do it in hardware, which
doesn't really work all that well for the reasons discussed before.
Dropping the frames in the NAPI poll function (softirq time) seems like a
logical choice.

> Having 'Mailboxes' bound to CAN-IDs is something that's useful for 8/16 bit
> CPUs where an application is tightly bound to the embedded ECUs functionality.

Makes sense.

	Arnd

  reply	other threads:[~2011-05-22 10:31 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1303474267-6344-1-git-send-email-subhasish@mistralsolutions.com>
2011-04-22 12:11 ` [PATCH v4 1/1] can: add pruss CAN driver Subhasish Ghosh
     [not found]   ` <4DB1A3B7.7060300@pengutronix.de>
2011-04-25 20:06     ` Wolfgang Grandegger
2011-04-27 13:08       ` Subhasish Ghosh
2011-04-27 13:21         ` Marc Kleine-Budde
2011-04-27 13:25         ` Arnd Bergmann
2011-05-04  7:13           ` Subhasish Ghosh
2011-05-04 13:11             ` Arnd Bergmann
2011-05-04 14:33               ` Wolfgang Grandegger
2011-05-04 14:48                 ` Arnd Bergmann
2011-05-04 16:00                   ` Wolfgang Grandegger
2011-05-10 10:11                     ` Subhasish Ghosh
2011-05-10 10:27                       ` Alan Cox
2011-05-10 12:21                         ` Subhasish Ghosh
2011-05-11 21:31                           ` Arnd Bergmann
2011-05-11 21:44                             ` Arnd Bergmann
2011-05-11 22:39                               ` Marc Kleine-Budde
2011-05-11 22:56                                 ` Alan Cox
2011-05-12  3:03                                   ` can: hardware vs. software filter Kurt Van Dijck
2011-05-12  7:13                               ` [PATCH v4 1/1] can: add pruss CAN driver Wolfgang Grandegger
2011-05-12 10:58                                 ` Kurt Van Dijck
2011-05-12 12:54                                 ` Arnd Bergmann
2011-05-12 13:04                                   ` Marc Kleine-Budde
2011-05-12 14:41                                 ` Oliver Hartkopp
2011-05-22 10:30                                   ` Arnd Bergmann [this message]
2011-05-23  6:21                                     ` Oliver Hartkopp
2011-05-23  8:23                                       ` Marc Kleine-Budde
2011-05-27  8:31                                       ` Wolfgang Grandegger
2011-05-12  7:04                             ` Wolfgang Grandegger
2011-05-04 15:57                 ` Kurt Van Dijck
2011-05-04 16:09                   ` Wolfgang Grandegger
2011-05-04 20:55                     ` Oliver Hartkopp
2011-04-27 13:28         ` Wolfgang Grandegger
2011-04-27 13:34           ` 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=201105221230.56243.arnd@arndb.de \
    --to=arnd@arndb.de \
    --cc=Netdev@vger.kernel.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=davinci-linux-open-source@linux.davincidsp.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=m-watkins@ti.com \
    --cc=mkl@pengutronix.de \
    --cc=nsekhar@ti.com \
    --cc=sachi@mistralsolutions.com \
    --cc=socketcan-core@lists.berlios.de \
    --cc=socketcan@hartkopp.net \
    --cc=subhasish@mistralsolutions.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox