]> git.openfabrics.org - ~aditr/compat-rdma.git/commitdiff
Add IPoIB backport for RHEL7.2
authorVladimir Sokolovsky <vlad@mellanox.com>
Sun, 9 Oct 2016 12:18:46 +0000 (15:18 +0300)
committerVladimir Sokolovsky <vlad@mellanox.com>
Sun, 9 Oct 2016 12:18:46 +0000 (15:18 +0300)
Signed-off-by: Vladimir Sokolovsky <vlad@mellanox.com>
patches/0004-BACKPORT-ipoib.patch [new file with mode: 0644]

diff --git a/patches/0004-BACKPORT-ipoib.patch b/patches/0004-BACKPORT-ipoib.patch
new file mode 100644 (file)
index 0000000..b925c1b
--- /dev/null
@@ -0,0 +1,101 @@
+From: Vladimir Sokolovsky <vlad@mellanox.com>
+Subject: [PATCH] BACKPORT: ipoib
+
+Signed-off-by: Vladimir Sokolovsky <vlad@mellanox.com>
+---
+ drivers/infiniband/ulp/ipoib/ipoib_main.c | 26 ++++++++++++++++++++++++++
+ 1 file changed, 26 insertions(+)
+
+diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c
+index xxxxxxx..xxxxxxx xxxxxx
+--- a/drivers/infiniband/ulp/ipoib/ipoib_main.c
++++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
+@@ -250,9 +250,15 @@ static bool ipoib_is_dev_match_addr_rcu(const struct sockaddr *addr,
+               if (!in_dev)
+                       return false;
++#ifdef HAVE_INET_CONFIRM_ADDR_5_PARAMS
+               ret_addr = inet_confirm_addr(net, in_dev, 0,
+                                            addr_in->sin_addr.s_addr,
+                                            RT_SCOPE_HOST);
++#else
++              ret_addr = inet_confirm_addr(in_dev, 0,
++                                           addr_in->sin_addr.s_addr,
++                                           RT_SCOPE_HOST);
++#endif
+               in_dev_put(in_dev);
+               if (ret_addr)
+                       return true;
+@@ -306,7 +312,9 @@ static struct net_device *ipoib_get_net_dev_match_addr(
+ {
+       struct net_device *upper,
+                         *result = NULL;
++#ifdef HAVE_NETDEV_FOR_EACH_ALL_UPPER_DEV_RCU
+       struct list_head *iter;
++#endif
+       rcu_read_lock();
+       if (ipoib_is_dev_match_addr_rcu(addr, dev)) {
+@@ -315,6 +323,7 @@ static struct net_device *ipoib_get_net_dev_match_addr(
+               goto out;
+       }
++#ifdef HAVE_NETDEV_FOR_EACH_ALL_UPPER_DEV_RCU
+       netdev_for_each_all_upper_dev_rcu(dev, upper, iter) {
+               if (ipoib_is_dev_match_addr_rcu(addr, upper)) {
+                       dev_hold(upper);
+@@ -322,6 +331,15 @@ static struct net_device *ipoib_get_net_dev_match_addr(
+                       break;
+               }
+       }
++#else
++      for_each_netdev(&init_net, upper) {
++              if (ipoib_is_dev_match_addr_rcu(addr, upper)) {
++                      dev_hold(upper);
++                      result = upper;
++                      break;
++              }
++      }
++#endif
+ out:
+       rcu_read_unlock();
+       return result;
+@@ -1689,6 +1707,7 @@ static int ipoib_get_vf_config(struct net_device *dev, int vf,
+       return 0;
+ }
++#ifdef HAVE_NDO_SET_VF_GUID
+ static int ipoib_set_vf_guid(struct net_device *dev, int vf, u64 guid, int type)
+ {
+       struct ipoib_dev_priv *priv = netdev_priv(dev);
+@@ -1698,7 +1717,9 @@ static int ipoib_set_vf_guid(struct net_device *dev, int vf, u64 guid, int type)
+       return ib_set_vf_guid(priv->ca, vf, priv->port, guid, type);
+ }
++#endif
++#ifdef HAVE_NDO_GET_VF_STATS
+ static int ipoib_get_vf_stats(struct net_device *dev, int vf,
+                             struct ifla_vf_stats *vf_stats)
+ {
+@@ -1706,6 +1727,7 @@ static int ipoib_get_vf_stats(struct net_device *dev, int vf,
+       return ib_get_vf_stats(priv->ca, vf, priv->port, vf_stats);
+ }
++#endif
+ static const struct header_ops ipoib_header_ops = {
+       .create = ipoib_hard_header,
+@@ -1723,8 +1745,12 @@ static const struct net_device_ops ipoib_netdev_ops_pf = {
+       .ndo_get_iflink          = ipoib_get_iflink,
+       .ndo_set_vf_link_state   = ipoib_set_vf_link_state,
+       .ndo_get_vf_config       = ipoib_get_vf_config,
++#ifdef HAVE_NDO_GET_VF_STATS
+       .ndo_get_vf_stats        = ipoib_get_vf_stats,
++#endif
++#ifdef HAVE_NDO_SET_VF_GUID
+       .ndo_set_vf_guid         = ipoib_set_vf_guid,
++#endif
+       .ndo_set_mac_address     = ipoib_set_mac,
+ };