Linux CAN drivers development
 help / color / mirror / Atom feed
* [PATCH v4 00/12] can: m_can: Optimizations for m_can/tcan part 2
@ 2023-06-21  9:23 Markus Schneider-Pargmann
  2023-06-21  9:23 ` [PATCH v4 01/12] can: m_can: Write transmit header and data in one transaction Markus Schneider-Pargmann
                   ` (11 more replies)
  0 siblings, 12 replies; 19+ messages in thread
From: Markus Schneider-Pargmann @ 2023-06-21  9:23 UTC (permalink / raw)
  To: Marc Kleine-Budde, Chandrasekar Ramakrishnan, Wolfgang Grandegger
  Cc: Vincent MAILHOL, Simon Horman, David S . Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni, linux-can, netdev, linux-kernel,
	Julien Panis, Markus Schneider-Pargmann

Hi Marc, Simon and everyone,

thanks again for taking the time for review.

This version has the fixes for the issues you pointed out in v3.
It is tested on tcan455x but I don't have hardware with mcan on the SoC
myself so any testing is appreciated.

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

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

Best,
Markus

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/

Markus Schneider-Pargmann (12):
  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 | 516 +++++++++++++++++++++++++---------
 drivers/net/can/m_can/m_can.h |  35 ++-
 2 files changed, 418 insertions(+), 133 deletions(-)


base-commit: ac9a78681b921877518763ba0e89202254349d1b
-- 
2.40.1


^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2023-06-22  9:11 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-06-21  9:23 [PATCH v4 00/12] can: m_can: Optimizations for m_can/tcan part 2 Markus Schneider-Pargmann
2023-06-21  9:23 ` [PATCH v4 01/12] can: m_can: Write transmit header and data in one transaction Markus Schneider-Pargmann
2023-06-21 14:19   ` Simon Horman
2023-06-22  8:56     ` Markus Schneider-Pargmann
2023-06-21 17:49   ` kernel test robot
2023-06-21  9:23 ` [PATCH v4 02/12] can: m_can: Implement receive coalescing Markus Schneider-Pargmann
2023-06-21  9:23 ` [PATCH v4 03/12] can: m_can: Implement transmit coalescing Markus Schneider-Pargmann
2023-06-21  9:23 ` [PATCH v4 04/12] can: m_can: Add rx coalescing ethtool support Markus Schneider-Pargmann
2023-06-21 14:22   ` Simon Horman
2023-06-22  9:02     ` Markus Schneider-Pargmann
2023-06-21 18:00   ` kernel test robot
2023-06-21  9:23 ` [PATCH v4 05/12] can: m_can: Add tx " Markus Schneider-Pargmann
2023-06-21  9:23 ` [PATCH v4 06/12] can: m_can: Use u32 for putidx Markus Schneider-Pargmann
2023-06-21  9:23 ` [PATCH v4 07/12] can: m_can: Cache tx putidx Markus Schneider-Pargmann
2023-06-21  9:23 ` [PATCH v4 08/12] can: m_can: Use the workqueue as queue Markus Schneider-Pargmann
2023-06-21  9:23 ` [PATCH v4 09/12] can: m_can: Introduce a tx_fifo_in_flight counter Markus Schneider-Pargmann
2023-06-21  9:23 ` [PATCH v4 10/12] can: m_can: Use tx_fifo_in_flight for netif_queue control Markus Schneider-Pargmann
2023-06-21  9:23 ` [PATCH v4 11/12] can: m_can: Implement BQL Markus Schneider-Pargmann
2023-06-21  9:23 ` [PATCH v4 12/12] can: m_can: Implement transmit submission coalescing Markus Schneider-Pargmann

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox