-From 5d26d2ca164af6b639e7862105a7491b217847e5 Mon Sep 17 00:00:00 2001
+From 0bdb36768a4a4b5ed3984c671e76f29dbcc20ee6 Mon Sep 17 00:00:00 2001
From: Vladimir Sokolovsky <vlad@mellanox.com>
Date: Tue, 10 Jul 2012 15:57:24 +0300
-Subject: [PATCH 1/5] ib_core: backport dst_fetch_ha
+Subject: [PATCH 1/8] ib_core: backport dst_fetch_ha
Signed-off-by: Vladimir Sokolovsky <vlad@mellanox.com>
---
- drivers/infiniband/core/addr.c | 36 ++++++++++++++++++++++++++++++++++++
- 1 files changed, 36 insertions(+), 0 deletions(-)
+ drivers/infiniband/core/addr.c | 58 ++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 58 insertions(+), 0 deletions(-)
diff --git a/drivers/infiniband/core/addr.c b/drivers/infiniband/core/addr.c
-index 9c9ac92..16147cc 100644
+index 6ef660c..b3f7918 100644
--- a/drivers/infiniband/core/addr.c
+++ b/drivers/infiniband/core/addr.c
@@ -178,28 +178,45 @@ static void queue_req(struct addr_req *req)
static int addr4_resolve(struct sockaddr_in *src_in,
struct sockaddr_in *dst_in,
-@@ -250,12 +267,37 @@ static int addr4_resolve(struct sockaddr_in *src_in,
+@@ -231,12 +248,37 @@ static int addr4_resolve(struct sockaddr_in *src_in,
}
/* If the device does ARP internally, return 'done' */
put:
ip_rt_put(rt);
out:
-@@ -329,7 +371,23 @@ static int addr6_resolve(struct sockaddr_in6 *src_in,
+@@ -284,7 +326,23 @@ static int addr6_resolve(struct sockaddr_in6 *src_in,
goto put;
}
dst_release(dst);
return ret;
--
-1.7.1
+1.7.0.4
-From 2c405873e4741984cd75e7dcbcdb2ab81ac34431 Mon Sep 17 00:00:00 2001
+From bb3f1ecdb6baee2740a108b6df5710c7b69cd6f3 Mon Sep 17 00:00:00 2001
From: Vladimir Sokolovsky <vlad@mellanox.com>
Date: Tue, 10 Jul 2012 17:21:25 +0300
-Subject: [PATCH 2/5] ib/core: Backport flowi4 and flowi6
+Subject: [PATCH 2/8] ib/core: Backport flowi4 and flowi6
Signed-off-by: Vladimir Sokolovsky <vlad@mellanox.com>
---
1 files changed, 45 insertions(+), 0 deletions(-)
diff --git a/drivers/infiniband/core/addr.c b/drivers/infiniband/core/addr.c
-index e00422b..dbb8bcd 100644
+index b3f7918..16147cc 100644
--- a/drivers/infiniband/core/addr.c
+++ b/drivers/infiniband/core/addr.c
-@@ -211,22 +211,41 @@ static int addr4_resolve(struct sockaddr_in *src_in,
+@@ -225,22 +225,41 @@ static int addr4_resolve(struct sockaddr_in *src_in,
__be32 src_ip = src_in->sin_addr.s_addr;
__be32 dst_ip = dst_in->sin_addr.s_addr;
struct rtable *rt;
ret = rdma_translate_ip((struct sockaddr *) dst_in, addr);
if (!ret)
memcpy(addr->dst_dev_addr, addr->src_dev_addr, MAX_ADDR_LEN);
-@@ -272,10 +291,16 @@ static int addr6_resolve(struct sockaddr_in6 *src_in,
+@@ -290,10 +309,16 @@ static int addr6_resolve(struct sockaddr_in6 *src_in,
struct sockaddr_in6 *dst_in,
struct rdma_dev_addr *addr)
{
memset(&fl6, 0, sizeof fl6);
fl6.daddr = dst_in->sin6_addr;
fl6.saddr = src_in->sin6_addr;
-@@ -294,6 +319,26 @@ static int addr6_resolve(struct sockaddr_in6 *src_in,
+@@ -312,6 +337,26 @@ static int addr6_resolve(struct sockaddr_in6 *src_in,
src_in->sin6_family = AF_INET6;
src_in->sin6_addr = fl6.saddr;
}
if (dst->dev->flags & IFF_LOOPBACK) {
ret = rdma_translate_ip((struct sockaddr *) dst_in, addr);
--
-1.7.1
+1.7.0.4
-From c72b46457d5e88bea77d59bc486a12ec3ad0a80a Mon Sep 17 00:00:00 2001
+From 99c4d483228edc17d03d7b4ee21c36943b4bcaca Mon Sep 17 00:00:00 2001
From: Vladimir Sokolovsky <vlad@mellanox.com>
Date: Mon, 25 Jun 2012 22:28:24 +0300
-Subject: [PATCH 3/5] BACKPORT: core/netlink for kernels <= 3.4
+Subject: [PATCH 3/8] BACKPORT: core/netlink for kernels <= 3.4
Signed-off-by: Vladimir Sokolovsky <vlad@mellanox.com>
---
}
--
-1.7.1
+1.7.0.4
-From 39e81c844d77792b939619bb4e8ad212640fd801 Mon Sep 17 00:00:00 2001
+From 812b253a1afb7e046ca7d60330692a4fcb1d0e84 Mon Sep 17 00:00:00 2001
From: Vladimir Sokolovsky <vlad@mellanox.com>
Date: Tue, 10 Jul 2012 17:41:31 +0300
-Subject: [PATCH 4/5] ib/core: Backport pinned_vm for kernels <= 3.2
+Subject: [PATCH 4/8] ib/core: Backport pinned_vm for kernels <= 3.2
Signed-off-by: Vladimir Sokolovsky <vlad@mellanox.com>
---
mmput(mm);
kfree(umem);
--
-1.7.1
+1.7.0.4
-From b9bb7ce447837b2b8f732f06196b4590df1128d7 Mon Sep 17 00:00:00 2001
+From 12dcf9f472a1fc297b9909e84a4c7b2a82faeaa1 Mon Sep 17 00:00:00 2001
From: Vladimir Sokolovsky <vlad@mellanox.com>
Date: Tue, 10 Jul 2012 18:06:16 +0300
-Subject: [PATCH 5/5] ib/core: Backport CLASS_ATTR for kernels < 2.6.34
+Subject: [PATCH 5/8] ib/core: Backport CLASS_ATTR for kernels < 2.6.34
Signed-off-by: Vladimir Sokolovsky <vlad@mellanox.com>
---
printk(KERN_ERR "user_verbs: couldn't create abi_version attribute\n");
goto out_class;
--
-1.7.1
+1.7.0.4
-From 681aab993638393808cc62cf6baa1aa6ab6cf36d Mon Sep 17 00:00:00 2001
+From d7e2b00aaca04e9c1f976001189f8289117ff1ca Mon Sep 17 00:00:00 2001
From: Vladimir Sokolovsky <vlad@mellanox.com>
Date: Thu, 12 Jul 2012 22:31:24 +0300
-Subject: [PATCH] Backport mlx4_ib
+Subject: [PATCH 6/8] Backport mlx4_ib
Signed-off-by: Vladimir Sokolovsky <vlad@mellanox.com>
---
dev_put(ndev);
}
--
-1.7.1
+1.7.0.4
-From 9ccb05fe619154aa63a787fa1bd561b5992264c3 Mon Sep 17 00:00:00 2001
+From 74269c6e48ef212f4151a99ea9a0a0ce58427535 Mon Sep 17 00:00:00 2001
From: Vladimir Sokolovsky <vlad@mellanox.com>
Date: Fri, 13 Jul 2012 00:24:56 +0300
-Subject: [PATCH] BACKPORT ucma: Revert sysctl registrations
+Subject: [PATCH 7/8] BACKPORT ucma: Revert sysctl registrations
Signed-off-by: Vladimir Sokolovsky <vlad@mellanox.com>
---
misc_deregister(&ucma_misc);
idr_destroy(&ctx_idr);
--
-1.7.1
+1.7.0.4
+++ /dev/null
-From: Tatyana Nikolova <Tatyana.E.Nikolova@intel.com>\r
-Subject: [PATCH] RDMA/nes: Backports for RHEL 6.2 and 6.3\r
-\r
-Backports for linux-3.5 nes to RHEL-6.2 and RHEL-6.3\r
-\r
-Signed-off-by: Tatyana Nikolova <Tatyana.E.Nikolova@intel.com>\r
----\r
- drivers/infiniband/hw/nes/nes_cm.c | 12 +++++++++++-\r
- drivers/infiniband/hw/nes/nes_nic.c | 26 +++++++++++++++++++++++---\r
- 2 files changed, 34 insertions(+), 4 deletions(-)\r
-\r
-diff --git a/drivers/infiniband/hw/nes/nes_cm.c b/drivers/infiniband/hw/nes/nes_cm.c\r
-index 020e95c..0b5b1a9 100644\r
---- a/drivers/infiniband/hw/nes/nes_cm.c\r
-+++ b/drivers/infiniband/hw/nes/nes_cm.c\r
-@@ -1343,9 +1343,16 @@ static int nes_addr_resolve_neigh(struct nes_vnic *nesvnic, u32 dst_ip, int arpi\r
- int rc = arpindex;\r
- struct net_device *netdev;\r
- struct nes_adapter *nesadapter = nesvnic->nesdev->nesadapter;\r
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39))\r
-+ struct flowi fl;\r
- \r
-+ memset(&fl, 0, sizeof fl);\r
-+ fl.nl_u.ip4_u.daddr = htonl(dst_ip);\r
-+ if (ip_route_output_key(&init_net, &rt, &fl)) {\r
-+#else\r
- rt = ip_route_output(&init_net, htonl(dst_ip), 0, 0, 0);\r
- if (IS_ERR(rt)) {\r
-+#endif\r
- printk(KERN_ERR "%s: ip_route_output_key failed for 0x%08X\n",\r
- __func__, dst_ip);\r
- return rc;\r
-@@ -1356,8 +1363,11 @@ static int nes_addr_resolve_neigh(struct nes_vnic *nesvnic, u32 dst_ip, int arpi\r
- else\r
- netdev = nesvnic->netdev;\r
- \r
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0))\r
-+ neigh = neigh_lookup(&arp_tbl, &rt->rt_gateway, netdev);\r
-+#else\r
- neigh = dst_neigh_lookup(&rt->dst, &dst_ip);\r
--\r
-+#endif\r
- rcu_read_lock();\r
- if (neigh) {\r
- if (neigh->nud_state & NUD_VALID) {\r
-diff --git a/drivers/infiniband/hw/nes/nes_nic.c b/drivers/infiniband/hw/nes/nes_nic.c\r
-index f3a3ecf..8544d0a 100644\r
---- a/drivers/infiniband/hw/nes/nes_nic.c\r
-+++ b/drivers/infiniband/hw/nes/nes_nic.c\r
-@@ -909,7 +909,11 @@ static void nes_netdev_set_multicast_list(struct net_device *netdev)\r
- if (!mc_all_on) {\r
- char *addrs;\r
- int i;\r
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))\r
- struct netdev_hw_addr *ha;\r
-+#else\r
-+ struct dev_mc_list *mcaddr;\r
-+#endif\r
- \r
- addrs = kmalloc(ETH_ALEN * mc_count, GFP_ATOMIC);\r
- if (!addrs) {\r
-@@ -917,9 +921,13 @@ static void nes_netdev_set_multicast_list(struct net_device *netdev)\r
- goto unlock;\r
- }\r
- i = 0;\r
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))\r
- netdev_for_each_mc_addr(ha, netdev)\r
- memcpy(get_addr(addrs, i++), ha->addr, ETH_ALEN);\r
--\r
-+#else\r
-+ netdev_for_each_mc_addr(mcaddr, netdev)\r
-+ memcpy(get_addr(addrs, i++), mcaddr->dmi_addr, ETH_ALEN);\r
-+#endif\r
- perfect_filter_register_address = NES_IDX_PERFECT_FILTER_LOW +\r
- pft_entries_preallocated * 0x8;\r
- for (i = 0, mc_index = 0; mc_index < max_pft_entries_avaiable;\r
-@@ -1610,6 +1618,7 @@ static void nes_vlan_mode(struct net_device *netdev, struct nes_device *nesdev,\r
- spin_unlock_irqrestore(&nesadapter->phy_lock, flags);\r
- }\r
- \r
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))\r
- static netdev_features_t nes_fix_features(struct net_device *netdev, netdev_features_t features)\r
- {\r
- /*\r
-@@ -1635,6 +1644,7 @@ static int nes_set_features(struct net_device *netdev, netdev_features_t feature\r
- \r
- return 0;\r
- }\r
-+#endif\r
- \r
- static const struct net_device_ops nes_netdev_ops = {\r
- .ndo_open = nes_netdev_open,\r
-@@ -1646,8 +1656,10 @@ static const struct net_device_ops nes_netdev_ops = {\r
- .ndo_set_rx_mode = nes_netdev_set_multicast_list,\r
- .ndo_change_mtu = nes_netdev_change_mtu,\r
- .ndo_validate_addr = eth_validate_addr,\r
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))\r
- .ndo_fix_features = nes_fix_features,\r
- .ndo_set_features = nes_set_features,\r
-+#endif\r
- };\r
- \r
- /**\r
-@@ -1711,12 +1723,20 @@ struct net_device *nes_netdev_init(struct nes_device *nesdev,\r
- netdev->dev_addr[5] = (u8)u64temp;\r
- memcpy(netdev->perm_addr, netdev->dev_addr, 6);\r
- \r
-+ netdev->features |= NETIF_F_SG | NETIF_F_IP_CSUM;\r
-+\r
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))\r
- netdev->hw_features = NETIF_F_RXCSUM | NETIF_F_SG | NETIF_F_IP_CSUM |\r
- NETIF_F_HW_VLAN_RX;\r
-- if ((nesvnic->logical_port < 2) || (nesdev->nesadapter->hw_rev != NE020_REV))\r
-- netdev->hw_features |= NETIF_F_TSO;\r
- netdev->features |= netdev->hw_features;\r
- netdev->hw_features |= NETIF_F_LRO;\r
-+#endif\r
-+ if ((nesvnic->logical_port < 2) || (nesdev->nesadapter->hw_rev != NE020_REV)) {\r
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))\r
-+ netdev->hw_features |= NETIF_F_TSO;\r
-+#endif\r
-+ netdev->features |= NETIF_F_TSO | NETIF_F_GSO;\r
-+ }\r
- \r
- nes_debug(NES_DBG_INIT, "nesvnic = %p, reported features = 0x%lX, QPid = %d,"\r
- " nic_index = %d, logical_port = %d, mac_index = %d.\n",\r
--- \r
-1.7.4.2\r
-\r
-\r
--- /dev/null
+From 80aaf4b94ca74d3d0c661932ec05d46da4c42022 Mon Sep 17 00:00:00 2001
+From: Tatyana Nikolova <Tatyana.E.Nikolova@intel.com>
+Date: Mon, 16 Jul 2012 17:14:31 +0300
+Subject: [PATCH 8/8] RDMA/nes: Backports for RHEL 6.2 and 6.3
+
+Backports for linux-3.5 nes to RHEL-6.2 and RHEL-6.3
+
+Signed-off-by: Tatyana Nikolova <Tatyana.E.Nikolova@intel.com>
+---
+ drivers/infiniband/hw/nes/nes_cm.c | 12 +++++++++++-
+ drivers/infiniband/hw/nes/nes_nic.c | 26 +++++++++++++++++++++++---
+ 2 files changed, 34 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/infiniband/hw/nes/nes_cm.c b/drivers/infiniband/hw/nes/nes_cm.c
+index 020e95c..0b5b1a9 100644
+--- a/drivers/infiniband/hw/nes/nes_cm.c
++++ b/drivers/infiniband/hw/nes/nes_cm.c
+@@ -1343,9 +1343,16 @@ static int nes_addr_resolve_neigh(struct nes_vnic *nesvnic, u32 dst_ip, int arpi
+ int rc = arpindex;
+ struct net_device *netdev;
+ struct nes_adapter *nesadapter = nesvnic->nesdev->nesadapter;
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39))
++ struct flowi fl;
+
++ memset(&fl, 0, sizeof fl);
++ fl.nl_u.ip4_u.daddr = htonl(dst_ip);
++ if (ip_route_output_key(&init_net, &rt, &fl)) {
++#else
+ rt = ip_route_output(&init_net, htonl(dst_ip), 0, 0, 0);
+ if (IS_ERR(rt)) {
++#endif
+ printk(KERN_ERR "%s: ip_route_output_key failed for 0x%08X\n",
+ __func__, dst_ip);
+ return rc;
+@@ -1356,8 +1363,11 @@ static int nes_addr_resolve_neigh(struct nes_vnic *nesvnic, u32 dst_ip, int arpi
+ else
+ netdev = nesvnic->netdev;
+
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0))
++ neigh = neigh_lookup(&arp_tbl, &rt->rt_gateway, netdev);
++#else
+ neigh = dst_neigh_lookup(&rt->dst, &dst_ip);
+-
++#endif
+ rcu_read_lock();
+ if (neigh) {
+ if (neigh->nud_state & NUD_VALID) {
+diff --git a/drivers/infiniband/hw/nes/nes_nic.c b/drivers/infiniband/hw/nes/nes_nic.c
+index f3a3ecf..d54776f 100644
+--- a/drivers/infiniband/hw/nes/nes_nic.c
++++ b/drivers/infiniband/hw/nes/nes_nic.c
+@@ -909,7 +909,11 @@ static void nes_netdev_set_multicast_list(struct net_device *netdev)
+ if (!mc_all_on) {
+ char *addrs;
+ int i;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ struct netdev_hw_addr *ha;
++#else
++ struct dev_mc_list *mcaddr;
++#endif
+
+ addrs = kmalloc(ETH_ALEN * mc_count, GFP_ATOMIC);
+ if (!addrs) {
+@@ -917,9 +921,13 @@ static void nes_netdev_set_multicast_list(struct net_device *netdev)
+ goto unlock;
+ }
+ i = 0;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ netdev_for_each_mc_addr(ha, netdev)
+ memcpy(get_addr(addrs, i++), ha->addr, ETH_ALEN);
+-
++#else
++ netdev_for_each_mc_addr(mcaddr, netdev)
++ memcpy(get_addr(addrs, i++), mcaddr->dmi_addr, ETH_ALEN);
++#endif
+ perfect_filter_register_address = NES_IDX_PERFECT_FILTER_LOW +
+ pft_entries_preallocated * 0x8;
+ for (i = 0, mc_index = 0; mc_index < max_pft_entries_avaiable;
+@@ -1610,6 +1618,7 @@ static void nes_vlan_mode(struct net_device *netdev, struct nes_device *nesdev,
+ spin_unlock_irqrestore(&nesadapter->phy_lock, flags);
+ }
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
+ static netdev_features_t nes_fix_features(struct net_device *netdev, netdev_features_t features)
+ {
+ /*
+@@ -1635,6 +1644,7 @@ static int nes_set_features(struct net_device *netdev, netdev_features_t feature
+
+ return 0;
+ }
++#endif
+
+ static const struct net_device_ops nes_netdev_ops = {
+ .ndo_open = nes_netdev_open,
+@@ -1646,8 +1656,10 @@ static const struct net_device_ops nes_netdev_ops = {
+ .ndo_set_rx_mode = nes_netdev_set_multicast_list,
+ .ndo_change_mtu = nes_netdev_change_mtu,
+ .ndo_validate_addr = eth_validate_addr,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
+ .ndo_fix_features = nes_fix_features,
+ .ndo_set_features = nes_set_features,
++#endif
+ };
+
+ /**
+@@ -1711,12 +1723,20 @@ struct net_device *nes_netdev_init(struct nes_device *nesdev,
+ netdev->dev_addr[5] = (u8)u64temp;
+ memcpy(netdev->perm_addr, netdev->dev_addr, 6);
+
++ netdev->features |= NETIF_F_SG | NETIF_F_IP_CSUM;
++
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
+ netdev->hw_features = NETIF_F_RXCSUM | NETIF_F_SG | NETIF_F_IP_CSUM |
+ NETIF_F_HW_VLAN_RX;
+- if ((nesvnic->logical_port < 2) || (nesdev->nesadapter->hw_rev != NE020_REV))
+- netdev->hw_features |= NETIF_F_TSO;
+ netdev->features |= netdev->hw_features;
+ netdev->hw_features |= NETIF_F_LRO;
++#endif
++ if ((nesvnic->logical_port < 2) || (nesdev->nesadapter->hw_rev != NE020_REV)) {
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
++ netdev->hw_features |= NETIF_F_TSO;
++#endif
++ netdev->features |= NETIF_F_TSO | NETIF_F_GSO;
++ }
+
+ nes_debug(NES_DBG_INIT, "nesvnic = %p, reported features = 0x%lX, QPid = %d,"
+ " nic_index = %d, logical_port = %d, mac_index = %d.\n",
+--
+1.7.0.4
+