All of lore.kernel.org
 help / color / mirror / Atom feed
* [pull request][net-next 0/9] Mellanox, mlx5 ethernet updates 2018-09-05
@ 2018-09-06  4:33 Saeed Mahameed
  2018-09-06  4:33 ` [net-next 1/9] net/mlx5: Change flow counters addlist type to single linked list Saeed Mahameed
                   ` (9 more replies)
  0 siblings, 10 replies; 11+ messages in thread
From: Saeed Mahameed @ 2018-09-06  4:33 UTC (permalink / raw)
  To: David S. Miller; +Cc: netdev, Saeed Mahameed

Hi Dave,

This pull request provides some updates to mlx5 ethernet driver.

For more information please see tag log below.

Please pull and let me know if there's any problem.

Thanks,
Saeed.

---

The following changes since commit 05dcc71298643256948a2e17db7dbecc748719d2:

  net: lan743x_ptp: make function lan743x_ptp_set_sync_ts_insert() static (2018-09-05 08:07:05 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux.git tags/mlx5e-updates-2018-09-05

for you to fetch changes up to fe1dc069990c1f290ef6b99adb46332c03258f38:

  net/mlx5e: don't set CHECKSUM_COMPLETE on SCTP packets (2018-09-05 21:14:57 -0700)

----------------------------------------------------------------
mlx5e-updates-2018-09-05

This series provides updates to mlx5 ethernet driver.

1) Starting with a four patches series to optimize flow counters updates,
>From Vlad Buslov:
==============================================

By default mlx5 driver updates cached counters each second. Update function
consumes noticeable amount of CPU resources. The goal of this patch series
is to optimize update function.

Investigation revealed following bottlenecks in fs counters
implementation:
 1) Update code(scheduled each second) iterates over all counters twice.
 (first for finding and deleting counters that are marked for deletion,
 second iteration is for actually updating the counters)
 2) Counters are stored in rb tree. Linear iteration over all rb tree
 elements(rb_next in profiling data) consumed ~65% of time spent in
 update function.

Following optimizations were implemented:
 1) Instead of just marking counters for deletion, store them in
 standalone list. This removes first iteration over whole counters tree.
 2) Store counters in sorted list to optimize traversing them and remove
 calls to rb_next.

First implementation of these changes caused degradation of performance,
instead of improving it. Investigation revealed that there first cache
line of struct mlx5_fc is full and adding anything to it causes amount
of cache misses to double. To mitigate that, following refactorings were
implemented:
 - Change 'addlist' list type from double linked to single linked. This
 allowes to get free space for one additional pointer that is used to
 store deletion list(optimization 1)
 - Substitute rb tree with idr. Idr is non-intrusive data structure and
 doesn't require adding any new members to struct mlx5_fc. Use free
 space that became available for double linked sorted list that is used
 for traversing all counters. (optimization 2)

Described changes reduced CPU time spent in mlx5_fc_stats_work from 70%
to 44%. (global perf profile mode)
============================================

The rest of the series are misc updates:

2) From Kamal, Move mlx5e_priv_flags into en_ethtool.c, to avoid a
compilation warning.

3) From Roi Dayan, Move Q counters allocation and drop RQ to init_rx profile
function to avoid allocating Q counters when not required.

4) From Shay Agroskin, Replace PTP clock lock from RW lock to seq lock.
Almost double the packet rate when timestamping is active on multiple TX
queues.

5) From: Natali Shechtman, set ECN for received packets using CQE indication.

6) From: Alaa Hleihel, don't set CHECKSUM_COMPLETE on SCTP packets.
CHECKSUM_COMPLETE is not applicable to SCTP protocol.

----------------------------------------------------------------
Alaa Hleihel (1):
      net/mlx5e: don't set CHECKSUM_COMPLETE on SCTP packets

Kamal Heib (1):
      net/mlx5e: Move mlx5e_priv_flags into en_ethtool.c

Natali Shechtman (1):
      net/mlx5e: Set ECN for received packets using CQE indication

Roi Dayan (1):
      net/mlx5e: Move Q counters allocation and drop RQ to init_rx

Shay Agroskin (1):
      net/mlx5e: Replace PTP clock lock from RW lock to seq lock

Vlad Buslov (4):
      net/mlx5: Change flow counters addlist type to single linked list
      net/mlx5: Add new list to store deleted flow counters
      net/mlx5: Store flow counters in a list
      net/mlx5: Add flow counters idr

 drivers/net/ethernet/mellanox/mlx5/core/en.h       |  13 +-
 .../net/ethernet/mellanox/mlx5/core/en_ethtool.c   |   7 +
 drivers/net/ethernet/mellanox/mlx5/core/en_main.c  |  45 +++--
 drivers/net/ethernet/mellanox/mlx5/core/en_rep.c   |  12 +-
 drivers/net/ethernet/mellanox/mlx5/core/en_rx.c    |  47 +++++-
 drivers/net/ethernet/mellanox/mlx5/core/en_stats.c |   3 +
 drivers/net/ethernet/mellanox/mlx5/core/en_stats.h |   2 +
 drivers/net/ethernet/mellanox/mlx5/core/fs_core.h  |   5 +-
 .../net/ethernet/mellanox/mlx5/core/fs_counters.c  | 184 +++++++++++----------
 .../net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c  |  17 +-
 .../net/ethernet/mellanox/mlx5/core/lib/clock.c    |  34 ++--
 .../net/ethernet/mellanox/mlx5/core/lib/clock.h    |   8 +-
 include/linux/mlx5/driver.h                        |  11 +-
 13 files changed, 235 insertions(+), 153 deletions(-)

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

end of thread, other threads:[~2018-09-07  3:27 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-09-06  4:33 [pull request][net-next 0/9] Mellanox, mlx5 ethernet updates 2018-09-05 Saeed Mahameed
2018-09-06  4:33 ` [net-next 1/9] net/mlx5: Change flow counters addlist type to single linked list Saeed Mahameed
2018-09-06  4:33 ` [net-next 2/9] net/mlx5: Add new list to store deleted flow counters Saeed Mahameed
2018-09-06  4:33 ` [net-next 3/9] net/mlx5: Store flow counters in a list Saeed Mahameed
2018-09-06  4:33 ` [net-next 4/9] net/mlx5: Add flow counters idr Saeed Mahameed
2018-09-06  4:33 ` [net-next 5/9] net/mlx5e: Move mlx5e_priv_flags into en_ethtool.c Saeed Mahameed
2018-09-06  4:33 ` [net-next 6/9] net/mlx5e: Move Q counters allocation and drop RQ to init_rx Saeed Mahameed
2018-09-06  4:33 ` [net-next 7/9] net/mlx5e: Replace PTP clock lock from RW lock to seq lock Saeed Mahameed
2018-09-06  4:33 ` [net-next 8/9] net/mlx5e: Set ECN for received packets using CQE indication Saeed Mahameed
2018-09-06  4:33 ` [net-next 9/9] net/mlx5e: don't set CHECKSUM_COMPLETE on SCTP packets Saeed Mahameed
2018-09-06 22:50 ` [pull request][net-next 0/9] Mellanox, mlx5 ethernet updates 2018-09-05 David Miller

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.