All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markus Schneider-Pargmann <msp@baylibre.com>
To: Marc Kleine-Budde <mkl@pengutronix.de>,
	Chandrasekar Ramakrishnan <rcsekar@samsung.com>,
	Wolfgang Grandegger <wg@grandegger.com>,
	"David S . Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Tony Lindgren <tony@atomide.com>, Judith Mendez <jm@ti.com>
Cc: Vincent MAILHOL <mailhol.vincent@wanadoo.fr>,
	Simon Horman <horms@kernel.org>,
	linux-can@vger.kernel.org, netdev@vger.kernel.org,
	linux-kernel@vger.kernel.org, Julien Panis <jpanis@baylibre.com>,
	Markus Schneider-Pargmann <msp@baylibre.com>
Subject: [PATCH 00/14] can: m_can: Optimizations for m_can/tcan part 2
Date: Wed,  7 Feb 2024 10:32:06 +0100	[thread overview]
Message-ID: <20240207093220.2681425-1-msp@baylibre.com> (raw)

Hi Marc, Simon, Martin and everyone,

v7 is a rebase on v6.8. During my am62 tests I discovered some problems
which are fixed with this update.

@Simon: I had to remove most of your reviews again, due to a few
fixes I made.

The series implements many small and bigger throughput improvements and
adds rx/tx coalescing at the end.

Based on v6.8-rc1. Also available at
https://gitlab.baylibre.com/msp8/linux/-/tree/topic/mcan-optimization/v6.8?ref_type=heads

Best,
Markus

Changes in v7:
- Rebased to v6.8-rc1
- Fixed NULL pointer dereference in m_can_clean() on am62 that happened
  when doing ip link up, ip link down, ip link up
- Fixed a racecondition on am62 observed with high throughput tests.
  netdev_completed_queue() was called before netdev_sent_queue() as the
  interrupt was processed so fast. netdev_sent_queue() is now reported
  before the actual sent is done.
- Fixed an initializing issue on am62 where active interrupts are
  getting lost between runs. Fixed by resetting cdev->active_interrupts
  in m_can_disable_all_interrupts()
- Removed m_can_start_fast_xmit() because of a reordering of operations
  due to above mentioned racecondition

Changes in v6:
- Rebased to v6.6-rc2
- Added two small changes for the newly integrated polling feature
- Reuse the polling hrtimer for coalescing as the timer used for
  coalescing has a similar purpose as the one for polling. Also polling
  and coalescing will never be active at the same time.

Changes in v5:
- Add back parenthesis in m_can_set_coalesce(). This will make
  checkpatch unhappy but gcc happy.
- Remove unused fifo_header variable in m_can_tx_handler().
- Rebased to v6.5-rc1

Changes in v4:
- Create and use struct m_can_fifo_element in m_can_tx_handler
- Fix memcpy_and_pad to copy the full buffer
- Fixed a few checkpatch warnings
- Change putidx to be unsigned
- Print hard_xmit error only once when TX FIFO is full

Changes in v3:
- Remove parenthesis in error messages
- Use memcpy_and_pad for buffer copy in 'can: m_can: Write transmit
  header and data in one transaction'.
- Replace spin_lock with spin_lock_irqsave. I got a report of a
  interrupt that was calling start_xmit just after the netqueue was
  woken up before the locked region was exited. spin_lock_irqsave should
  fix this. I attached the full stack at the end of the mail if someone
  wants to know.
- Rebased to v6.3-rc1.
- Removed tcan4x5x patches from this series.

Changes in v2:
- Rebased on v6.2-rc5
- Fixed missing/broken accounting for non peripheral m_can devices.

previous versions:
v1 - https://lore.kernel.org/lkml/20221221152537.751564-1-msp@baylibre.com
v2 - https://lore.kernel.org/lkml/20230125195059.630377-1-msp@baylibre.com
v3 - https://lore.kernel.org/lkml/20230315110546.2518305-1-msp@baylibre.com/
v4 - https://lore.kernel.org/lkml/20230621092350.3130866-1-msp@baylibre.com/
v5 - https://lore.kernel.org/lkml/20230718075708.958094-1-msp@baylibre.com
v6 - https://lore.kernel.org/lkml/20230929141304.3934380-1-msp@baylibre.com

