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