-From 0038f903e7318e5e0ef15949acd78290b9c665a3 Mon Sep 17 00:00:00 2001
+From aab849d519467be361c92ecaf2c1c46df1d6466e Mon Sep 17 00:00:00 2001
From: Vladimir Sokolovsky <vlad@mellanox.com>
Date: Tue, 10 Jul 2012 15:57:24 +0300
-Subject: [PATCH 01/19] ib_core: backport dst_fetch_ha
+Subject: [PATCH 01/21] ib_core: backport dst_fetch_ha
Signed-off-by: Vladimir Sokolovsky <vlad@mellanox.com>
---
1 files changed, 58 insertions(+), 0 deletions(-)
diff --git a/drivers/infiniband/core/addr.c b/drivers/infiniband/core/addr.c
-index 6ef660c..b3f7918 100644
+index 6ef660c..984f61c 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)
+ if (neigh)
+ goto release;
+ goto put;
-+ }
++ }
+
+ ret = rdma_copy_addr(addr, neigh->dev, neigh->ha);
+release:
-From afcded5e038e760d131e231d5c4ef9b1aab47ef4 Mon Sep 17 00:00:00 2001
+From 026cb35caae800ec4823fd05fa4d5fd4b41b5153 Mon Sep 17 00:00:00 2001
From: Vladimir Sokolovsky <vlad@mellanox.com>
Date: Tue, 10 Jul 2012 17:21:25 +0300
-Subject: [PATCH 02/19] ib/core: Backport flowi4 and flowi6
+Subject: [PATCH 02/21] 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 b3f7918..16147cc 100644
+index 984f61c..089b076 100644
--- a/drivers/infiniband/core/addr.c
+++ b/drivers/infiniband/core/addr.c
@@ -225,22 +225,41 @@ static int addr4_resolve(struct sockaddr_in *src_in,
-From 7692a8ee4653116ca742acfbf84b008ef98a2fa2 Mon Sep 17 00:00:00 2001
+From 5fd491b49a69f933b529aa5d8f7e0a37c06799bb Mon Sep 17 00:00:00 2001
From: Vladimir Sokolovsky <vlad@mellanox.com>
Date: Mon, 25 Jun 2012 22:28:24 +0300
-Subject: [PATCH 03/19] BACKPORT: core/netlink for kernels <= 3.4
+Subject: [PATCH 03/21] BACKPORT: core/netlink for kernels <= 3.4
Signed-off-by: Vladimir Sokolovsky <vlad@mellanox.com>
---
-From 723354e9a6c86869c6bed9a2c7935551f494ca48 Mon Sep 17 00:00:00 2001
+From b4ba8b62569098b2d80a8bdf007a13d762dbd66e Mon Sep 17 00:00:00 2001
From: Vladimir Sokolovsky <vlad@mellanox.com>
Date: Tue, 10 Jul 2012 17:41:31 +0300
-Subject: [PATCH 04/19] ib/core: Backport pinned_vm for kernels <= 3.2
+Subject: [PATCH 04/21] ib/core: Backport pinned_vm for kernels <= 3.2
Signed-off-by: Vladimir Sokolovsky <vlad@mellanox.com>
---
-From 83914b4f3d83330c6ad822f9452d4b2c81f328bd Mon Sep 17 00:00:00 2001
+From 114683737901661ad394d2eee81d500f702c4c36 Mon Sep 17 00:00:00 2001
From: Vladimir Sokolovsky <vlad@mellanox.com>
Date: Tue, 10 Jul 2012 18:06:16 +0300
-Subject: [PATCH 05/19] ib/core: Backport CLASS_ATTR for kernels < 2.6.34
+Subject: [PATCH 05/21] ib/core: Backport CLASS_ATTR for kernels < 2.6.34
Signed-off-by: Vladimir Sokolovsky <vlad@mellanox.com>
---
-From 29b2e01be91deea5444b21c4345184c65e2126c5 Mon Sep 17 00:00:00 2001
+From 8d863bb705600583bf70868bb5ab0ee41bfb4542 Mon Sep 17 00:00:00 2001
From: Vladimir Sokolovsky <vlad@mellanox.com>
Date: Thu, 12 Jul 2012 22:31:24 +0300
-Subject: [PATCH 06/19] Backport mlx4_ib
+Subject: [PATCH 06/21] Backport mlx4_ib
Signed-off-by: Vladimir Sokolovsky <vlad@mellanox.com>
---
-From 2db8dcb3b0cde969104eefb7fd59f9d912d258b6 Mon Sep 17 00:00:00 2001
+From 1473b7194e0bce6d1dd06b17bf006a7fae99c448 Mon Sep 17 00:00:00 2001
From: Vladimir Sokolovsky <vlad@mellanox.com>
Date: Fri, 13 Jul 2012 00:24:56 +0300
-Subject: [PATCH 07/19] BACKPORT ucma: Revert sysctl registrations
+Subject: [PATCH 07/21] BACKPORT ucma: Revert sysctl registrations
Signed-off-by: Vladimir Sokolovsky <vlad@mellanox.com>
---
-From 5b576bba91da600067fb95cc76b13d57433b0767 Mon Sep 17 00:00:00 2001
+From a0b4e02814afe69cd050cda0c51fd52fd4e96cb6 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 08/19] RDMA/nes: Backports for RHEL 6.2 and 6.3
+Subject: [PATCH 08/21] RDMA/nes: Backports for RHEL 6.2 and 6.3
Backports for linux-3.5 nes to RHEL-6.2 and RHEL-6.3
-From bdb1401c1b46e21549c53f1681f6b7b03bb60ebc Mon Sep 17 00:00:00 2001
+From 0ea5b57fe57f435ea4ff638c9054d90564842a0e Mon Sep 17 00:00:00 2001
From: Vipul Pandya <vipul@chelsio.com>
Date: Mon, 7 May 2012 12:43:41 +0530
-Subject: [PATCH 09/19] iw_cxgb3/iw_cxgb4: Enable header file inclusion with absolute path
+Subject: [PATCH 09/21] iw_cxgb3/iw_cxgb4: Enable header file inclusion with absolute path
iw_cxgb3/iw_cxgb4 driver includes header files of cxgb3/cxgb4 drivers
respectively. OFED build environment is not able to find the header files
-From 62a485e26214924a1e2f4611460113c3f584038e Mon Sep 17 00:00:00 2001
+From 4a1c370f23ed0c15fa8a15b7cdd72fc4b8e9590b Mon Sep 17 00:00:00 2001
From: Mike Marciniszyn <mike.marciniszyn@intel.com>
Date: Thu, 2 Aug 2012 18:11:27 +0300
-Subject: [PATCH 10/19] IB/qib: backport qib_fs.c before 2.6.35
+Subject: [PATCH 10/21] IB/qib: backport qib_fs.c before 2.6.35
Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
---
-From 1e960f512bff5b850142ff281598bdca4333fae4 Mon Sep 17 00:00:00 2001
+From 434d4d19533137c6936b9733743a934fd4946b63 Mon Sep 17 00:00:00 2001
From: Vipul Pandya <root@silicon.(none)>
Date: Mon, 30 Jul 2012 19:08:37 +0530
-Subject: [PATCH 11/19] cxgb3: Backports for RHEL6.2 RHEL6.3 and SLES11 SP2
+Subject: [PATCH 11/21] cxgb3: Backports for RHEL6.2 RHEL6.3 and SLES11 SP2
Signed-off-by: Vipul Pandya <vipul@chelsio.com>
---
-From 7996c9a696ae6954721ce66a8ab300c9df8b7f2e Mon Sep 17 00:00:00 2001
+From 3987484a97b9ab36fc841a3109aebb875dba5c8f Mon Sep 17 00:00:00 2001
From: Mike Marciniszyn <mike.marciniszyn@intel.com>
Date: Thu, 2 Aug 2012 18:11:27 +0300
-Subject: [PATCH 12/19] IB/qib: backport < 3.2 for pinned_vm field
+Subject: [PATCH 12/21] IB/qib: backport < 3.2 for pinned_vm field
Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
---
-From b316d1c7c58e9a499efd68a4072d7e566b50d733 Mon Sep 17 00:00:00 2001
+From 7498293c8d344b70376649277926d72b4250c674 Mon Sep 17 00:00:00 2001
From: Vipul Pandya <vipul@chelsio.com>
Date: Mon, 30 Jul 2012 12:06:12 +0530
-Subject: [PATCH 13/19] cxgb4: Backports for RHEL6.2 RHEL 6.3 and SLES11 SP2
+Subject: [PATCH 13/21] cxgb4: Backports for RHEL6.2 RHEL 6.3 and SLES11 SP2
Signed-off-by: Vipul Pandya <vipul@chelsio.com>
---
-From 6de2e2a1dec734bab9788b2602edcbda1ce34cf2 Mon Sep 17 00:00:00 2001
+From 52bf86dbd619044e40448eeb2edfaafbbeb71acd Mon Sep 17 00:00:00 2001
From: Mike Marciniszyn <mike.marciniszyn@intel.com>
Date: Thu, 2 Aug 2012 18:11:27 +0300
-Subject: [PATCH 14/19] IB/ipath: backport qib_fs.c before 2.6.35
+Subject: [PATCH 14/21] IB/ipath: backport qib_fs.c before 2.6.35
Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
---
-From 4c438e025af2c1e3b6da2e80aa4cdeb22879b233 Mon Sep 17 00:00:00 2001
+From cbf29472b92bdc58e2c2fdb6d971ad843fe4bad5 Mon Sep 17 00:00:00 2001
From: Mike Marciniszyn <mike.marciniszyn@intel.com>
Date: Thu, 2 Aug 2012 18:11:27 +0300
-Subject: [PATCH 15/19] IB/ipath: backport < 3.2 for pinned_vm field
+Subject: [PATCH 15/21] IB/ipath: backport < 3.2 for pinned_vm field
Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
---
-From 6a037dd6124f663462974233e166febc4f743a4b Mon Sep 17 00:00:00 2001
+From 32509a879b4662c90805662b055521a8b2541cd3 Mon Sep 17 00:00:00 2001
From: Vipul Pandya <vipul@chelsio.com>
Date: Mon, 30 Jul 2012 12:38:36 +0530
-Subject: [PATCH 16/19] iw_cxgb3: Backports for RHEL6.2 RHEL 6.3 and SLES11 SP2
+Subject: [PATCH 16/21] iw_cxgb3: Backports for RHEL6.2 RHEL 6.3 and SLES11 SP2
Signed-off-by: Vipul Pandya <vipul@chelsio.com>
---
-From 7042b9602eddcccd36c970f11d5123db52883b0c Mon Sep 17 00:00:00 2001
+From a31706eefdd5fa6cbcfd5e9a85ccdef74dba374e Mon Sep 17 00:00:00 2001
From: Vipul Pandya <root@silicon.(none)>
Date: Mon, 30 Jul 2012 16:59:42 +0530
-Subject: [PATCH 17/19] iw_cxgb4: Backports for RHEL6.2 RHEL6.3 and SLES11 SP2
+Subject: [PATCH 17/21] iw_cxgb4: Backports for RHEL6.2 RHEL6.3 and SLES11 SP2
Signed-off-by: Vipul Pandya <root@silicon.(none)>
---
-From fb296cd5f46e72878911b20e3e346b605ea84c4d Mon Sep 17 00:00:00 2001
+From a5eccddfb48b63a8cddec33b39544136aa3378ee Mon Sep 17 00:00:00 2001
From: Vladimir Sokolovsky <vlad@mellanox.com>
Date: Thu, 2 Aug 2012 16:12:39 +0300
-Subject: [PATCH 18/19] IPoIB: Backports for RHEL6.2 RHEL6.3 and SLES11 SP2
+Subject: [PATCH 18/21] IPoIB: Backports for RHEL6.2 RHEL6.3 and SLES11 SP2
Signed-off-by: Vladimir Sokolovsky <vlad@mellanox.com>
---
-From 8d37aed4c921582f6cdacc00b1c9fbb933bfa9f1 Mon Sep 17 00:00:00 2001
+From 4c1b99148b5eeb1cdb2e251919a083b03aca35a4 Mon Sep 17 00:00:00 2001
From: Vladimir Sokolovsky <vlad@mellanox.com>
Date: Sun, 5 Aug 2012 22:00:42 +0300
-Subject: [PATCH 19/19] mlx4_en: Backports for RHEL6.2 RHEL6.3 and SLES11 SP2
+Subject: [PATCH 19/21] mlx4_en: Backports for RHEL6.2 RHEL6.3 and SLES11 SP2
Signed-off-by: Vladimir Sokolovsky <vlad@mellanox.com>
---
--- /dev/null
+From 281fbad725657ca5c8593a849010529fd78f3988 Mon Sep 17 00:00:00 2001
+From: Jeff Becker <jeffrey.c.becker@nasa.gov>
+Date: Fri, 24 Aug 2012 11:18:23 -0700
+Subject: [PATCH 20/21] NFSRDMA: RHEL6.3 and SLES11 SP2 backport
+
+Signed-off-by: Jeff Becker <Jeffrey.C.Becker@nasa.gov>
+---
+ net/sunrpc/xprtrdma/rpc_rdma.c | 16 ++++++++++++++++
+ net/sunrpc/xprtrdma/svc_rdma_transport.c | 4 ++++
+ net/sunrpc/xprtrdma/transport.c | 12 ++++++++++++
+ 3 files changed, 32 insertions(+), 0 deletions(-)
+
+diff --git a/net/sunrpc/xprtrdma/rpc_rdma.c b/net/sunrpc/xprtrdma/rpc_rdma.c
+index 558fbab..0a6c1db 100644
+--- a/net/sunrpc/xprtrdma/rpc_rdma.c
++++ b/net/sunrpc/xprtrdma/rpc_rdma.c
+@@ -338,9 +338,17 @@ rpcrdma_inline_pullup(struct rpc_rqst *rqst, int pad)
+ curlen = copy_len;
+ dprintk("RPC: %s: page %d destp 0x%p len %d curlen %d\n",
+ __func__, i, destp, copy_len, curlen);
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
+ srcp = kmap_atomic(ppages[i]);
++#else
++ srcp = kmap_atomic(ppages[i], KM_SKB_SUNRPC_DATA);
++#endif
+ memcpy(destp, srcp+page_base, curlen);
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
+ kunmap_atomic(srcp);
++#else
++ kunmap_atomic(srcp, KM_SKB_SUNRPC_DATA);
++#endif
+ rqst->rq_svec[0].iov_len += curlen;
+ destp += curlen;
+ copy_len -= curlen;
+@@ -639,10 +647,18 @@ rpcrdma_inline_fixup(struct rpc_rqst *rqst, char *srcp, int copy_len, int pad)
+ dprintk("RPC: %s: page %d"
+ " srcp 0x%p len %d curlen %d\n",
+ __func__, i, srcp, copy_len, curlen);
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
+ destp = kmap_atomic(ppages[i]);
++#else
++ destp = kmap_atomic(ppages[i], KM_SKB_SUNRPC_DATA);
++#endif
+ memcpy(destp + page_base, srcp, curlen);
+ flush_dcache_page(ppages[i]);
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
+ kunmap_atomic(destp);
++#else
++ kunmap_atomic(destp, KM_SKB_SUNRPC_DATA);
++#endif
+ srcp += curlen;
+ copy_len -= curlen;
+ if (copy_len == 0)
+diff --git a/net/sunrpc/xprtrdma/svc_rdma_transport.c b/net/sunrpc/xprtrdma/svc_rdma_transport.c
+index 73b428b..325e9fd 100644
+--- a/net/sunrpc/xprtrdma/svc_rdma_transport.c
++++ b/net/sunrpc/xprtrdma/svc_rdma_transport.c
+@@ -445,7 +445,11 @@ static struct svcxprt_rdma *rdma_create_xprt(struct svc_serv *serv,
+
+ if (!cma_xprt)
+ return NULL;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
+ svc_xprt_init(&init_net, &svc_rdma_class, &cma_xprt->sc_xprt, serv);
++#else
++ svc_xprt_init(&svc_rdma_class, &cma_xprt->sc_xprt, serv);
++#endif
+ INIT_LIST_HEAD(&cma_xprt->sc_accept_q);
+ INIT_LIST_HEAD(&cma_xprt->sc_dto_q);
+ INIT_LIST_HEAD(&cma_xprt->sc_rq_dto_q);
+diff --git a/net/sunrpc/xprtrdma/transport.c b/net/sunrpc/xprtrdma/transport.c
+index b446e10..9419f34 100644
+--- a/net/sunrpc/xprtrdma/transport.c
++++ b/net/sunrpc/xprtrdma/transport.c
+@@ -283,7 +283,9 @@ xprt_setup_rdma(struct xprt_create *args)
+ }
+
+ xprt = xprt_alloc(args->net, sizeof(struct rpcrdma_xprt),
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0) || CONFIG_COMPAT_XPRTRDMA_NEEDED)
+ xprt_rdma_slot_table_entries,
++#endif
+ xprt_rdma_slot_table_entries);
+ if (xprt == NULL) {
+ dprintk("RPC: %s: couldn't allocate rpcrdma_xprt\n",
+@@ -453,8 +455,14 @@ xprt_rdma_connect(struct rpc_task *task)
+ }
+
+ static int
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0) || CONFIG_COMPAT_XPRTRDMA_NEEDED)
+ xprt_rdma_reserve_xprt(struct rpc_xprt *xprt, struct rpc_task *task)
+ {
++#else
++xprt_rdma_reserve_xprt(struct rpc_task *task)
++{
++ struct rpc_xprt *xprt = task->tk_xprt;
++#endif
+ struct rpcrdma_xprt *r_xprt = rpcx_to_rdmax(xprt);
+ int credits = atomic_read(&r_xprt->rx_buf.rb_credits);
+
+@@ -466,7 +474,11 @@ xprt_rdma_reserve_xprt(struct rpc_xprt *xprt, struct rpc_task *task)
+ BUG_ON(r_xprt->rx_buf.rb_cwndscale <= 0);
+ }
+ xprt->cwnd = credits * r_xprt->rx_buf.rb_cwndscale;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0) || CONFIG_COMPAT_XPRTRDMA_NEEDED)
+ return xprt_reserve_xprt_cong(xprt, task);
++#else
++ return xprt_reserve_xprt_cong(task);
++#endif
+ }
+
+ /*
+--
+1.7.0.4
+
+++ /dev/null
---- a/net/sunrpc/xprtrdma/svc_rdma_transport.c 2012-08-10 14:24:49.030166769 -0700
-+++ b/net/sunrpc/xprtrdma/svc_rdma_transport.c 2012-08-13 11:07:38.566980365 -0700
-@@ -445,7 +445,11 @@
-
- if (!cma_xprt)
- return NULL;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
- svc_xprt_init(&init_net, &svc_rdma_class, &cma_xprt->sc_xprt, serv);
-+#else
-+ svc_xprt_init(&svc_rdma_class, &cma_xprt->sc_xprt, serv);
-+#endif
- INIT_LIST_HEAD(&cma_xprt->sc_accept_q);
- INIT_LIST_HEAD(&cma_xprt->sc_dto_q);
- INIT_LIST_HEAD(&cma_xprt->sc_rq_dto_q);
-
---- a/net/sunrpc/xprtrdma/transport.c 2012-08-10 14:24:49.030166769 -0700
-+++ b/net/sunrpc/xprtrdma/transport.c 2012-08-15 10:30:17.125653683 -0700
-@@ -283,7 +283,9 @@
- }
-
- xprt = xprt_alloc(args->net, sizeof(struct rpcrdma_xprt),
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0) || CONFIG_COMPAT_XPRTRDMA_NEEDED)
- xprt_rdma_slot_table_entries,
-+#endif
- xprt_rdma_slot_table_entries);
- if (xprt == NULL) {
- dprintk("RPC: %s: couldn't allocate rpcrdma_xprt\n",
-@@ -453,8 +455,14 @@
- }
-
- static int
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0) || CONFIG_COMPAT_XPRTRDMA_NEEDED)
- xprt_rdma_reserve_xprt(struct rpc_xprt *xprt, struct rpc_task *task)
- {
-+#else
-+xprt_rdma_reserve_xprt(struct rpc_task *task)
-+{
-+ struct rpc_xprt *xprt = task->tk_xprt;
-+#endif
- struct rpcrdma_xprt *r_xprt = rpcx_to_rdmax(xprt);
- int credits = atomic_read(&r_xprt->rx_buf.rb_credits);
-
-@@ -466,7 +474,11 @@
- BUG_ON(r_xprt->rx_buf.rb_cwndscale <= 0);
- }
- xprt->cwnd = credits * r_xprt->rx_buf.rb_cwndscale;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0) || CONFIG_COMPAT_XPRTRDMA_NEEDED)
- return xprt_reserve_xprt_cong(xprt, task);
-+#else
-+ return xprt_reserve_xprt_cong(task);
-+#endif
- }
-
- /*
-
---- a/net/sunrpc/xprtrdma/rpc_rdma.c 2012-08-10 14:24:49.029166778 -0700
-+++ b/net/sunrpc/xprtrdma/rpc_rdma.c 2012-08-20 15:10:21.838979969 -0700
-@@ -338,9 +338,17 @@
- curlen = copy_len;
- dprintk("RPC: %s: page %d destp 0x%p len %d curlen %d\n",
- __func__, i, destp, copy_len, curlen);
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
- srcp = kmap_atomic(ppages[i]);
-+#else
-+ srcp = kmap_atomic(ppages[i], KM_SKB_SUNRPC_DATA);
-+#endif
- memcpy(destp, srcp+page_base, curlen);
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
- kunmap_atomic(srcp);
-+#else
-+ kunmap_atomic(srcp, KM_SKB_SUNRPC_DATA);
-+#endif
- rqst->rq_svec[0].iov_len += curlen;
- destp += curlen;
- copy_len -= curlen;
-@@ -639,10 +647,18 @@
- dprintk("RPC: %s: page %d"
- " srcp 0x%p len %d curlen %d\n",
- __func__, i, srcp, copy_len, curlen);
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
- destp = kmap_atomic(ppages[i]);
-+#else
-+ destp = kmap_atomic(ppages[i], KM_SKB_SUNRPC_DATA);
-+#endif
- memcpy(destp + page_base, srcp, curlen);
- flush_dcache_page(ppages[i]);
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
- kunmap_atomic(destp);
-+#else
-+ kunmap_atomic(destp, KM_SKB_SUNRPC_DATA);
-+#endif
- srcp += curlen;
- copy_len -= curlen;
- if (copy_len == 0)
--- /dev/null
+From abd0f3494cc9ac2653dc3b451429cddd7c25def9 Mon Sep 17 00:00:00 2001
+From: Tatyana Nikolova <Tatyana.E.Nikolova@intel.com>
+Date: Sat, 25 Aug 2012 20:39:12 -0500
+Subject: [PATCH 21/21] RDMA/nes: Updated backports
+
+OFED-3.5/NES: Updated backports to be applied on top of the previously submitted backport patch.
+
+Signed-off-by: Tatyana Nikolova <Tatyana.E.Nikolova@intel.com>
+---
+ drivers/infiniband/hw/nes/nes_hw.c | 11 ++++++++
+ drivers/infiniband/hw/nes/nes_hw.h | 3 ++
+ drivers/infiniband/hw/nes/nes_nic.c | 49 ++++++++++++++++++++++++++++------
+ 3 files changed, 54 insertions(+), 9 deletions(-)
+
+diff --git a/drivers/infiniband/hw/nes/nes_hw.c b/drivers/infiniband/hw/nes/nes_hw.c
+index d42c9f4..259faab 100644
+--- a/drivers/infiniband/hw/nes/nes_hw.c
++++ b/drivers/infiniband/hw/nes/nes_hw.c
+@@ -2951,7 +2951,18 @@ void nes_nic_ce_handler(struct nes_device *nesdev, struct nes_hw_nic_cq *cq)
+ nes_debug(NES_DBG_CQ, "%s: Reporting stripped VLAN packet. Tag = 0x%04X\n",
+ nesvnic->netdev->name, vlan_tag);
+
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0))
++ if (nesvnic->vlan_grp != NULL) {
++ if (nes_use_lro)
++ lro_vlan_hwaccel_receive_skb(&nesvnic->lro_mgr, rx_skb,
++ nesvnic->vlan_grp, vlan_tag, NULL);
++ else
++ vlan_hwaccel_receive_skb(rx_skb, nesvnic->vlan_grp, vlan_tag);
++ goto skip_rx_indicate0;
++ }
++#endif
+ __vlan_hwaccel_put_tag(rx_skb, vlan_tag);
++
+ }
+ if (nes_use_lro)
+ lro_receive_skb(&nesvnic->lro_mgr, rx_skb, NULL);
+diff --git a/drivers/infiniband/hw/nes/nes_hw.h b/drivers/infiniband/hw/nes/nes_hw.h
+index d748e4b..b4a31de 100644
+--- a/drivers/infiniband/hw/nes/nes_hw.h
++++ b/drivers/infiniband/hw/nes/nes_hw.h
+@@ -1236,6 +1236,9 @@ struct nes_vnic {
+ /* void *mem; */
+ struct nes_device *nesdev;
+ struct net_device *netdev;
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0))
++ struct vlan_group *vlan_grp;
++#endif
+ atomic_t rx_skbs_needed;
+ atomic_t rx_skb_timer_running;
+ int budget;
+diff --git a/drivers/infiniband/hw/nes/nes_nic.c b/drivers/infiniband/hw/nes/nes_nic.c
+index d54776f..696b80e 100644
+--- a/drivers/infiniband/hw/nes/nes_nic.c
++++ b/drivers/infiniband/hw/nes/nes_nic.c
+@@ -1597,6 +1597,33 @@ static const struct ethtool_ops nes_ethtool_ops = {
+ .set_pauseparam = nes_netdev_set_pauseparam,
+ };
+
++
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0))
++static void nes_netdev_vlan_rx_register(struct net_device *netdev, struct vlan_group *grp)
++{
++ struct nes_vnic *nesvnic = netdev_priv(netdev);
++ struct nes_device *nesdev = nesvnic->nesdev;
++ struct nes_adapter *nesadapter = nesdev->nesadapter;
++ u32 u32temp;
++ unsigned long flags;
++
++ spin_lock_irqsave(&nesadapter->phy_lock, flags);
++ nesvnic->vlan_grp = grp;
++
++ nes_debug(NES_DBG_NETDEV, "%s: %s\n", __func__, netdev->name);
++
++ /* Enable/Disable VLAN Stripping */
++ u32temp = nes_read_indexed(nesdev, NES_IDX_PCIX_DIAG);
++ if (grp)
++ u32temp &= 0xfdffffff;
++ else
++ u32temp |= 0x02000000;
++
++ nes_write_indexed(nesdev, NES_IDX_PCIX_DIAG, u32temp);
++ spin_unlock_irqrestore(&nesadapter->phy_lock, flags);
++}
++#endif
++
+ static void nes_vlan_mode(struct net_device *netdev, struct nes_device *nesdev, netdev_features_t features)
+ {
+ struct nes_adapter *nesadapter = nesdev->nesadapter;
+@@ -1618,6 +1645,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)
+ {
+@@ -1656,6 +1684,9 @@ 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(3,1,0))
++ .ndo_vlan_rx_register = nes_netdev_vlan_rx_register,
++#endif
+ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
+ .ndo_fix_features = nes_fix_features,
+ .ndo_set_features = nes_set_features,
+@@ -1691,12 +1722,10 @@ struct net_device *nes_netdev_init(struct nes_device *nesdev,
+ netdev->hard_header_len = ETH_HLEN;
+ netdev->addr_len = ETH_ALEN;
+ netdev->type = ARPHRD_ETHER;
+- netdev->features = NETIF_F_HIGHDMA;
+ netdev->netdev_ops = &nes_netdev_ops;
+ netdev->ethtool_ops = &nes_ethtool_ops;
+ netif_napi_add(netdev, &nesvnic->napi, nes_netdev_poll, 128);
+ nes_debug(NES_DBG_INIT, "Enabling VLAN Insert/Delete.\n");
+- netdev->features |= NETIF_F_HW_VLAN_TX;
+
+ /* Fill in the port structure */
+ nesvnic->netdev = netdev;
+@@ -1723,19 +1752,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;
++ netdev->features = NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_RXCSUM | NETIF_F_HW_VLAN_RX;
+
+ #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;
+- netdev->features |= netdev->hw_features;
+- netdev->hw_features |= NETIF_F_LRO;
++ netdev->hw_features |= netdev->features | NETIF_F_LRO;
+ #endif
++ netdev->features |= NETIF_F_HIGHDMA | NETIF_F_HW_VLAN_TX;
++
+ if ((nesvnic->logical_port < 2) || (nesdev->nesadapter->hw_rev != NE020_REV)) {
++#if (LINUX_VERSION_CODE <= KERNEL_VERSION(3,3,0))
++ netdev->features |= NETIF_F_TSO;
+ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
+ netdev->hw_features |= NETIF_F_TSO;
+ #endif
+- netdev->features |= NETIF_F_TSO | NETIF_F_GSO;
++#endif
+ }
+
+ nes_debug(NES_DBG_INIT, "nesvnic = %p, reported features = 0x%lX, QPid = %d,"
+@@ -1864,8 +1894,9 @@ struct net_device *nes_netdev_init(struct nes_device *nesdev,
+ nes_init_phy(nesdev);
+ }
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0))
+ nes_vlan_mode(netdev, nesdev, netdev->features);
+-
++#endif
+ return netdev;
+ }
+
+--
+1.7.0.4
+