Hi Dave, This series contains two sets of patches to the mlx5 driver, 1. Nine patches (mostly from Hadar) to add 'mlx5 neigh update' feature. 2. Six misc patches.
For more details please see below. Sorry for the last minute submission, originally I planned to submit before weekend, but in order to provide clean patches, we had to deal with some auto build issues first. Please pull and let me know if there's any problem. --- The following changes since commit c08bac03d2894113bdb114e66e6ada009defb120: Merge branch '10GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue (2017-04-29 23:16:20 -0400) are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux.git tags/mlx5-updates-2017-04-30 for you to fetch changes up to 0a0ab1d2cc5d5e68191488235074b5b30d793bb7: net/mlx5: E-Switch, Avoid redundant memory allocation (2017-04-30 16:03:21 +0300) ---------------------------------------------------------------- mlx5-updates-2017-04-30 Or says: ================ mlx5 neigh update This series (whose code name is 'neigh update') from Hadar, enhances the mlx5 TC IP tunnel offloads to deal with changes to tunnel destination neighbours used in offloaded flows which involved encapsulation. In order to keep track on the validity state of such neighbours, we register a netevent notifier callback and act on NEIGH_UPDATE events: if a neighbour becomes valid, offload the related flows to HW (the other way around when neigh becomes invalid) and similarly when a neigh mac addresses changes. Since this traffic is offloaded from the host OS, the neighbour for the IP tunnel destination can mistakenly become STALE and deleted by the kernel since its 'used' value wasn't changed. To address that, we proactively update the neighbour 'used' value every DELAY_PROBE_TIME seconds, using time stamps generated by the existing driver code for HW flow counters. We use the DELAY_PROBE_TIME_UPDATE event to adjust the frequency of the updates. Prior to the core of the series, there's a patch from Saeed that introduces an extendable vport representor implementation scheme. It provides a separation between the eswitch to the netdev related aspects of the representors. We would like to thank Ido Schimmel and Ilya Lesokhin for their coaching && advice through the long design and review cycles while we struggled to understand and (hopefully correctly) implement the locking around the different driver flows(..) . - Or. ================= Misc Updates: >From Tariq: Some small performance and trivial code optimization for mlx5 netdev driver - Optimize poll ICOSQ completion queue - Use prefetchw when a write is to follow - Use u8 as ownership type in mlx5e_get_cqe() >From Eran: - Disable LRO by default on specific setups >From Eli: - Small cleanup for E-Switch to avoid redundant allocation Thanks, Saeed. ---------------------------------------------------------------- Eli Cohen (1): net/mlx5: E-Switch, Avoid redundant memory allocation Eran Ben Elisha (1): net/mlx5e: Disable HW LRO when PCI is slower than link on striding RQ Hadar Hen Zion (7): net/mlx5e: Remove output device parameter from create encap header helpers definition net/mlx5e: Use flag to properly monitor a flow rule offloading state net/mlx5e: Read neigh parameters with proper locking net/mlx5e: Add neighbour hash table to the representors net/mlx5e: Add support to neighbour update flow net/mlx5e: Update neighbour 'used' state using HW flow rules counters net/mlx5e: Act on delay probe time updates Or Gerlitz (2): net/mlx5: Remove encap entry pointer from the eswitch flow attributes net/mlx5e: Move the encap entry structure from the eswitch header Saeed Mahameed (1): net/mlx5e: Extendable vport representor netdev private data Tariq Toukan (3): net/mlx5e: Optimize poll ICOSQ completion queue net/mlx5e: Use prefetchw when a write is to follow net/mlx5e: Use u8 as ownership type in mlx5e_get_cqe() drivers/net/ethernet/mellanox/mlx5/core/en.h | 20 - drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 98 ++-- drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 574 +++++++++++++++++++-- drivers/net/ethernet/mellanox/mlx5/core/en_rep.h | 145 ++++++ drivers/net/ethernet/mellanox/mlx5/core/en_rx.c | 6 +- drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 341 +++++++++--- drivers/net/ethernet/mellanox/mlx5/core/en_tc.h | 9 + drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c | 66 +-- drivers/net/ethernet/mellanox/mlx5/core/eswitch.c | 20 +- drivers/net/ethernet/mellanox/mlx5/core/eswitch.h | 25 +- .../ethernet/mellanox/mlx5/core/eswitch_offloads.c | 2 +- drivers/net/ethernet/mellanox/mlx5/core/fs_core.h | 5 + .../net/ethernet/mellanox/mlx5/core/fs_counters.c | 24 +- include/linux/mlx5/driver.h | 1 + 14 files changed, 1074 insertions(+), 262 deletions(-) create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en_rep.h