]> git.openfabrics.org - ~aditr/compat-rdma.git/commitdiff
BACKPORTS: Use register_netdevice_notifier from compat's netdevice.h
authorVladimir Sokolovsky <vlad@mellanox.com>
Mon, 23 Jul 2018 19:39:16 +0000 (14:39 -0500)
committerVladimir Sokolovsky <vlad@mellanox.com>
Mon, 23 Jul 2018 19:39:16 +0000 (14:39 -0500)
Signed-off-by: Vladimir Sokolovsky <vlad@mellanox.com>
patches/0002-BACKPORT-ib_core.patch
patches/0003-BACKPORT-ipoib.patch
patches/0004-BACKPORT-mlx5.patch

index c0f2291d95ad0ef8bd50c40f8f8911ce09bcac52..1e19faa3e70dd5fd87852f47939ed33c16b2ddae 100644 (file)
@@ -4,7 +4,7 @@ Subject: [PATCH] BACKPORT: ib_core
 Signed-off-by: Vladimir Sokolovsky <vlad@mellanox.com>
 ---
  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 <vlad@mellanox.com>
  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 |  3+++++++
  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 <vlad@mellanox.com>
  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
index 110c9333c5201397a3aa52bc9f396d20520267e7..ab048eb08da21215d02d89f079da5f04245c5b2a 100644 (file)
@@ -3,9 +3,9 @@ Subject: [PATCH] BACKPORT: ipoib
 
 Signed-off-by: Vladimir Sokolovsky <vlad@mellanox.com>
 ---
- 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
index 6e559f853a381474afe17409d466f01389a4d971..00d3fcb1d3857f8e133e6248b5677e88e48e2327 100644 (file)
@@ -4,7 +4,7 @@ Subject: [PATCH] BACKPORT: mlx5
 Signed-off-by: Vladimir Sokolovsky <vlad@mellanox.com>
 ---
  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 <vlad@mellanox.com>
  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: