Signed-off-by: Vladimir Sokolovsky <vlad@mellanox.com>
---
- drivers/infiniband/core/addr.c | 105 ++++++++++++++++++++++++++++++++++
- drivers/infiniband/core/cm.c | 23 ++++++++
- drivers/infiniband/core/cma.c | 43 ++++++++++++++
- drivers/infiniband/core/fmr_pool.c | 7 +++
- drivers/infiniband/core/netlink.c | 20 +++++++
- drivers/infiniband/core/sa_query.c | 15 +++++
- drivers/infiniband/core/ucm.c | 38 ++++++++++++
- drivers/infiniband/core/ucma.c | 76 ++++++++++++++++++++++++
- drivers/infiniband/core/umem.c | 16 ++++++
- drivers/infiniband/core/user_mad.c | 16 ++++++
- drivers/infiniband/core/uverbs_cmd.c | 51 +++++++++++++++++
- drivers/infiniband/core/uverbs_main.c | 40 +++++++++++++
- 12 files changed, 450 insertions(+)
+ drivers/infiniband/core/addr.c | 105 +++++++++++++++++++++++++++++++++
+ drivers/infiniband/core/cm.c | 23 +++++++
+ drivers/infiniband/core/cma.c | 43 +++++++++++++
+ drivers/infiniband/core/fmr_pool.c | 7 ++
+ drivers/infiniband/core/netlink.c | 20 ++++++
+ drivers/infiniband/core/sa_query.c | 15 +++++
+ drivers/infiniband/core/ucm.c | 38 ++++++++++++
+ drivers/infiniband/core/ucma.c | 76 ++++++++++++++++++++++++
+ drivers/infiniband/core/umem.c | 16 +++++
+ drivers/infiniband/core/user_mad.c | 16 +++++
+ drivers/infiniband/core/uverbs_cmd.c | 51 ++++++++++++++++
+ drivers/infiniband/core/uverbs_main.c | 40 +++++++++++++
+ 12 files changed, 450 insertions(+), 0 deletions(-)
diff --git a/drivers/infiniband/core/addr.c b/drivers/infiniband/core/addr.c
index xxxxxxx..xxxxxxx xxxxxx
Signed-off-by: Vladimir Sokolovsky <vlad@mellanox.com>
---
- drivers/infiniband/hw/mlx4/cm.c | 31 +++++
- drivers/infiniband/hw/mlx4/main.c | 16 +++
- drivers/net/ethernet/mellanox/mlx4/cmd.c | 6 +
- drivers/net/ethernet/mellanox/mlx4/en_cq.c | 10 ++
- drivers/net/ethernet/mellanox/mlx4/en_dcb_nl.c | 12 ++
- drivers/net/ethernet/mellanox/mlx4/en_ethtool.c | 51 +++++++
- drivers/net/ethernet/mellanox/mlx4/en_netdev.c | 176 +++++++++++++++++++++++-
- drivers/net/ethernet/mellanox/mlx4/en_rx.c | 29 ++++
- drivers/net/ethernet/mellanox/mlx4/en_tx.c | 36 +++++
- drivers/net/ethernet/mellanox/mlx4/eq.c | 8 ++
- drivers/net/ethernet/mellanox/mlx4/mlx4_en.h | 57 ++++++++
- include/linux/mlx4/cmd.h | 2 +
- include/linux/mlx4/device.h | 6 +
- 13 files changed, 439 insertions(+), 1 deletion(-)
+ drivers/infiniband/hw/mlx4/cm.c | 31 ++++
+ drivers/infiniband/hw/mlx4/main.c | 16 ++
+ drivers/net/ethernet/mellanox/mlx4/cmd.c | 6 +
+ drivers/net/ethernet/mellanox/mlx4/en_cq.c | 10 ++
+ drivers/net/ethernet/mellanox/mlx4/en_dcb_nl.c | 12 ++
+ drivers/net/ethernet/mellanox/mlx4/en_ethtool.c | 51 +++++++
+ drivers/net/ethernet/mellanox/mlx4/en_netdev.c | 176 ++++++++++++++++++++++-
+ drivers/net/ethernet/mellanox/mlx4/en_rx.c | 29 ++++
+ drivers/net/ethernet/mellanox/mlx4/en_tx.c | 36 +++++
+ drivers/net/ethernet/mellanox/mlx4/eq.c | 8 +
+ drivers/net/ethernet/mellanox/mlx4/mlx4_en.h | 57 ++++++++
+ include/linux/mlx4/cmd.h | 2 +
+ include/linux/mlx4/device.h | 6 +
+ 13 files changed, 439 insertions(+), 1 deletions(-)
diff --git a/drivers/infiniband/hw/mlx4/cm.c b/drivers/infiniband/hw/mlx4/cm.c
index xxxxxxx..xxxxxxx xxxxxx
Signed-off-by: Vladimir Sokolovsky <vlad@mellanox.com>
---
- drivers/infiniband/ulp/ipoib/ipoib.h | 3 +++
- drivers/infiniband/ulp/ipoib/ipoib_cm.c | 8 ++++++
- drivers/infiniband/ulp/ipoib/ipoib_main.c | 35 ++++++++++++++++++++++++++
- drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 15 +++++++++++
- drivers/infiniband/ulp/ipoib/ipoib_netlink.c | 8 ++++++
- 5 files changed, 69 insertions(+)
+ drivers/infiniband/ulp/ipoib/ipoib.h | 3 ++
+ drivers/infiniband/ulp/ipoib/ipoib_cm.c | 8 +++++
+ drivers/infiniband/ulp/ipoib/ipoib_main.c | 37 ++++++++++++++++++++++++
+ drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 15 +++++++++
+ drivers/infiniband/ulp/ipoib/ipoib_netlink.c | 8 +++++
+ 5 files changed, 71 insertions(+), 0 deletions(-)
diff --git a/drivers/infiniband/ulp/ipoib/ipoib.h b/drivers/infiniband/ulp/ipoib/ipoib.h
index xxxxxxx..xxxxxxx xxxxxx
dev_set_mtu(dev, min(priv->mcast_mtu, dev->mtu));
rtnl_unlock();
ipoib_flush_paths(dev);
-@@ -1313,7 +1331,11 @@ void ipoib_dev_cleanup(struct net_device *dev)
- cancel_delayed_work(&cpriv->neigh_reap_task);
+@@ -1307,6 +1325,7 @@ void ipoib_dev_cleanup(struct net_device *dev)
+ ipoib_delete_debug_files(dev);
+
+ /* Delete any child interfaces first */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,33)
+ list_for_each_entry_safe(cpriv, tcpriv, &priv->child_intfs, list) {
+ /* Stop GC on child */
+ set_bit(IPOIB_STOP_NEIGH_GC, &cpriv->flags);
+@@ -1314,6 +1333,11 @@ void ipoib_dev_cleanup(struct net_device *dev)
unregister_netdevice_queue(cpriv->dev, &head);
}
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,33)
unregister_netdevice_many(&head);
+#else
-+ unregister_netdevice(cpriv->dev);
++ list_for_each_entry_safe(cpriv, tcpriv,
++ &priv->child_intfs, list)
++ unregister_netdevice(cpriv->dev);
+#endif
ipoib_ib_dev_cleanup(dev);
-@@ -1335,7 +1357,9 @@ static const struct net_device_ops ipoib_netdev_ops = {
+@@ -1335,7 +1359,9 @@ static const struct net_device_ops ipoib_netdev_ops = {
.ndo_open = ipoib_open,
.ndo_stop = ipoib_stop,
.ndo_change_mtu = ipoib_change_mtu,
.ndo_start_xmit = ipoib_start_xmit,
.ndo_tx_timeout = ipoib_timeout,
.ndo_set_rx_mode = ipoib_set_mcast_list,
-@@ -1522,6 +1546,7 @@ int ipoib_set_dev_features(struct ipoib_dev_priv *priv, struct ib_device *hca)
+@@ -1522,6 +1548,7 @@ int ipoib_set_dev_features(struct ipoib_dev_priv *priv, struct ib_device *hca)
kfree(device_attr);
if (priv->hca_caps & IB_DEVICE_UD_IP_CSUM) {
priv->dev->hw_features = NETIF_F_SG |
NETIF_F_IP_CSUM | NETIF_F_RXCSUM;
-@@ -1529,6 +1554,14 @@ int ipoib_set_dev_features(struct ipoib_dev_priv *priv, struct ib_device *hca)
+@@ -1529,6 +1556,14 @@ int ipoib_set_dev_features(struct ipoib_dev_priv *priv, struct ib_device *hca)
priv->dev->hw_features |= NETIF_F_TSO;
priv->dev->features |= priv->dev->hw_features;
}
return 0;
-@@ -1560,7 +1593,9 @@ static struct net_device *ipoib_add_port(const char *format,
+@@ -1560,7 +1595,9 @@ static struct net_device *ipoib_add_port(const char *format,
priv->dev->mtu = IPOIB_UD_MTU(priv->max_ib_mtu);
priv->mcast_mtu = priv->admin_mtu = priv->dev->mtu;