All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markus Schneider-Pargmann <msp@baylibre.com>
To: Marc Kleine-Budde <mkl@pengutronix.de>
Cc: Chandrasekar Ramakrishnan <rcsekar@samsung.com>,
	Wolfgang Grandegger <wg@grandegger.com>,
	linux-can@vger.kernel.org, netdev@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 04/15] can: m_can: Use transmit event FIFO watermark level interrupt
Date: Thu, 1 Dec 2022 09:25:21 +0100	[thread overview]
Message-ID: <20221201082521.3tqevaygz4nhw52u@blmsp> (raw)
In-Reply-To: <20221130171715.nujptzwnut7silbm@pengutronix.de>

Hi Marc,

Thanks for reviewing.

On Wed, Nov 30, 2022 at 06:17:15PM +0100, Marc Kleine-Budde wrote:
> On 16.11.2022 21:52:57, Markus Schneider-Pargmann wrote:
> > Currently the only mode of operation is an interrupt for every transmit
> > event. This is inefficient for peripheral chips. Use the transmit FIFO
> > event watermark interrupt instead if the FIFO size is more than 2. Use
> > FIFOsize - 1 for the watermark so the interrupt is triggered early
> > enough to not stop transmitting.
> > 
> > Note that if the number of transmits is less than the watermark level,
> > the transmit events will not be processed until there is any other
> > interrupt. This will only affect statistic counters. Also there is an
> > interrupt every time the timestamp wraps around.
> > 
> > Signed-off-by: Markus Schneider-Pargmann <msp@baylibre.com>
> 
> Please make this configurable with the ethtool TX IRQ coalescing
> parameter. Please setup an hwtimer to enable the regular interrupt after
> some configurable time to avoid starving of the TX complete events.

I guess hwtimer==hrtimer?

I thought about setting up a timer but decided against it as the TX
completion events are only used to update statistics of the interface,
as far as I can tell. I can implement a timer as well.

For the upcoming receive side patch I already added a hrtimer. I may try
to use the same timer for both directions as it is going to do the exact
same thing in both cases (call the interrupt routine). Of course that
depends on the details of the coalescing support. Any objections on
that?

> I've implemented this for the mcp251xfd driver, see:
> 
> 656fc12ddaf8 ("can: mcp251xfd: add TX IRQ coalescing ethtool support")
> 169d00a25658 ("can: mcp251xfd: add TX IRQ coalescing support")
> 846990e0ed82 ("can: mcp251xfd: add RX IRQ coalescing ethtool support")
> 60a848c50d2d ("can: mcp251xfd: add RX IRQ coalescing support")
> 9263c2e92be9 ("can: mcp251xfd: ring: add support for runtime configurable RX/TX ring parameters")

Thanks for the pointers. I will have a look and try to implement it
similarly.

