From 03d0bf7c637871c55d0851f7b43439ace391f31b Mon Sep 17 00:00:00 2001 From: Vladimir Sokolovsky Date: Mon, 23 Jul 2018 14:39:16 -0500 Subject: [PATCH] BACKPORTS: Use register_netdevice_notifier from compat's netdevice.h Signed-off-by: Vladimir Sokolovsky --- patches/0002-BACKPORT-ib_core.patch | 66 ++------------------------- patches/0003-BACKPORT-ipoib.patch | 32 ++----------- patches/0004-BACKPORT-mlx5.patch | 71 ++++++----------------------- 3 files changed, 21 insertions(+), 148 deletions(-) diff --git a/patches/0002-BACKPORT-ib_core.patch b/patches/0002-BACKPORT-ib_core.patch index c0f2291..1e19faa 100644 --- a/patches/0002-BACKPORT-ib_core.patch +++ b/patches/0002-BACKPORT-ib_core.patch @@ -4,7 +4,7 @@ Subject: [PATCH] BACKPORT: ib_core Signed-off-by: Vladimir Sokolovsky --- drivers/infiniband/core/addr.c | 15 ++++ - drivers/infiniband/core/cma.c | 39 +++++++++ + drivers/infiniband/core/cma.c | 27 ++++++ drivers/infiniband/core/cma_configfs.c | 93 ++++++++++++++++++++ drivers/infiniband/core/core_priv.h | 9 ++ drivers/infiniband/core/cq.c | 35 +++++++- @@ -14,7 +14,7 @@ Signed-off-by: Vladimir Sokolovsky drivers/infiniband/core/netlink.c | 29 +++++++ drivers/infiniband/core/nldev.c | 25 ++++++ drivers/infiniband/core/restrack.c | 4 + - drivers/infiniband/core/roce_gid_mgmt.c | 39 +++++++++ + drivers/infiniband/core/roce_gid_mgmt.c | 31 +++++++ drivers/infiniband/core/sa_query.c | 47 ++++++++++ drivers/infiniband/core/ucm.c | 16 ++++ drivers/infiniband/core/ucma.c | 15 ++++ @@ -26,7 +26,7 @@ Signed-off-by: Vladimir Sokolovsky include/rdma/ib_verbs.h | 147 ++++++++++++++++++++++++++++++++ include/rdma/rdma_netlink.h | 4 + include/rdma/restrack.h | 2 + - 23 files changed, 707 insertions(+), 1 deletion(-) + 23 files changed, 687 insertions(+), 1 deletion(-) diff --git a/drivers/infiniband/core/addr.c b/drivers/infiniband/core/addr.c index xxxxxxx..xxxxxxx xxxxxx @@ -144,42 +144,6 @@ index xxxxxxx..xxxxxxx xxxxxx } static void iboe_mcast_work_handler(struct work_struct *work) -@@ -4574,7 +4601,11 @@ static int __init cma_init(void) - - ib_sa_register_client(&sa_client); - rdma_addr_register_client(&addr_client); -+#ifdef HAVE_REGISTER_NETDEVICE_NOTIFIER_RH -+ register_netdevice_notifier_rh(&cma_nb); -+#else - register_netdevice_notifier(&cma_nb); -+#endif - - ret = ib_register_client(&cma_client); - if (ret) -@@ -4586,7 +4617,11 @@ static int __init cma_init(void) - return 0; - - err: -+#ifdef HAVE_REGISTER_NETDEVICE_NOTIFIER_RH -+ unregister_netdevice_notifier_rh(&cma_nb); -+#else - unregister_netdevice_notifier(&cma_nb); -+#endif - rdma_addr_unregister_client(&addr_client); - ib_sa_unregister_client(&sa_client); - err_wq: -@@ -4599,7 +4634,11 @@ static void __exit cma_cleanup(void) - cma_configfs_exit(); - rdma_nl_unregister(RDMA_NL_RDMA_CM); - ib_unregister_client(&cma_client); -+#ifdef HAVE_REGISTER_NETDEVICE_NOTIFIER_RH -+ unregister_netdevice_notifier_rh(&cma_nb); -+#else - unregister_netdevice_notifier(&cma_nb); -+#endif - rdma_addr_unregister_client(&addr_client); - ib_sa_unregister_client(&sa_client); - unregister_pernet_subsys(&cma_pernet_operations); diff --git a/drivers/infiniband/core/cma_configfs.c b/drivers/infiniband/core/cma_configfs.c index xxxxxxx..xxxxxxx xxxxxx --- a/drivers/infiniband/core/cma_configfs.c @@ -961,30 +925,6 @@ index xxxxxxx..xxxxxxx xxxxxx break; default: -@@ -763,7 +794,11 @@ int __init roce_gid_mgmt_init(void) - * last to make sure we will not miss any IP add/del - * callbacks. - */ -+#ifdef HAVE_REGISTER_NETDEVICE_NOTIFIER_RH -+ register_netdevice_notifier_rh(&nb_netdevice); -+#else - register_netdevice_notifier(&nb_netdevice); -+#endif - - return 0; - } -@@ -773,7 +808,11 @@ void __exit roce_gid_mgmt_cleanup(void) - if (IS_ENABLED(CONFIG_IPV6)) - unregister_inet6addr_notifier(&nb_inet6addr); - unregister_inetaddr_notifier(&nb_inetaddr); -+#ifdef HAVE_REGISTER_NETDEVICE_NOTIFIER_RH -+ unregister_netdevice_notifier_rh(&nb_netdevice); -+#else - unregister_netdevice_notifier(&nb_netdevice); -+#endif - /* Ensure all gid deletion tasks complete before we go down, - * to avoid any reference to free'd memory. By the time - * ib-core is removed, all physical devices have been removed, diff --git a/drivers/infiniband/core/sa_query.c b/drivers/infiniband/core/sa_query.c index xxxxxxx..xxxxxxx xxxxxx --- a/drivers/infiniband/core/sa_query.c diff --git a/patches/0003-BACKPORT-ipoib.patch b/patches/0003-BACKPORT-ipoib.patch index 110c933..ab048eb 100644 --- a/patches/0003-BACKPORT-ipoib.patch +++ b/patches/0003-BACKPORT-ipoib.patch @@ -3,9 +3,9 @@ Subject: [PATCH] BACKPORT: ipoib Signed-off-by: Vladimir Sokolovsky --- - drivers/infiniband/ulp/ipoib/ipoib_main.c | 64 +++++++++++++++++++++++++++- - drivers/infiniband/ulp/ipoib/ipoib_netlink.c | 31 +++++++++++++- - 2 files changed, 93 insertions(+), 2 deletions(-) + drivers/infiniband/ulp/ipoib/ipoib_main.c | 56 +++++++++++++++++++++++++++- + drivers/infiniband/ulp/ipoib/ipoib_netlink.c | 31 ++++++++++++++- + 2 files changed, 85 insertions(+), 2 deletions(-) diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c index xxxxxxx..xxxxxxx xxxxxx @@ -171,32 +171,6 @@ index xxxxxxx..xxxxxxx xxxxxx priv->dev->neigh_priv_len = sizeof(struct ipoib_neigh); -@@ -2491,8 +2545,12 @@ static int __init ipoib_init_module(void) - goto err_client; - - #ifdef CONFIG_INFINIBAND_IPOIB_DEBUG -+#ifdef HAVE_REGISTER_NETDEVICE_NOTIFIER_RH -+ register_netdevice_notifier_rh(&ipoib_netdev_notifier); -+#else - register_netdevice_notifier(&ipoib_netdev_notifier); - #endif -+#endif - return 0; - - err_client: -@@ -2511,8 +2569,12 @@ err_fs: - static void __exit ipoib_cleanup_module(void) - { - #ifdef CONFIG_INFINIBAND_IPOIB_DEBUG -+#ifdef HAVE_REGISTER_NETDEVICE_NOTIFIER_RH -+ unregister_netdevice_notifier_rh(&ipoib_netdev_notifier); -+#else - unregister_netdevice_notifier(&ipoib_netdev_notifier); - #endif -+#endif - ipoib_netlink_fini(); - ib_unregister_client(&ipoib_client); - ib_sa_unregister_client(&ipoib_sa_client); diff --git a/drivers/infiniband/ulp/ipoib/ipoib_netlink.c b/drivers/infiniband/ulp/ipoib/ipoib_netlink.c index xxxxxxx..xxxxxxx xxxxxx --- a/drivers/infiniband/ulp/ipoib/ipoib_netlink.c diff --git a/patches/0004-BACKPORT-mlx5.patch b/patches/0004-BACKPORT-mlx5.patch index 6e559f8..00d3fcb 100644 --- a/patches/0004-BACKPORT-mlx5.patch +++ b/patches/0004-BACKPORT-mlx5.patch @@ -4,7 +4,7 @@ Subject: [PATCH] BACKPORT: mlx5 Signed-off-by: Vladimir Sokolovsky --- drivers/infiniband/hw/mlx5/ib_virt.c | 12 + - drivers/infiniband/hw/mlx5/main.c | 21 + + drivers/infiniband/hw/mlx5/main.c | 13 + drivers/infiniband/hw/mlx5/mlx5_ib.h | 2 + drivers/infiniband/hw/mlx5/mr.c | 12 + drivers/net/ethernet/mellanox/mlx5/core/en.h | 6 + @@ -12,11 +12,11 @@ Signed-off-by: Vladimir Sokolovsky drivers/net/ethernet/mellanox/mlx5/core/en_fs.c | 2 + drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 486 ++++++++++++++++++++- drivers/net/ethernet/mellanox/mlx5/core/health.c | 14 + - drivers/net/ethernet/mellanox/mlx5/core/lag.c | 55 +++ + drivers/net/ethernet/mellanox/mlx5/core/lag.c | 47 ++ .../net/ethernet/mellanox/mlx5/core/lib/clock.c | 5 + drivers/net/ethernet/mellanox/mlx5/core/lib/gid.c | 16 + drivers/net/ethernet/mellanox/mlx5/core/main.c | 2 + - 13 files changed, 870 insertions(+), 6 deletions(-) + 13 files changed, 854 insertions(+), 6 deletions(-) diff --git a/drivers/infiniband/hw/mlx5/ib_virt.c b/drivers/infiniband/hw/mlx5/ib_virt.c index xxxxxxx..xxxxxxx xxxxxx @@ -113,31 +113,7 @@ index xxxxxxx..xxxxxxx xxxxxx return -EPERM; #elif !(defined(CONFIG_PPC) || (defined(CONFIG_ARM) && defined(CONFIG_MMU))) return -EPERM; -@@ -4289,7 +4296,11 @@ static int mlx5_add_netdev_notifier(struct mlx5_ib_dev *dev, u8 port_num) - int err; - - dev->roce[port_num].nb.notifier_call = mlx5_netdev_event; -+#ifdef HAVE_REGISTER_NETDEVICE_NOTIFIER_RH -+ err = register_netdevice_notifier_rh(&dev->roce[port_num].nb); -+#else - err = register_netdevice_notifier(&dev->roce[port_num].nb); -+#endif - if (err) { - dev->roce[port_num].nb.notifier_call = NULL; - return err; -@@ -4301,7 +4312,11 @@ static int mlx5_add_netdev_notifier(struct mlx5_ib_dev *dev, u8 port_num) - static void mlx5_remove_netdev_notifier(struct mlx5_ib_dev *dev, u8 port_num) - { - if (dev->roce[port_num].nb.notifier_call) { -+#ifdef HAVE_REGISTER_NETDEVICE_NOTIFIER_RH -+ unregister_netdevice_notifier_rh(&dev->roce[port_num].nb); -+#else - unregister_netdevice_notifier(&dev->roce[port_num].nb); -+#endif - dev->roce[port_num].nb.notifier_call = NULL; - } - } -@@ -5201,12 +5216,18 @@ int mlx5_ib_stage_caps_init(struct mlx5_ib_dev *dev) +@@ -5201,12 +5208,18 @@ int mlx5_ib_stage_caps_init(struct mlx5_ib_dev *dev) if (MLX5_CAP_GEN(mdev, ipoib_enhanced_offloads)) dev->ib_dev.alloc_rdma_netdev = mlx5_ib_alloc_rdma_netdev; @@ -2163,16 +2139,7 @@ index xxxxxxx..xxxxxxx xxxxxx struct mlx5_lag *ldev = NULL; struct mlx5_core_dev *tmp_dev; -@@ -515,16 +534,22 @@ void mlx5_lag_add(struct mlx5_core_dev *dev, struct net_device *netdev) - - if (!ldev->nb.notifier_call) { - ldev->nb.notifier_call = mlx5_lag_netdev_event; -+#ifdef HAVE_REGISTER_NETDEVICE_NOTIFIER_RH -+ if (register_netdevice_notifier_rh(&ldev->nb)) { -+#else - if (register_netdevice_notifier(&ldev->nb)) { -+#endif - ldev->nb.notifier_call = NULL; +@@ -520,11 +539,13 @@ void mlx5_lag_add(struct mlx5_core_dev *dev, struct net_device *netdev) mlx5_core_err(dev, "Failed to register LAG netdev notifier\n"); } } @@ -2186,15 +2153,7 @@ index xxxxxxx..xxxxxxx xxxxxx struct mlx5_lag *ldev; int i; -@@ -543,14 +568,22 @@ void mlx5_lag_remove(struct mlx5_core_dev *dev) - - if (i == MLX5_MAX_PORTS) { - if (ldev->nb.notifier_call) -+#ifdef HAVE_REGISTER_NETDEVICE_NOTIFIER_RH -+ unregister_netdevice_notifier_rh(&ldev->nb); -+#else - unregister_netdevice_notifier(&ldev->nb); -+#endif +@@ -547,10 +568,14 @@ void mlx5_lag_remove(struct mlx5_core_dev *dev) cancel_delayed_work_sync(&ldev->bond_work); mlx5_lag_dev_free(ldev); } @@ -2209,7 +2168,7 @@ index xxxxxxx..xxxxxxx xxxxxx struct mlx5_lag *ldev; bool res; -@@ -560,11 +593,13 @@ bool mlx5_lag_is_active(struct mlx5_core_dev *dev) +@@ -560,11 +585,13 @@ bool mlx5_lag_is_active(struct mlx5_core_dev *dev) mutex_unlock(&lag_mutex); return res; @@ -2223,7 +2182,7 @@ index xxxxxxx..xxxxxxx xxxxxx struct mlx5_lag *ldev; int ret = 0; bool lag_active; -@@ -589,6 +624,9 @@ static int mlx5_lag_set_state(struct mlx5_core_dev *dev, bool allow) +@@ -589,6 +616,9 @@ static int mlx5_lag_set_state(struct mlx5_core_dev *dev, bool allow) unlock: mlx5_dev_list_unlock(); return ret; @@ -2233,7 +2192,7 @@ index xxxxxxx..xxxxxxx xxxxxx } int mlx5_lag_forbid(struct mlx5_core_dev *dev) -@@ -603,6 +641,9 @@ int mlx5_lag_allow(struct mlx5_core_dev *dev) +@@ -603,6 +633,9 @@ int mlx5_lag_allow(struct mlx5_core_dev *dev) struct net_device *mlx5_lag_get_roce_netdev(struct mlx5_core_dev *dev) { @@ -2243,7 +2202,7 @@ index xxxxxxx..xxxxxxx xxxxxx struct net_device *ndev = NULL; struct mlx5_lag *ldev; -@@ -625,11 +666,15 @@ unlock: +@@ -625,11 +658,15 @@ unlock: mutex_unlock(&lag_mutex); return ndev; @@ -2259,7 +2218,7 @@ index xxxxxxx..xxxxxxx xxxxxx struct mlx5_core_dev *dev = container_of(priv, struct mlx5_core_dev, priv); struct mlx5_lag *ldev; -@@ -643,6 +688,7 @@ bool mlx5_lag_intf_add(struct mlx5_interface *intf, struct mlx5_priv *priv) +@@ -643,6 +680,7 @@ bool mlx5_lag_intf_add(struct mlx5_interface *intf, struct mlx5_priv *priv) /* If bonded, we do not add an IB device for PF1. */ return false; @@ -2267,7 +2226,7 @@ index xxxxxxx..xxxxxxx xxxxxx } int mlx5_lag_query_cong_counters(struct mlx5_core_dev *dev, -@@ -652,7 +698,9 @@ int mlx5_lag_query_cong_counters(struct mlx5_core_dev *dev, +@@ -652,7 +690,9 @@ int mlx5_lag_query_cong_counters(struct mlx5_core_dev *dev, { int outlen = MLX5_ST_SZ_BYTES(query_cong_statistics_out); struct mlx5_core_dev *mdev[MLX5_MAX_PORTS]; @@ -2277,7 +2236,7 @@ index xxxxxxx..xxxxxxx xxxxxx int num_ports; int ret, i, j; void *out; -@@ -663,6 +711,7 @@ int mlx5_lag_query_cong_counters(struct mlx5_core_dev *dev, +@@ -663,6 +703,7 @@ int mlx5_lag_query_cong_counters(struct mlx5_core_dev *dev, memset(values, 0, sizeof(*values) * num_counters); @@ -2285,7 +2244,7 @@ index xxxxxxx..xxxxxxx xxxxxx mutex_lock(&lag_mutex); ldev = mlx5_lag_dev_get(dev); if (ldev && mlx5_lag_is_bonded(ldev)) { -@@ -673,6 +722,10 @@ int mlx5_lag_query_cong_counters(struct mlx5_core_dev *dev, +@@ -673,6 +714,10 @@ int mlx5_lag_query_cong_counters(struct mlx5_core_dev *dev, num_ports = 1; mdev[0] = dev; } @@ -2296,7 +2255,7 @@ index xxxxxxx..xxxxxxx xxxxxx for (i = 0; i < num_ports; ++i) { ret = mlx5_cmd_query_cong_counter(mdev[i], false, out, outlen); -@@ -684,7 +737,9 @@ int mlx5_lag_query_cong_counters(struct mlx5_core_dev *dev, +@@ -684,7 +729,9 @@ int mlx5_lag_query_cong_counters(struct mlx5_core_dev *dev, } unlock: -- 2.46.0