[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20180906043331.31958-1-saeedm@mellanox.com>
Date: Wed, 5 Sep 2018 21:33:22 -0700
From: Saeed Mahameed <saeedm@...lanox.com>
To: "David S. Miller" <davem@...emloft.net>
Cc: netdev@...r.kernel.org, Saeed Mahameed <saeedm@...lanox.com>
Subject: [pull request][net-next 0/9] Mellanox, mlx5 ethernet updates 2018-09-05
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(-)
Powered by blists - more mailing lists