Best,
Markus

  reply	other threads:[~2022-12-01  8:25 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-16 20:52 [PATCH 00/15] can: m_can: Optimizations for tcan and peripheral chips Markus Schneider-Pargmann
2022-11-16 20:52 ` [PATCH 01/15] can: m_can: Eliminate double read of TXFQS in tx_handler Markus Schneider-Pargmann
2022-11-16 20:52 ` [PATCH 02/15] can: m_can: Wakeup net queue once tx was issued Markus Schneider-Pargmann
2022-11-30 17:21   ` Marc Kleine-Budde
2022-12-01  8:43     ` Markus Schneider-Pargmann
2022-12-01  9:16       ` Marc Kleine-Budde
2022-12-01 16:49         ` Markus Schneider-Pargmann
2022-12-02  9:16           ` Marc Kleine-Budde
2022-12-14  9:14     ` Markus Schneider-Pargmann
2022-12-14  9:18       ` Marc Kleine-Budde
2022-12-14  9:22         ` Marc Kleine-Budde
2022-12-14 10:15           ` Vincent MAILHOL
2022-12-14 10:35             ` Markus Schneider-Pargmann
2022-12-15  9:31               ` Markus Schneider-Pargmann
2022-12-16  4:40                 ` Vincent MAILHOL
2022-12-14 10:18           ` Markus Schneider-Pargmann
2022-12-02 13:53   ` Marc Kleine-Budde
2022-11-16 20:52 ` [PATCH 03/15] can: m_can: Cache tx putidx and transmits in flight Markus Schneider-Pargmann
2022-12-01 11:14   ` Marc Kleine-Budde
2022-12-02  8:37     ` Markus Schneider-Pargmann
2022-12-02 14:46       ` Marc Kleine-Budde
2022-12-13 17:13         ` Markus Schneider-Pargmann
2022-12-13 19:17           ` Marc Kleine-Budde
2022-12-14  8:32             ` Markus Schneider-Pargmann
2022-11-16 20:52 ` [PATCH 04/15] can: m_can: Use transmit event FIFO watermark level interrupt Markus Schneider-Pargmann
2022-11-30 17:17   ` Marc Kleine-Budde
2022-12-01  8:25     ` Markus Schneider-Pargmann [this message]
2022-12-01  9:05       ` Marc Kleine-Budde
2022-12-01 10:12         ` Markus Schneider-Pargmann
2022-12-01 11:00           ` Marc Kleine-Budde
2022-12-01 16:59             ` Markus Schneider-Pargmann
2022-12-02  9:23               ` Marc Kleine-Budde
2022-12-02  9:43                 ` Markus Schneider-Pargmann
2022-12-02 14:03                   ` Marc Kleine-Budde
2022-12-13 17:19               ` Markus Schneider-Pargmann
2022-12-13 19:18                 ` Marc Kleine-Budde
2022-11-16 20:52 ` [PATCH 05/15] can: m_can: Disable unused interrupts Markus Schneider-Pargmann
2022-11-16 20:52 ` [PATCH 06/15] can: m_can: Avoid reading irqstatus twice Markus Schneider-Pargmann
2022-11-16 20:53 ` [PATCH 07/15] can: m_can: Read register PSR only on error Markus Schneider-Pargmann
2022-11-16 20:53 ` [PATCH 08/15] can: m_can: Count TXE FIFO getidx in the driver Markus Schneider-Pargmann
2022-11-16 20:53 ` [PATCH 09/15] can: m_can: Count read getindex " Markus Schneider-Pargmann
2022-11-16 20:53 ` [PATCH 10/15] can: m_can: Batch acknowledge rx fifo Markus Schneider-Pargmann
2022-11-16 20:53 ` [PATCH 11/15] can: m_can: Batch acknowledge transmit events Markus Schneider-Pargmann
2022-11-16 20:53 ` [PATCH 12/15] can: tcan4x5x: Remove invalid write in clear_interrupts Markus Schneider-Pargmann
2022-12-02 14:17   ` Marc Kleine-Budde
2022-11-16 20:53 ` [PATCH 13/15] can: tcan4x5x: Fix use of register error status mask Markus Schneider-Pargmann
2022-12-02 14:19   ` Marc Kleine-Budde
2022-11-16 20:53 ` [PATCH 14/15] can: tcan4x5x: Fix register range of first block Markus Schneider-Pargmann
2022-12-02 14:28   ` Marc Kleine-Budde
2022-12-05  9:30     ` Markus Schneider-Pargmann
2022-12-05  9:44       ` Marc Kleine-Budde
2022-12-05  9:55         ` Markus Schneider-Pargmann
2022-11-16 20:53 ` [PATCH 15/15] can: tcan4x5x: Specify separate read/write ranges Markus Schneider-Pargmann
2022-12-02 14:03 ` [PATCH 00/15] can: m_can: Optimizations for tcan and peripheral chips Marc Kleine-Budde
2022-12-05  9:09   ` Markus Schneider-Pargmann

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=20221201082521.3tqevaygz4nhw52u@blmsp \
    --to=msp@baylibre.com \
    --cc=linux-can@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mkl@pengutronix.de \
    --cc=netdev@vger.kernel.org \
    --cc=rcsekar@samsung.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 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.