IB/mlx5: Enable IPoIB acceleration
Subsystems (5)
PATCH 1/1 IB/mlx5: Enable IPoIB acceleration
From: Erez Shitrit <erezsh-VPRAkNaXOzVWk0Htik3J/[email protected]>
Enable mlx5 IPoIB acceleration by declaring mlx5_ib_{alloc,free}_rdma_netdev and assigning the mlx5 IPoIB rdma_netdev callbacks.
In addition, this patch brings in sync mlx5's IPoIB parts for net and IB trees. As a precaution, we disabled IPoIB acceleration by default (in the mlx5_core Kconfig file).
---
Hi Doug,
This is connection patch between IPoIB mlx5_core and mlx5_ib parts.
The patch itself is based on merge between your's k.o/for-4.12-rdma-netdevice commit cc47dd684ee04f9f49f081002a74ef1ba9d14cc8 and David's master commit b1513c35317c106a1588f3ab32f6888f0e2afd71 , because there was patch from Stephen exactly in that area:
http://marc.info/?l=linux-netdev&m=149288674816288&w=2
Are you OK with this base?
Or do you prefer patch which will be based on your's branch, which will fail in merge tests (linux-next) between yours and Dave's tree?
Thanks
--- drivers/infiniband/hw/mlx5/main.c | 22 +++++++++++++ drivers/net/ethernet/mellanox/mlx5/core/Kconfig | 2 +- drivers/net/ethernet/mellanox/mlx5/core/ipoib.c | 44 +++++++++++++++---------- drivers/net/ethernet/mellanox/mlx5/core/ipoib.h | 2 ++ include/linux/mlx5/driver.h | 19 +++++++++++ 5 files changed, 70 insertions(+), 19 deletions(-)
drivers/infiniband/hw/mlx5/main.c +22 -0
@@ -3530,6 +3530,26 @@ static int mlx5_ib_get_hw_stats(struct ib_device *ibdev,return num_counters; } +static struct net_device * +mlx5_ib_alloc_rdma_netdev (struct ib_device *hca, +u8 port_num, +enum rdma_netdev_t type, +const char *name, +unsigned char name_assign_type, +void (*setup)(struct net_device *)) +{ +if (type !=RDMA_NETDEV_IPOIB ) +return ERR_PTR (-EOPNOTSUPP ); + +return mlx5_rdma_netdev_alloc (to_mdev (hca)->mdev, hca, + name, setup); +} + +static void mlx5_ib_free_rdma_netdev (struct net_device *netdev) +{ +return mlx5_rdma_netdev_free (netdev); +} +static void *mlx5_ib_add (struct mlx5_core_dev *mdev) {struct mlx5_ib_dev *dev;
@@ -3660,6 +3680,8 @@ static void *mlx5_ib_add(struct mlx5_core_dev *mdev) dev->ib_dev.check_mr_status = mlx5_ib_check_mr_status; dev->ib_dev.get_port_immutable = mlx5_port_immutable; dev->ib_dev.get_dev_fw_str = get_dev_fw_str; + dev->ib_dev.alloc_rdma_netdev = mlx5_ib_alloc_rdma_netdev; + dev->ib_dev.free_rdma_netdev = mlx5_ib_free_rdma_netdev;if (mlx5_core_is_pf (mdev)) { dev->ib_dev.get_vf_config = mlx5_ib_get_vf_config; dev->ib_dev.set_vf_link_state = mlx5_ib_set_vf_link_state;
drivers/net/ethernet/mellanox/mlx5/core/Kconfig +1 -1
@@ -35,6 +35,6 @@ config MLX5_CORE_EN_DCB config MLX5_CORE_IPOIB bool "Mellanox Technologies ConnectX-4 IPoIB offloads support" depends on MLX5_CORE_EN - default y + default n ---help--- MLX5 IPoIB offloads & acceleration support.
drivers/net/ethernet/mellanox/mlx5/core/ipoib.c +26 -18
105 lines not on this page · raw message
drivers/net/ethernet/mellanox/mlx5/core/ipoib.h +2 -0
@@ -40,7 +40,9 @@/* ipoib rdma netdev's private data structure */ struct mlx5i_priv { +struct rdma_netdev rn;/* keep this first */ struct mlx5_core_qp qp; +u32 qkey;char *mlx5e_priv[0 ]; };
include/linux/mlx5/driver.h +19 -0
@@ -1101,6 +1101,25 @@ struct net_device *mlx5_lag_get_roce_netdev(struct mlx5_core_dev *dev);struct mlx5_uars_page *mlx5_get_uars_page (struct mlx5_core_dev *mdev);void mlx5_put_uars_page (struct mlx5_core_dev *mdev,struct mlx5_uars_page *up); +#ifndef CONFIG_MLX5_CORE_IPOIB +static inline +struct net_device *mlx5_rdma_netdev_alloc (struct mlx5_core_dev *mdev, +struct ib_device *ibdev, +const char *name, +void (*setup)(struct net_device *)) +{ +return ERR_PTR (-EOPNOTSUPP ); +} + +static inline void mlx5_rdma_netdev_free (struct net_device *netdev) {} +#else +struct net_device *mlx5_rdma_netdev_alloc (struct mlx5_core_dev *mdev, +struct ib_device *ibdev, +const char *name, +void (*setup)(struct net_device *)); +void mlx5_rdma_netdev_free (struct net_device *netdev); +#endif /* CONFIG_MLX5_CORE_IPOIB */ +struct mlx5_profile {u64 mask;u8 log_max_qp;
--
2.12.2
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html