Markus Schneider-Pargmann (14):
  can: m_can: Start/Cancel polling timer together with interrupts
  can: m_can: Move hrtimer init to m_can_class_register
  can: m_can: Write transmit header and data in one transaction
  can: m_can: Implement receive coalescing
  can: m_can: Implement transmit coalescing
  can: m_can: Add rx coalescing ethtool support
  can: m_can: Add tx coalescing ethtool support
  can: m_can: Use u32 for putidx
  can: m_can: Cache tx putidx
  can: m_can: Use the workqueue as queue
  can: m_can: Introduce a tx_fifo_in_flight counter
  can: m_can: Use tx_fifo_in_flight for netif_queue control
  can: m_can: Implement BQL
  can: m_can: Implement transmit submission coalescing

 drivers/net/can/m_can/m_can.c          | 551 ++++++++++++++++++-------
 drivers/net/can/m_can/m_can.h          |  34 +-
 drivers/net/can/m_can/m_can_platform.c |   4 -
 3 files changed, 439 insertions(+), 150 deletions(-)

-- 
2.43.0


             reply	other threads:[~2024-02-07  9:32 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-07  9:32 Markus Schneider-Pargmann [this message]
2024-02-07  9:32 ` [PATCH 01/14] can: m_can: Start/Cancel polling timer together with interrupts Markus Schneider-Pargmann
2024-02-07  9:32 ` [PATCH 02/14] can: m_can: Move hrtimer init to m_can_class_register Markus Schneider-Pargmann
2024-02-07  9:32 ` [PATCH 03/14] can: m_can: Write transmit header and data in one transaction Markus Schneider-Pargmann
2024-02-07  9:32 ` [PATCH 04/14] can: m_can: Implement receive coalescing Markus Schneider-Pargmann
2024-02-07  9:32 ` [PATCH 05/14] can: m_can: Implement transmit coalescing Markus Schneider-Pargmann
2024-02-07  9:32 ` [PATCH 06/14] can: m_can: Add rx coalescing ethtool support Markus Schneider-Pargmann
2024-02-07  9:32 ` [PATCH 07/14] can: m_can: Add tx " Markus Schneider-Pargmann
2024-02-07  9:32 ` [PATCH 08/14] can: m_can: Use u32 for putidx Markus Schneider-Pargmann
2024-02-07  9:32 ` [PATCH 09/14] can: m_can: Cache tx putidx Markus Schneider-Pargmann
2024-02-07  9:32 ` [PATCH 10/14] can: m_can: Use the workqueue as queue Markus Schneider-Pargmann
2024-02-07  9:32 ` [PATCH 11/14] can: m_can: Introduce a tx_fifo_in_flight counter Markus Schneider-Pargmann
2024-02-07  9:32 ` [PATCH 12/14] can: m_can: Use tx_fifo_in_flight for netif_queue control Markus Schneider-Pargmann
2024-02-07  9:32 ` [PATCH 13/14] can: m_can: Implement BQL Markus Schneider-Pargmann
2024-02-07  9:32 ` [PATCH 14/14] can: m_can: Implement transmit submission coalescing Markus Schneider-Pargmann
2024-02-07  9:35 ` [PATCH 00/14] can: m_can: Optimizations for m_can/tcan part 2 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=20240207093220.2681425-1-msp@baylibre.com \
    --to=msp@baylibre.com \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=horms@kernel.org \
    --cc=jm@ti.com \
    --cc=jpanis@baylibre.com \
    --cc=kuba@kernel.org \
    --cc=linux-can@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mailhol.vincent@wanadoo.fr \
    --cc=mkl@pengutronix.de \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=rcsekar@samsung.com \
    --cc=tony@atomide.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.