]> git.openfabrics.org - ~emulex/tmp/compat-rdma/.git/commitdiff
Remove backport directories
authorVladimir Sokolovsky <vlad@mellanox.com>
Sun, 17 Jun 2012 15:12:31 +0000 (18:12 +0300)
committerVladimir Sokolovsky <vlad@mellanox.com>
Sun, 17 Jun 2012 15:12:31 +0000 (18:12 +0300)
Backport will include patches that will add support for all kernels using:
...

Signed-off-by: Vladimir Sokolovsky <vlad@mellanox.com>
44 files changed:
backports/2.6.32-EL6.2/01-pinned_to_locked_vm_to_3_1.patch [deleted file]
backports/2.6.32-EL6.2/02-remove-SKB-paged-frag-API.patch [deleted file]
backports/2.6.32-EL6.2/03-remove-attr_is_visible.patch [deleted file]
backports/2.6.32-EL6.2/04-ib-core-Add-RHEL6.2-backports.patch [deleted file]
backports/2.6.32-EL6.2/05-ipoib-Add-RHEL6.2-backports.patch [deleted file]
backports/2.6.32-EL6.2/06-mlx4_en-Add-RHEL6.2-backports.patch [deleted file]
backports/2.6.32-EL6.2/07-mlx4_ib-Add-RHEL6.2-backports.patch [deleted file]
backports/2.6.32-EL6.2/08-rds-Add-RHEL6.2-backports.patch [deleted file]
backports/2.6.32-EL6.2/09-cxgb4-Reversing-convert-to-SKB-paged-frag-API.patch [deleted file]
backports/2.6.32-EL6.2/09-nes-RHEL6.2-backports.patch [deleted file]
backports/2.6.32-EL6.2/09-unwind_netlink_dump_start_arg_change.patch [deleted file]
backports/2.6.32-EL6.2/10-cxgb4-Add-build-support-for-kernel-3.1.patch [deleted file]
backports/2.6.32-EL6.2/11-cxgb3-Reversing-do-vlan-cleanup.patch [deleted file]
backports/2.6.32-EL6.2/12-iw_cxgb3-Add-RHEL6.2-backports.patch [deleted file]
backports/2.6.32-EL6.2/13-iw_cxgb4-Add-RHEL6.2-backports.patch [deleted file]
backports/2.6.32-EL6.2/14-iw_cxgb4-Revert-use-the-DMA-state-API-instead-of-the.patch [deleted file]
backports/2.6.32-EL6.2/15-cxgb3-Revert-implement-set_phys_id.patch [deleted file]
backports/2.6.32-EL6.2/16-cxgb3-Revert-convert-to-hw_features.patch [deleted file]
backports/2.6.32-EL6.2/17-cxgb3-Add-RHEL6.2-backports.patch [deleted file]
backports/2.6.32-EL6.2/18-cxgb4-Add-phys_id-interface.patch [deleted file]
backports/2.6.32-EL6.2/19-cxgb4-Revert-netdevice-changes.patch [deleted file]
backports/2.6.32-EL6.2/20-cxgb4-cxgb4_main-and-sge-changes.patch [deleted file]
backports/2.6.32-EL6.2/21-cxgb4-real_num_tx_queues-changes.patch [deleted file]
backports/2.6.32-EL6.2/22-cxgb4-Fix-packet-counters.patch [deleted file]
backports/2.6.32-EL6.2/23-qib_fs_RHEL6.2_backports.patch [deleted file]
backports/3.0.13_sles11_sp2/01-pinned_to_locked_vm_to_3_1.patch [deleted file]
backports/3.0.13_sles11_sp2/02-remove-SKB-paged-frag-API.patch [deleted file]
backports/3.0.13_sles11_sp2/03-remove-attr_is_visible.patch [deleted file]
backports/3.0.13_sles11_sp2/04-cxgb4-Reversing-convert-to-SKB-paged-frag-API.patch [deleted file]
backports/3.0.13_sles11_sp2/05-cxgb4-Add-build-support-for-kernel-3.1.patch [deleted file]
backports/3.0.13_sles11_sp2/06-cxgb3-Reversing-do-vlan-cleanup.patch [deleted file]
backports/3.0.13_sles11_sp2/07-netlink_dump_start_arg.patch [deleted file]
backports/3.0.13_sles11_sp2/08-cxgb4-remove-netdev_alloc_page-and-use-__GFP_COLD.patch [deleted file]
backports/3.0/01-pinned_to_locked_vm_to_3_1.patch [deleted file]
backports/3.0/02-remove-SKB-paged-frag-API.patch [deleted file]
backports/3.0/03-remove-attr_is_visible.patch [deleted file]
backports/3.0/04-cxgb4-Reversing-convert-to-SKB-paged-frag-API.patch [deleted file]
backports/3.0/05-cxgb4-Add-build-support-for-kernel-3.1.patch [deleted file]
backports/3.0/06-cxgb3-Reversing-do-vlan-cleanup.patch [deleted file]
backports/3.1/01-pinned_to_locked_vm_to_3_1.patch [deleted file]
backports/3.1/02-remove-SKB-paged-frag-API.patch [deleted file]
backports/3.1/03-remove-attr_is_visible.patch [deleted file]
backports/3.1/04-cxgb4-Reversing-convert-to-SKB-paged-frag-API.patch [deleted file]
backports/3.1/05-cxgb4-Add-build-support-for-kernel-3.1.patch [deleted file]

diff --git a/backports/2.6.32-EL6.2/01-pinned_to_locked_vm_to_3_1.patch b/backports/2.6.32-EL6.2/01-pinned_to_locked_vm_to_3_1.patch
deleted file mode 100644 (file)
index 5875c2b..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-Index: compat-rdma/drivers/infiniband/core/umem.c
-===================================================================
---- compat-rdma.orig/drivers/infiniband/core/umem.c
-+++ compat-rdma/drivers/infiniband/core/umem.c
-@@ -137,7 +137,7 @@ struct ib_umem *ib_umem_get(struct ib_uc
-       down_write(&current->mm->mmap_sem);
--      locked     = npages + current->mm->pinned_vm;
-+      locked     = npages + current->mm->locked_vm;
-       lock_limit = rlimit(RLIMIT_MEMLOCK) >> PAGE_SHIFT;
-       if ((locked > lock_limit) && !capable(CAP_IPC_LOCK)) {
-@@ -207,7 +207,7 @@ out:
-               __ib_umem_release(context->device, umem, 0);
-               kfree(umem);
-       } else
--              current->mm->pinned_vm = locked;
-+              current->mm->locked_vm = locked;
-       up_write(&current->mm->mmap_sem);
-       if (vma_list)
-@@ -223,7 +223,7 @@ static void ib_umem_account(struct work_
-       struct ib_umem *umem = container_of(work, struct ib_umem, work);
-       down_write(&umem->mm->mmap_sem);
--      umem->mm->pinned_vm -= umem->diff;
-+      umem->mm->locked_vm -= umem->diff;
-       up_write(&umem->mm->mmap_sem);
-       mmput(umem->mm);
-       kfree(umem);
-Index: compat-rdma/drivers/infiniband/hw/ipath/ipath_user_pages.c
-===================================================================
---- compat-rdma.orig/drivers/infiniband/hw/ipath/ipath_user_pages.c
-+++ compat-rdma/drivers/infiniband/hw/ipath/ipath_user_pages.c
-@@ -79,7 +79,7 @@ static int __ipath_get_user_pages(unsign
-                       goto bail_release;
-       }
--      current->mm->pinned_vm += num_pages;
-+      current->mm->locked_vm += num_pages;
-       ret = 0;
-       goto bail;
-@@ -178,7 +178,7 @@ void ipath_release_user_pages(struct pag
-       __ipath_release_user_pages(p, num_pages, 1);
--      current->mm->pinned_vm -= num_pages;
-+      current->mm->locked_vm -= num_pages;
-       up_write(&current->mm->mmap_sem);
- }
-@@ -195,7 +195,7 @@ static void user_pages_account(struct wo
-               container_of(_work, struct ipath_user_pages_work, work);
-       down_write(&work->mm->mmap_sem);
--      work->mm->pinned_vm -= work->num_pages;
-+      work->mm->locked_vm -= work->num_pages;
-       up_write(&work->mm->mmap_sem);
-       mmput(work->mm);
-       kfree(work);
-Index: compat-rdma/drivers/infiniband/hw/qib/qib_user_pages.c
-===================================================================
---- compat-rdma.orig/drivers/infiniband/hw/qib/qib_user_pages.c
-+++ compat-rdma/drivers/infiniband/hw/qib/qib_user_pages.c
-@@ -74,7 +74,7 @@ static int __qib_get_user_pages(unsigned
-                       goto bail_release;
-       }
--      current->mm->pinned_vm += num_pages;
-+      current->mm->locked_vm += num_pages;
-       ret = 0;
-       goto bail;
-@@ -151,7 +151,7 @@ void qib_release_user_pages(struct page
-       __qib_release_user_pages(p, num_pages, 1);
-       if (current->mm) {
--              current->mm->pinned_vm -= num_pages;
-+              current->mm->locked_vm -= num_pages;
-               up_write(&current->mm->mmap_sem);
-       }
- }
diff --git a/backports/2.6.32-EL6.2/02-remove-SKB-paged-frag-API.patch b/backports/2.6.32-EL6.2/02-remove-SKB-paged-frag-API.patch
deleted file mode 100644 (file)
index 1c44fc4..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-Index: compat-rdma/drivers/net/ethernet/mellanox/mlx4/en_rx.c
-===================================================================
---- compat-rdma.orig/drivers/net/ethernet/mellanox/mlx4/en_rx.c        2012-01-09 16:15:04.000000000 +0200
-+++ compat-rdma/drivers/net/ethernet/mellanox/mlx4/en_rx.c     2012-01-23 11:52:39.899175000 +0200
-@@ -44,7 +44,7 @@
- static int mlx4_en_alloc_frag(struct mlx4_en_priv *priv,
-                             struct mlx4_en_rx_desc *rx_desc,
--                            struct page_frag *skb_frags,
-+                            struct skb_frag_struct *skb_frags,
-                             struct mlx4_en_rx_alloc *ring_alloc,
-                             int i)
- {
-@@ -61,7 +61,7 @@ static int mlx4_en_alloc_frag(struct mlx
-                       return -ENOMEM;
-               skb_frags[i].page = page_alloc->page;
--              skb_frags[i].offset = page_alloc->offset;
-+              skb_frags[i].page_offset = page_alloc->offset;
-               page_alloc->page = page;
-               page_alloc->offset = frag_info->frag_align;
-       } else {
-@@ -69,11 +69,11 @@ static int mlx4_en_alloc_frag(struct mlx
-               get_page(page);
-               skb_frags[i].page = page;
--              skb_frags[i].offset = page_alloc->offset;
-+              skb_frags[i].page_offset = page_alloc->offset;
-               page_alloc->offset += frag_info->frag_stride;
-       }
-       dma = pci_map_single(mdev->pdev, page_address(skb_frags[i].page) +
--                           skb_frags[i].offset, frag_info->frag_size,
-+                           skb_frags[i].page_offset, frag_info->frag_size,
-                            PCI_DMA_FROMDEVICE);
-       rx_desc->data[i].addr = cpu_to_be64(dma);
-       return 0;
-@@ -157,8 +157,8 @@ static int mlx4_en_prepare_rx_desc(struc
-                                  struct mlx4_en_rx_ring *ring, int index)
- {
-       struct mlx4_en_rx_desc *rx_desc = ring->buf + (index * ring->stride);
--      struct page_frag *skb_frags = ring->rx_info +
--                                    (index << priv->log_rx_info);
-+      struct skb_frag_struct *skb_frags = ring->rx_info +
-+                                          (index << priv->log_rx_info);
-       int i;
-       for (i = 0; i < priv->num_frags; i++)
-@@ -183,7 +183,7 @@ static void mlx4_en_free_rx_desc(struct
-                                int index)
- {
-       struct mlx4_en_dev *mdev = priv->mdev;
--      struct page_frag *skb_frags;
-+      struct skb_frag_struct *skb_frags;
-       struct mlx4_en_rx_desc *rx_desc = ring->buf + (index << ring->log_stride);
-       dma_addr_t dma;
-       int nr;
-@@ -194,7 +194,7 @@ static void mlx4_en_free_rx_desc(struct
-               dma = be64_to_cpu(rx_desc->data[nr].addr);
-               en_dbg(DRV, priv, "Unmapping buffer at dma:0x%llx\n", (u64) dma);
--              pci_unmap_single(mdev->pdev, dma, skb_frags[nr].size,
-+              pci_unmap_single(mdev->pdev, dma, skb_frag_size(&skb_frags[nr]),
-                                PCI_DMA_FROMDEVICE);
-               put_page(skb_frags[nr].page);
-       }
-@@ -403,7 +403,7 @@ void mlx4_en_deactivate_rx_ring(struct m
- /* Unmap a completed descriptor and free unused pages */
- static int mlx4_en_complete_rx_desc(struct mlx4_en_priv *priv,
-                                   struct mlx4_en_rx_desc *rx_desc,
--                                  struct page_frag *skb_frags,
-+                                  struct skb_frag_struct *skb_frags,
-                                   struct sk_buff *skb,
-                                   struct mlx4_en_rx_alloc *page_alloc,
-                                   int length)
-@@ -421,9 +421,9 @@ static int mlx4_en_complete_rx_desc(stru
-                       break;
-               /* Save page reference in skb */
--              __skb_frag_set_page(&skb_frags_rx[nr], skb_frags[nr].page);
--              skb_frag_size_set(&skb_frags_rx[nr], skb_frags[nr].size);
--              skb_frags_rx[nr].page_offset = skb_frags[nr].offset;
-+              skb_frags_rx[nr].page = skb_frags[nr].page;
-+              skb_frag_size_set(&skb_frags_rx[nr], skb_frag_size(&skb_frags[nr]));
-+              skb_frags_rx[nr].page_offset = skb_frags[nr].page_offset;
-               skb->truesize += frag_info->frag_stride;
-               dma = be64_to_cpu(rx_desc->data[nr].addr);
-@@ -446,7 +446,7 @@ fail:
-        * the descriptor) of this packet; remaining fragments are reused... */
-       while (nr > 0) {
-               nr--;
--              __skb_frag_unref(&skb_frags_rx[nr]);
-+              put_page(skb_frags_rx[nr].page);
-       }
-       return 0;
- }
-@@ -454,7 +454,7 @@ fail:
- static struct sk_buff *mlx4_en_rx_skb(struct mlx4_en_priv *priv,
-                                     struct mlx4_en_rx_desc *rx_desc,
--                                    struct page_frag *skb_frags,
-+                                    struct skb_frag_struct *skb_frags,
-                                     struct mlx4_en_rx_alloc *page_alloc,
-                                     unsigned int length)
- {
-@@ -475,7 +475,7 @@ static struct sk_buff *mlx4_en_rx_skb(st
-       /* Get pointer to first fragment so we could copy the headers into the
-        * (linear part of the) skb */
--      va = page_address(skb_frags[0].page) + skb_frags[0].offset;
-+      va = page_address(skb_frags[0].page) + skb_frags[0].page_offset;
-       if (length <= SMALL_PACKET_SIZE) {
-               /* We are copying all relevant data to the skb - temporarily
-@@ -533,7 +533,7 @@ int mlx4_en_process_rx_cq(struct net_dev
-       struct mlx4_en_priv *priv = netdev_priv(dev);
-       struct mlx4_cqe *cqe;
-       struct mlx4_en_rx_ring *ring = &priv->rx_ring[cq->ring];
--      struct page_frag *skb_frags;
-+      struct skb_frag_struct *skb_frags;
-       struct mlx4_en_rx_desc *rx_desc;
-       struct sk_buff *skb;
-       int index;
diff --git a/backports/2.6.32-EL6.2/03-remove-attr_is_visible.patch b/backports/2.6.32-EL6.2/03-remove-attr_is_visible.patch
deleted file mode 100644 (file)
index c05ace7..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-Index: compat-rdma/drivers/infiniband/ulp/iser/iscsi_iser.c
-===================================================================
---- compat-rdma.orig/drivers/infiniband/ulp/iser/iscsi_iser.c
-+++ compat-rdma/drivers/infiniband/ulp/iser/iscsi_iser.c
-@@ -719,7 +719,9 @@ static struct iscsi_transport iscsi_iser
-       .create_conn            = iscsi_iser_conn_create,
-       .bind_conn              = iscsi_iser_conn_bind,
-       .destroy_conn           = iscsi_iser_conn_destroy,
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(3,2,0))
-       .attr_is_visible        = iser_attr_is_visible,
-+#endif
-       .set_param              = iscsi_iser_set_param,
-       .get_conn_param         = iscsi_conn_get_param,
-       .get_ep_param           = iscsi_iser_get_ep_param,
diff --git a/backports/2.6.32-EL6.2/04-ib-core-Add-RHEL6.2-backports.patch b/backports/2.6.32-EL6.2/04-ib-core-Add-RHEL6.2-backports.patch
deleted file mode 100644 (file)
index 26fa757..0000000
+++ /dev/null
@@ -1,332 +0,0 @@
-From 9e60fe057cb38b467dfbac003175644519920cac Mon Sep 17 00:00:00 2001
-From: Vladimir Sokolovsky <vlad@mellanox.com>
-Date: Fri, 23 Mar 2012 21:21:06 +0200
-Subject: [PATCH] ib/core: Add RHEL6.2 backports
-
-Signed-off-by: Vladimir Sokolovsky <vlad@mellanox.com>
----
- include/rdma/ib_addr.h                |    1 +
- drivers/infiniband/core/addr.c        |   42 ++++++++++++++++----------------
- drivers/infiniband/core/mad.c         |   19 ++++++++++++--
- drivers/infiniband/core/netlink.c     |   10 ++++---
- drivers/infiniband/core/sysfs.c       |    1 -
- drivers/infiniband/core/ucm.c         |   13 ++++++----
- drivers/infiniband/core/user_mad.c    |    9 ++++--
- drivers/infiniband/core/uverbs_main.c |    9 ++++--
- 8 files changed, 64 insertions(+), 40 deletions(-)
-
-diff --git a/include/rdma/ib_addr.h b/include/rdma/ib_addr.h
-index 639a449..a040c9c 100644
---- a/include/rdma/ib_addr.h
-+++ b/include/rdma/ib_addr.h
-@@ -40,6 +40,7 @@
- #include <linux/netdevice.h>
- #include <linux/socket.h>
- #include <linux/if_vlan.h>
-+#include <linux/rtnetlink.h>
- #include <rdma/ib_verbs.h>
- #include <rdma/ib_pack.h>
-
-diff --git a/drivers/infiniband/core/addr.c b/drivers/infiniband/core/addr.c
-index e9cf51b..f72272c 100644
---- a/drivers/infiniband/core/addr.c
-+++ b/drivers/infiniband/core/addr.c
-@@ -186,22 +186,22 @@ static int addr4_resolve(struct sockaddr_in *src_in,
-       __be32 dst_ip = dst_in->sin_addr.s_addr;
-       struct rtable *rt;
-       struct neighbour *neigh;
--      struct flowi4 fl4;
-+      struct flowi fl;
-       int ret;
--      memset(&fl4, 0, sizeof(fl4));
--      fl4.daddr = dst_ip;
--      fl4.saddr = src_ip;
--      fl4.flowi4_oif = addr->bound_dev_if;
--      rt = ip_route_output_key(&init_net, &fl4);
-+      memset(&fl, 0, sizeof(fl));
-+      fl.nl_u.ip4_u.daddr = dst_ip;
-+      fl.nl_u.ip4_u.saddr = src_ip;
-+      fl.oif = addr->bound_dev_if;
-+      ret = ip_route_output_key(&init_net, &rt, &fl);
-       if (IS_ERR(rt)) {
-               ret = PTR_ERR(rt);
-               goto out;
-       }
-       src_in->sin_family = AF_INET;
--      src_in->sin_addr.s_addr = fl4.saddr;
-+      src_in->sin_addr.s_addr = rt->rt_src;
--      if (rt->dst.dev->flags & IFF_LOOPBACK) {
-+      if (rt->idev->dev->flags & IFF_LOOPBACK) {
-               ret = rdma_translate_ip((struct sockaddr *) dst_in, addr);
-               if (!ret)
-                       memcpy(addr->dst_dev_addr, addr->src_dev_addr, MAX_ADDR_LEN);
-@@ -209,15 +209,15 @@ static int addr4_resolve(struct sockaddr_in *src_in,
-       }
-       /* If the device does ARP internally, return 'done' */
--      if (rt->dst.dev->flags & IFF_NOARP) {
--              ret = rdma_copy_addr(addr, rt->dst.dev, NULL);
-+      if (rt->idev->dev->flags & IFF_NOARP) {
-+              ret = rdma_copy_addr(addr, rt->idev->dev, NULL);
-               goto put;
-       }
--      neigh = neigh_lookup(&arp_tbl, &rt->rt_gateway, rt->dst.dev);
-+      neigh = neigh_lookup(&arp_tbl, &rt->rt_gateway, rt->idev->dev);
-       if (!neigh || !(neigh->nud_state & NUD_VALID)) {
-               rcu_read_lock();
--              neigh_event_send(dst_get_neighbour(&rt->dst), NULL);
-+              neigh_event_send(rt->u.dst.neighbour, NULL);
-               rcu_read_unlock();
-               ret = -ENODATA;
-               if (neigh)
-@@ -239,28 +239,28 @@ static int addr6_resolve(struct sockaddr_in6 *src_in,
-                        struct sockaddr_in6 *dst_in,
-                        struct rdma_dev_addr *addr)
- {
--      struct flowi6 fl6;
-+      struct flowi fl;
-       struct neighbour *neigh;
-       struct dst_entry *dst;
-       int ret;
--      memset(&fl6, 0, sizeof fl6);
--      ipv6_addr_copy(&fl6.daddr, &dst_in->sin6_addr);
--      ipv6_addr_copy(&fl6.saddr, &src_in->sin6_addr);
--      fl6.flowi6_oif = addr->bound_dev_if;
-+      memset(&fl, 0, sizeof fl);
-+      ipv6_addr_copy(&fl.fl6_dst, &dst_in->sin6_addr);
-+      ipv6_addr_copy(&fl.fl6_src, &src_in->sin6_addr);
-+      fl.oif = addr->bound_dev_if;
--      dst = ip6_route_output(&init_net, NULL, &fl6);
-+      dst = ip6_route_output(&init_net, NULL, &fl);
-       if ((ret = dst->error))
-               goto put;
--      if (ipv6_addr_any(&fl6.saddr)) {
-+      if (ipv6_addr_any(&fl.fl6_src)) {
-               ret = ipv6_dev_get_saddr(&init_net, ip6_dst_idev(dst)->dev,
--                                       &fl6.daddr, 0, &fl6.saddr);
-+                                       &fl.fl6_dst, 0, &fl.fl6_src);
-               if (ret)
-                       goto put;
-               src_in->sin6_family = AF_INET6;
--              ipv6_addr_copy(&src_in->sin6_addr, &fl6.saddr);
-+              ipv6_addr_copy(&src_in->sin6_addr, &fl.fl6_src);
-       }
-       if (dst->dev->flags & IFF_LOOPBACK) {
-diff --git a/drivers/infiniband/core/mad.c b/drivers/infiniband/core/mad.c
-index 2fe428b..a8a769d 100644
---- a/drivers/infiniband/core/mad.c
-+++ b/drivers/infiniband/core/mad.c
-@@ -1200,7 +1200,10 @@ static int method_in_use(struct ib_mad_mgmt_method_table **method,
- {
-       int i;
--      for_each_set_bit(i, mad_reg_req->method_mask, IB_MGMT_MAX_METHODS) {
-+      for (i = find_first_bit(mad_reg_req->method_mask, IB_MGMT_MAX_METHODS);
-+           i < IB_MGMT_MAX_METHODS;
-+           i = find_next_bit(mad_reg_req->method_mask, IB_MGMT_MAX_METHODS,
-+                             1+i)) {
-               if ((*method)->agent[i]) {
-                       printk(KERN_ERR PFX "Method %d already in use\n", i);
-                       return -EINVAL;
-@@ -1334,8 +1337,13 @@ static int add_nonoui_reg_req(struct ib_mad_reg_req *mad_reg_req,
-               goto error3;
-       /* Finally, add in methods being registered */
--      for_each_set_bit(i, mad_reg_req->method_mask, IB_MGMT_MAX_METHODS)
-+      for (i = find_first_bit(mad_reg_req->method_mask,
-+                              IB_MGMT_MAX_METHODS);
-+           i < IB_MGMT_MAX_METHODS;
-+           i = find_next_bit(mad_reg_req->method_mask, IB_MGMT_MAX_METHODS,
-+                             1+i)) {
-               (*method)->agent[i] = agent_priv;
-+      }
-       return 0;
-@@ -1429,8 +1437,13 @@ check_in_use:
-               goto error4;
-       /* Finally, add in methods being registered */
--      for_each_set_bit(i, mad_reg_req->method_mask, IB_MGMT_MAX_METHODS)
-+      for (i = find_first_bit(mad_reg_req->method_mask,
-+                              IB_MGMT_MAX_METHODS);
-+           i < IB_MGMT_MAX_METHODS;
-+           i = find_next_bit(mad_reg_req->method_mask, IB_MGMT_MAX_METHODS,
-+                             1+i)) {
-               (*method)->agent[i] = agent_priv;
-+      }
-       return 0;
-diff --git a/drivers/infiniband/core/netlink.c b/drivers/infiniband/core/netlink.c
-index d1c8196..3e62f8b 100644
---- a/drivers/infiniband/core/netlink.c
-+++ b/drivers/infiniband/core/netlink.c
-@@ -30,7 +30,9 @@
-  * SOFTWARE.
-  */
-+#ifndef pr_fmt
- #define pr_fmt(fmt) "%s:%s: " fmt, KBUILD_MODNAME, __func__
-+#endif
- #include <linux/export.h>
- #include <net/netlink.h>
-@@ -67,7 +69,7 @@ int ibnl_add_client(int index, int nops,
-       list_for_each_entry(cur, &client_list, list) {
-               if (cur->index == index) {
--                      pr_warn("Client for %d already exists\n", index);
-+                      printk("Client for %d already exists\n", index);
-                       mutex_unlock(&ibnl_mutex);
-                       kfree(nl_client);
-                       return -EINVAL;
-@@ -95,7 +97,7 @@ int ibnl_remove_client(int index)
-                       return 0;
-               }
-       }
--      pr_warn("Can't remove callback for client idx %d. Not found\n", index);
-+      printk("Can't remove callback for client idx %d. Not found\n", index);
-       mutex_unlock(&ibnl_mutex);
-       return -EINVAL;
-@@ -149,7 +151,7 @@ static int ibnl_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
-                               return -EINVAL;
-                       return netlink_dump_start(nls, skb, nlh,
-                                                 client->cb_table[op].dump,
--                                                NULL, 0);
-+                                                NULL);
-               }
-       }
-@@ -169,7 +171,7 @@ int __init ibnl_init(void)
-       nls = netlink_kernel_create(&init_net, NETLINK_RDMA, 0, ibnl_rcv,
-                                   NULL, THIS_MODULE);
-       if (!nls) {
--              pr_warn("Failed to create netlink socket\n");
-+              printk("Failed to create netlink socket\n");
-               return -ENOMEM;
-       }
-diff --git a/drivers/infiniband/core/sysfs.c b/drivers/infiniband/core/sysfs.c
-index c61bca3..2b4d2fc 100644
---- a/drivers/infiniband/core/sysfs.c
-+++ b/drivers/infiniband/core/sysfs.c
-@@ -495,7 +495,6 @@ alloc_group_attrs(ssize_t (*show)(struct ib_port *,
-               element->attr.attr.mode  = S_IRUGO;
-               element->attr.show       = show;
-               element->index           = i;
--              sysfs_attr_init(&element->attr.attr);
-               tab_attr[i] = &element->attr.attr;
-       }
-diff --git a/drivers/infiniband/core/ucm.c b/drivers/infiniband/core/ucm.c
-index b8a0b4a..d249a44 100644
---- a/drivers/infiniband/core/ucm.c
-+++ b/drivers/infiniband/core/ucm.c
-@@ -1333,8 +1333,11 @@ static void ib_ucm_remove_one(struct ib_device *device)
-       device_unregister(&ucm_dev->dev);
- }
--static CLASS_ATTR_STRING(abi_version, S_IRUGO,
--                       __stringify(IB_USER_CM_ABI_VERSION));
-+static ssize_t show_abi_version(struct class *class, char *buf)
-+{
-+      return sprintf(buf, "%d\n", IB_USER_CM_ABI_VERSION);
-+}
-+static CLASS_ATTR(abi_version, S_IRUGO, show_abi_version, NULL);
- static int __init ib_ucm_init(void)
- {
-@@ -1347,7 +1350,7 @@ static int __init ib_ucm_init(void)
-               goto error1;
-       }
--      ret = class_create_file(&cm_class, &class_attr_abi_version.attr);
-+      ret = class_create_file(&cm_class, &class_attr_abi_version);
-       if (ret) {
-               printk(KERN_ERR "ucm: couldn't create abi_version attribute\n");
-               goto error2;
-@@ -1361,7 +1364,7 @@ static int __init ib_ucm_init(void)
-       return 0;
- error3:
--      class_remove_file(&cm_class, &class_attr_abi_version.attr);
-+      class_remove_file(&cm_class, &class_attr_abi_version);
- error2:
-       unregister_chrdev_region(IB_UCM_BASE_DEV, IB_UCM_MAX_DEVICES);
- error1:
-@@ -1371,7 +1374,7 @@ error1:
- static void __exit ib_ucm_cleanup(void)
- {
-       ib_unregister_client(&ucm_client);
--      class_remove_file(&cm_class, &class_attr_abi_version.attr);
-+      class_remove_file(&cm_class, &class_attr_abi_version);
-       unregister_chrdev_region(IB_UCM_BASE_DEV, IB_UCM_MAX_DEVICES);
-       if (overflow_maj)
-               unregister_chrdev_region(overflow_maj, IB_UCM_MAX_DEVICES);
-diff --git a/drivers/infiniband/core/user_mad.c b/drivers/infiniband/core/user_mad.c
-index 07db229..2fc66f0 100644
---- a/drivers/infiniband/core/user_mad.c
-+++ b/drivers/infiniband/core/user_mad.c
-@@ -969,8 +969,11 @@ static ssize_t show_port(struct device *dev, struct device_attribute *attr,
- }
- static DEVICE_ATTR(port, S_IRUGO, show_port, NULL);
--static CLASS_ATTR_STRING(abi_version, S_IRUGO,
--                       __stringify(IB_USER_MAD_ABI_VERSION));
-+static ssize_t show_abi_version(struct class *class, char *buf)
-+{
-+      return sprintf(buf, "%d\n", IB_USER_MAD_ABI_VERSION);
-+}
-+static CLASS_ATTR(abi_version, S_IRUGO, show_abi_version, NULL);
- static dev_t overflow_maj;
- static DECLARE_BITMAP(overflow_map, IB_UMAD_MAX_PORTS);
-@@ -1200,7 +1203,7 @@ static int __init ib_umad_init(void)
-       umad_class->devnode = umad_devnode;
--      ret = class_create_file(umad_class, &class_attr_abi_version.attr);
-+      ret = class_create_file(umad_class, &class_attr_abi_version);
-       if (ret) {
-               printk(KERN_ERR "user_mad: couldn't create abi_version attribute\n");
-               goto out_class;
-diff --git a/drivers/infiniband/core/uverbs_main.c b/drivers/infiniband/core/uverbs_main.c
-index 8796367..9ce0700 100644
---- a/drivers/infiniband/core/uverbs_main.c
-+++ b/drivers/infiniband/core/uverbs_main.c
-@@ -715,8 +715,11 @@ static ssize_t show_dev_abi_version(struct device *device,
- }
- static DEVICE_ATTR(abi_version, S_IRUGO, show_dev_abi_version, NULL);
--static CLASS_ATTR_STRING(abi_version, S_IRUGO,
--                       __stringify(IB_USER_VERBS_ABI_VERSION));
-+static ssize_t show_abi_version(struct class *class, char *buf)
-+{
-+      return sprintf(buf, "%d\n", IB_USER_VERBS_ABI_VERSION);
-+}
-+static CLASS_ATTR(abi_version, S_IRUGO, show_abi_version, NULL);
- static dev_t overflow_maj;
- static DECLARE_BITMAP(overflow_map, IB_UVERBS_MAX_DEVICES);
-@@ -873,7 +876,7 @@ static int __init ib_uverbs_init(void)
-       uverbs_class->devnode = uverbs_devnode;
--      ret = class_create_file(uverbs_class, &class_attr_abi_version.attr);
-+      ret = class_create_file(uverbs_class, &class_attr_abi_version);
-       if (ret) {
-               printk(KERN_ERR "user_verbs: couldn't create abi_version attribute\n");
-               goto out_class;
--- 
-1.5.4.3
-
diff --git a/backports/2.6.32-EL6.2/05-ipoib-Add-RHEL6.2-backports.patch b/backports/2.6.32-EL6.2/05-ipoib-Add-RHEL6.2-backports.patch
deleted file mode 100644 (file)
index 406e7b8..0000000
+++ /dev/null
@@ -1,167 +0,0 @@
-From d351f953e3bc99e834b820702d7e121e153ada70 Mon Sep 17 00:00:00 2001
-From: Vladimir Sokolovsky <vlad@mellanox.com>
-Date: Fri, 23 Mar 2012 21:30:36 +0200
-Subject: [PATCH] ipoib: Add RHEL6.2 backports
-
-Signed-off-by: Vladimir Sokolovsky <vlad@mellanox.com>
----
- drivers/infiniband/ulp/ipoib/ipoib.h           |    1 +
- drivers/infiniband/ulp/ipoib/ipoib_cm.c        |   17 +++++++++++++----
- drivers/infiniband/ulp/ipoib/ipoib_main.c      |   17 ++---------------
- drivers/infiniband/ulp/ipoib/ipoib_multicast.c |   11 ++++++-----
- 4 files changed, 22 insertions(+), 24 deletions(-)
-
-diff --git a/drivers/infiniband/ulp/ipoib/ipoib.h b/drivers/infiniband/ulp/ipoib/ipoib.h
-index b3cc1e0..c89fb6c 100644
---- a/drivers/infiniband/ulp/ipoib/ipoib.h
-+++ b/drivers/infiniband/ulp/ipoib/ipoib.h
-@@ -91,6 +91,7 @@ enum {
-       IPOIB_STOP_REAPER         = 7,
-       IPOIB_FLAG_ADMIN_CM       = 9,
-       IPOIB_FLAG_UMCAST         = 10,
-+      IPOIB_FLAG_CSUM           = 11,
-       IPOIB_MAX_BACKOFF_SECONDS = 16,
-diff --git a/drivers/infiniband/ulp/ipoib/ipoib_cm.c b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
-index 014504d..d9f2eaf 100644
---- a/drivers/infiniband/ulp/ipoib/ipoib_cm.c
-+++ b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
-@@ -1097,12 +1097,13 @@ static int ipoib_cm_tx_init(struct ipoib_cm_tx *p, u32 qpn,
-       struct ipoib_dev_priv *priv = netdev_priv(p->dev);
-       int ret;
--      p->tx_ring = vzalloc(ipoib_sendq_size * sizeof *p->tx_ring);
-+      p->tx_ring = vmalloc(ipoib_sendq_size * sizeof *p->tx_ring);
-       if (!p->tx_ring) {
-               ipoib_warn(priv, "failed to allocate tx ring\n");
-               ret = -ENOMEM;
-               goto err_tx;
-       }
-+      memset(p->tx_ring, 0, ipoib_sendq_size * sizeof *p->tx_ring);
-       p->qp = ipoib_cm_create_tx_qp(p->dev, p);
-       if (IS_ERR(p->qp)) {
-@@ -1378,7 +1379,7 @@ static void ipoib_cm_skb_reap(struct work_struct *work)
-                       icmp_send(skb, ICMP_DEST_UNREACH, ICMP_FRAG_NEEDED, htonl(mtu));
- #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
-               else if (skb->protocol == htons(ETH_P_IPV6))
--                      icmpv6_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu);
-+                      icmpv6_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu, priv->dev);
- #endif
-               dev_kfree_skb_any(skb);
-@@ -1465,7 +1466,11 @@ static ssize_t set_mode(struct device *d, struct device_attribute *attr,
-               set_bit(IPOIB_FLAG_ADMIN_CM, &priv->flags);
-               ipoib_warn(priv, "enabling connected mode "
-                          "will cause multicast packet drops\n");
--              netdev_update_features(dev);
-+              dev->features &= ~(NETIF_F_IP_CSUM | NETIF_F_SG | NETIF_F_TSO);
-+              if (ipoib_cm_max_mtu(dev) > priv->mcast_mtu)
-+                      ipoib_warn(priv, "mtu > %d will cause multicast packet drops.\n",
-+                                 priv->mcast_mtu);
-+              dev_set_mtu(dev, ipoib_cm_max_mtu(dev));
-               rtnl_unlock();
-               priv->tx_wr.send_flags &= ~IB_SEND_IP_CSUM;
-@@ -1475,7 +1480,11 @@ static ssize_t set_mode(struct device *d, struct device_attribute *attr,
-       if (!strcmp(buf, "datagram\n")) {
-               clear_bit(IPOIB_FLAG_ADMIN_CM, &priv->flags);
--              netdev_update_features(dev);
-+              if (test_bit(IPOIB_FLAG_CSUM, &priv->flags)) {
-+                      dev->features |= NETIF_F_IP_CSUM | NETIF_F_SG;
-+                      if (priv->hca_caps & IB_DEVICE_UD_TSO)
-+                              dev->features |= NETIF_F_TSO;
-+              }
-               dev_set_mtu(dev, min(priv->mcast_mtu, dev->mtu));
-               rtnl_unlock();
-               ipoib_flush_paths(dev);
-diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c
-index 83695b4..4f77a5a 100644
---- a/drivers/infiniband/ulp/ipoib/ipoib_main.c
-+++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
-@@ -171,16 +171,6 @@ static int ipoib_stop(struct net_device *dev)
-       return 0;
- }
--static u32 ipoib_fix_features(struct net_device *dev, u32 features)
--{
--      struct ipoib_dev_priv *priv = netdev_priv(dev);
--
--      if (test_bit(IPOIB_FLAG_ADMIN_CM, &priv->flags))
--              features &= ~(NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_TSO);
--
--      return features;
--}
--
- static int ipoib_change_mtu(struct net_device *dev, int new_mtu)
- {
-       struct ipoib_dev_priv *priv = netdev_priv(dev);
-@@ -999,7 +989,6 @@ static const struct net_device_ops ipoib_netdev_ops = {
-       .ndo_open                = ipoib_open,
-       .ndo_stop                = ipoib_stop,
-       .ndo_change_mtu          = ipoib_change_mtu,
--      .ndo_fix_features        = ipoib_fix_features,
-       .ndo_start_xmit          = ipoib_start_xmit,
-       .ndo_tx_timeout          = ipoib_timeout,
-       .ndo_set_rx_mode         = ipoib_set_mcast_list,
-@@ -1184,13 +1173,11 @@ 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 |
-+              priv->dev->features = NETIF_F_SG |
-                       NETIF_F_IP_CSUM | NETIF_F_RXCSUM;
-               if (priv->hca_caps & IB_DEVICE_UD_TSO)
--                      priv->dev->hw_features |= NETIF_F_TSO;
--
--              priv->dev->features |= priv->dev->hw_features;
-+                      priv->dev->features |= NETIF_F_TSO;
-       }
-       return 0;
-diff --git a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
-index 873bff9..411c544 100644
---- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
-+++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
-@@ -269,7 +269,7 @@ static int ipoib_mcast_join_finish(struct ipoib_mcast *mcast,
-               skb->dev = dev;
-               if (dst)
--                      n = dst_get_neighbour_raw(dst);
-+                      n = dst->neighbour;
-               if (!dst || !n) {
-                       /* put pseudoheader back on for next time */
-                       skb_push(skb, sizeof (struct ipoib_pseudoheader));
-@@ -796,7 +796,7 @@ void ipoib_mcast_restart_task(struct work_struct *work)
-       struct ipoib_dev_priv *priv =
-               container_of(work, struct ipoib_dev_priv, restart_task);
-       struct net_device *dev = priv->dev;
--      struct netdev_hw_addr *ha;
-+      struct dev_mc_list *mclist;
-       struct ipoib_mcast *mcast, *tmcast;
-       LIST_HEAD(remove_list);
-       unsigned long flags;
-@@ -821,13 +821,14 @@ void ipoib_mcast_restart_task(struct work_struct *work)
-               clear_bit(IPOIB_MCAST_FLAG_FOUND, &mcast->flags);
-       /* Mark all of the entries that are found or don't exist */
--      netdev_for_each_mc_addr(ha, dev) {
-+      for (mclist = dev->mc_list; mclist; mclist = mclist->next) {
-               union ib_gid mgid;
--              if (!ipoib_mcast_addr_is_valid(ha->addr, dev->broadcast))
-+              if (!ipoib_mcast_addr_is_valid(mclist->dmi_addr,
-+                                             dev->broadcast))
-                       continue;
--              memcpy(mgid.raw, ha->addr + 4, sizeof mgid);
-+              memcpy(mgid.raw, mclist->dmi_addr + 4, sizeof mgid);
-               mcast = __ipoib_mcast_find(dev, &mgid);
-               if (!mcast || test_bit(IPOIB_MCAST_FLAG_SENDONLY, &mcast->flags)) {
--- 
-1.5.4.3
-
diff --git a/backports/2.6.32-EL6.2/06-mlx4_en-Add-RHEL6.2-backports.patch b/backports/2.6.32-EL6.2/06-mlx4_en-Add-RHEL6.2-backports.patch
deleted file mode 100644 (file)
index c710ff7..0000000
+++ /dev/null
@@ -1,172 +0,0 @@
-From ac7e5469789da2ef1aa24cf1f28c23a0d630a294 Mon Sep 17 00:00:00 2001
-From: Vladimir Sokolovsky <vlad@mellanox.com>
-Date: Fri, 23 Mar 2012 21:34:13 +0200
-Subject: [PATCH] mlx4_en: Add RHEL6.2 backports
-
-Signed-off-by: Vladimir Sokolovsky <vlad@mellanox.com>
----
- drivers/net/ethernet/mellanox/mlx4/en_netdev.c |   71 ++++++++++++++----------
- drivers/net/ethernet/mellanox/mlx4/mlx4_en.h   |    3 +-
- 2 files changed, 42 insertions(+), 32 deletions(-)
-
-diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
-index 78d776b..776475d 100644
---- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
-+++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
-@@ -146,29 +146,40 @@ static void mlx4_en_do_set_mac(struct work_struct *work)
- static void mlx4_en_clear_list(struct net_device *dev)
- {
-       struct mlx4_en_priv *priv = netdev_priv(dev);
-+      struct dev_mc_list *plist = priv->mc_list;
-+      struct dev_mc_list *next;
--      kfree(priv->mc_addrs);
--      priv->mc_addrs_cnt = 0;
-+      while (plist) {
-+              next = plist->next;
-+              kfree(plist);
-+              plist = next;
-+      }
-+      priv->mc_list = NULL;
- }
- static void mlx4_en_cache_mclist(struct net_device *dev)
- {
-       struct mlx4_en_priv *priv = netdev_priv(dev);
--      struct netdev_hw_addr *ha;
--      char *mc_addrs;
--      int mc_addrs_cnt = netdev_mc_count(dev);
--      int i;
--
--      mc_addrs = kmalloc(mc_addrs_cnt * ETH_ALEN, GFP_ATOMIC);
--      if (!mc_addrs) {
--              en_err(priv, "failed to allocate multicast list\n");
--              return;
-+      struct dev_mc_list *mclist;
-+      struct dev_mc_list *tmp;
-+      struct dev_mc_list *plist = NULL;
-+
-+      mlx4_en_clear_list(dev);
-+      for (mclist = dev->mc_list; mclist; mclist = mclist->next) {
-+              tmp = kmalloc(sizeof(struct dev_mc_list), GFP_ATOMIC);
-+              if (!tmp) {
-+                      en_err(priv, "failed to allocate multicast list\n");
-+                      mlx4_en_clear_list(dev);
-+                      return;
-+              }
-+              memcpy(tmp, mclist, sizeof(struct dev_mc_list));
-+              tmp->next = NULL;
-+              if (plist)
-+                      plist->next = tmp;
-+              else
-+                      priv->mc_list = tmp;
-+              plist = tmp;
-       }
--      i = 0;
--      netdev_for_each_mc_addr(ha, dev)
--              memcpy(mc_addrs + i++ * ETH_ALEN, ha->addr, ETH_ALEN);
--      priv->mc_addrs = mc_addrs;
--      priv->mc_addrs_cnt = mc_addrs_cnt;
- }
-@@ -188,6 +199,7 @@ static void mlx4_en_do_set_multicast(struct work_struct *work)
-                                                mcast_task);
-       struct mlx4_en_dev *mdev = priv->mdev;
-       struct net_device *dev = priv->dev;
-+      struct dev_mc_list *mclist;
-       u64 mcast_addr = 0;
-       u8 mc_list[16] = {0};
-       int err;
-@@ -300,7 +312,6 @@ static void mlx4_en_do_set_multicast(struct work_struct *work)
-                       priv->flags |= MLX4_EN_FLAG_MC_PROMISC;
-               }
-       } else {
--              int i;
-               /* Disable Multicast promisc */
-               if (priv->flags & MLX4_EN_FLAG_MC_PROMISC) {
-                       err = mlx4_multicast_promisc_remove(mdev->dev, priv->base_qpn,
-@@ -316,8 +327,8 @@ static void mlx4_en_do_set_multicast(struct work_struct *work)
-                       en_err(priv, "Failed disabling multicast filter\n");
-               /* Detach our qp from all the multicast addresses */
--              for (i = 0; i < priv->mc_addrs_cnt; i++) {
--                      memcpy(&mc_list[10], priv->mc_addrs + i * ETH_ALEN, ETH_ALEN);
-+              for (mclist = priv->mc_list; mclist; mclist = mclist->next) {
-+                      memcpy(&mc_list[10], mclist->dmi_addr, ETH_ALEN);
-                       mc_list[5] = priv->port;
-                       mlx4_multicast_detach(mdev->dev, &priv->rss_map.indir_qp,
-                                             mc_list, MLX4_PROT_ETH);
-@@ -331,13 +342,12 @@ static void mlx4_en_do_set_multicast(struct work_struct *work)
-               netif_tx_lock_bh(dev);
-               mlx4_en_cache_mclist(dev);
-               netif_tx_unlock_bh(dev);
--              for (i = 0; i < priv->mc_addrs_cnt; i++) {
--                      mcast_addr =
--                            mlx4_en_mac_to_u64(priv->mc_addrs + i * ETH_ALEN);
--                      memcpy(&mc_list[10], priv->mc_addrs + i * ETH_ALEN, ETH_ALEN);
-+              for (mclist = priv->mc_list; mclist; mclist = mclist->next) {
-+                      memcpy(&mc_list[10], mclist->dmi_addr, ETH_ALEN);
-                       mc_list[5] = priv->port;
-                       mlx4_multicast_attach(mdev->dev, &priv->rss_map.indir_qp,
-                                             mc_list, 0, MLX4_PROT_ETH);
-+                      mcast_addr = mlx4_en_mac_to_u64(mclist->dmi_addr);
-                       mlx4_SET_MCAST_FLTR(mdev->dev, priv->port,
-                                           mcast_addr, 0, MLX4_MCAST_CONFIG);
-               }
-@@ -714,6 +724,7 @@ void mlx4_en_stop_port(struct net_device *dev)
- {
-       struct mlx4_en_priv *priv = netdev_priv(dev);
-       struct mlx4_en_dev *mdev = priv->mdev;
-+      struct dev_mc_list *mclist;
-       int i;
-       u8 mc_list[16] = {0};
-@@ -735,8 +746,8 @@ void mlx4_en_stop_port(struct net_device *dev)
-       mc_list[5] = priv->port;
-       mlx4_multicast_detach(mdev->dev, &priv->rss_map.indir_qp, mc_list,
-                             MLX4_PROT_ETH);
--      for (i = 0; i < priv->mc_addrs_cnt; i++) {
--              memcpy(&mc_list[10], priv->mc_addrs + i * ETH_ALEN, ETH_ALEN);
-+      for (mclist = priv->mc_list; mclist; mclist = mclist->next) {
-+              memcpy(&mc_list[10], mclist->dmi_addr, ETH_ALEN);
-               mc_list[5] = priv->port;
-               mlx4_multicast_detach(mdev->dev, &priv->rss_map.indir_qp,
-                                     mc_list, MLX4_PROT_ETH);
-@@ -1078,14 +1089,14 @@ int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int port,
-       /*
-        * Set driver features
-        */
--      dev->hw_features = NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM;
-+      dev->features = NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM;
-       if (mdev->LSO_support)
--              dev->hw_features |= NETIF_F_TSO | NETIF_F_TSO6;
-+              dev->features |= NETIF_F_TSO | NETIF_F_TSO6;
--      dev->vlan_features = dev->hw_features;
-+      dev->vlan_features = dev->features;
--      dev->hw_features |= NETIF_F_RXCSUM | NETIF_F_RXHASH;
--      dev->features = dev->hw_features | NETIF_F_HIGHDMA |
-+      dev->features |= NETIF_F_RXCSUM | NETIF_F_RXHASH |
-+                      NETIF_F_HIGHDMA |
-                       NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX |
-                       NETIF_F_HW_VLAN_FILTER;
-diff --git a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
-index 207b5ad..6b99109 100644
---- a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
-+++ b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
-@@ -485,8 +485,7 @@ struct mlx4_en_priv {
-       struct mlx4_en_perf_stats pstats;
-       struct mlx4_en_pkt_stats pkstats;
-       struct mlx4_en_port_stats port_stats;
--      char *mc_addrs;
--      int mc_addrs_cnt;
-+      struct dev_mc_list *mc_list;
-       struct mlx4_en_stat_out_mbox hw_stats;
-       int vids[128];
-       bool wol;
--- 
-1.5.4.3
-
diff --git a/backports/2.6.32-EL6.2/07-mlx4_ib-Add-RHEL6.2-backports.patch b/backports/2.6.32-EL6.2/07-mlx4_ib-Add-RHEL6.2-backports.patch
deleted file mode 100644 (file)
index c445866..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-From 06357ad55ed41358be53d656451721d7df6eac6e Mon Sep 17 00:00:00 2001
-From: Vladimir Sokolovsky <vlad@mellanox.com>
-Date: Fri, 23 Mar 2012 21:34:39 +0200
-Subject: [PATCH] mlx4_ib: Add RHEL6.2 backports
-
-Signed-off-by: Vladimir Sokolovsky <vlad@mellanox.com>
----
- drivers/infiniband/hw/mlx4/main.c |    4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/infiniband/hw/mlx4/main.c b/drivers/infiniband/hw/mlx4/main.c
-index 18836cd..c12c292 100644
---- a/drivers/infiniband/hw/mlx4/main.c
-+++ b/drivers/infiniband/hw/mlx4/main.c
-@@ -698,7 +698,7 @@ int mlx4_ib_add_mc(struct mlx4_ib_dev *mdev, struct mlx4_ib_qp *mqp,
-       if (ndev) {
-               rdma_get_mcast_mac((struct in6_addr *)gid, mac);
-               rtnl_lock();
--              dev_mc_add(mdev->iboe.netdevs[mqp->port - 1], mac);
-+              dev_mc_add(mdev->iboe.netdevs[mqp->port - 1], mac, 6, 0);
-               ret = 1;
-               rtnl_unlock();
-               dev_put(ndev);
-@@ -771,7 +771,7 @@ static int mlx4_ib_mcg_detach(struct ib_qp *ibqp, union ib_gid *gid, u16 lid)
-               rdma_get_mcast_mac((struct in6_addr *)gid, mac);
-               if (ndev) {
-                       rtnl_lock();
--                      dev_mc_del(mdev->iboe.netdevs[ge->port - 1], mac);
-+                      dev_mc_delete(mdev->iboe.netdevs[ge->port - 1], mac, 6, 0);
-                       rtnl_unlock();
-                       dev_put(ndev);
-               }
--- 
-1.5.4.3
-
diff --git a/backports/2.6.32-EL6.2/08-rds-Add-RHEL6.2-backports.patch b/backports/2.6.32-EL6.2/08-rds-Add-RHEL6.2-backports.patch
deleted file mode 100644 (file)
index cbdc675..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-From 7fcb2f5260095d495a96f53642e593e023a9a9b6 Mon Sep 17 00:00:00 2001
-From: Vladimir Sokolovsky <vlad@mellanox.com>
-Date: Fri, 23 Mar 2012 21:36:27 +0200
-Subject: [PATCH] rds: Add RHEL6.2 backports
-
-Signed-off-by: Vladimir Sokolovsky <vlad@mellanox.com>
----
- net/rds/tcp_listen.c |    9 +++++++++
- 1 files changed, 9 insertions(+), 0 deletions(-)
-
-diff --git a/net/rds/tcp_listen.c b/net/rds/tcp_listen.c
-index 8b5cc4a..4c5ab88 100644
---- a/net/rds/tcp_listen.c
-+++ b/net/rds/tcp_listen.c
-@@ -67,12 +67,21 @@ static int rds_tcp_accept_one(struct socket *sock)
-       inet = inet_sk(new_sock->sk);
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,32))
-       rdsdebug("accepted tcp %pI4:%u -> %pI4:%u\n",
-                &inet->inet_saddr, ntohs(inet->inet_sport),
-                &inet->inet_daddr, ntohs(inet->inet_dport));
-       conn = rds_conn_create(inet->inet_saddr, inet->inet_daddr,
-                              &rds_tcp_transport, GFP_KERNEL);
-+#else
-+      rdsdebug("accepted tcp %pI4:%u -> %pI4:%u\n",
-+               &inet->saddr, ntohs(inet->sport),
-+               &inet->daddr, ntohs(inet->dport));
-+
-+      conn = rds_conn_create(inet->saddr, inet->daddr,
-+                             &rds_tcp_transport, GFP_KERNEL);
-+#endif
-       if (IS_ERR(conn)) {
-               ret = PTR_ERR(conn);
-               goto out;
--- 
-1.5.4.3
-
diff --git a/backports/2.6.32-EL6.2/09-cxgb4-Reversing-convert-to-SKB-paged-frag-API.patch b/backports/2.6.32-EL6.2/09-cxgb4-Reversing-convert-to-SKB-paged-frag-API.patch
deleted file mode 100644 (file)
index 119e593..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-From 198ea4dc9d2e1e38995ca5442d71b8bee9247a0c Mon Sep 17 00:00:00 2001
-From: Vipul Pandya <vipul@chelsio.com>
-Date: Mon, 7 May 2012 14:17:55 +0530
-Subject: [PATCH 01/14] cxgb4: Reversing convert to SKB paged frag API.
-
-This patch is a reverse patch of upstream commit
-e91b0f2491f7a7b21c4e562df09f3dbe551f0fe2
-
-Signed-off-by: Vipul Pandya <vipul@chelsio.com>
----
- drivers/net/ethernet/chelsio/cxgb4/cxgb4.h |    2 +-
- drivers/net/ethernet/chelsio/cxgb4/sge.c   |   47 ++++++++++++++-------------
- 2 files changed, 25 insertions(+), 24 deletions(-)
-
-diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h b/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
-index 0fe1885..223a7f7 100644
---- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
-+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
-@@ -326,7 +326,7 @@ struct sge_fl {                     /* SGE free-buffer queue state */
-
- /* A packet gather list */
- struct pkt_gl {
--      struct page_frag frags[MAX_SKB_FRAGS];
-+      skb_frag_t frags[MAX_SKB_FRAGS];
-       void *va;                         /* virtual address of first byte */
-       unsigned int nfrags;              /* # of fragments */
-       unsigned int tot_len;             /* total length of fragments */
-diff --git a/drivers/net/ethernet/chelsio/cxgb4/sge.c b/drivers/net/ethernet/chelsio/cxgb4/sge.c
-index 140254c..7fa9fd0 100644
---- a/drivers/net/ethernet/chelsio/cxgb4/sge.c
-+++ b/drivers/net/ethernet/chelsio/cxgb4/sge.c
-@@ -216,8 +216,8 @@ static int map_skb(struct device *dev, const struct sk_buff *skb,
-       end = &si->frags[si->nr_frags];
-
-       for (fp = si->frags; fp < end; fp++) {
--              *++addr = skb_frag_dma_map(dev, fp, 0, skb_frag_size(fp),
--                                         DMA_TO_DEVICE);
-+              *++addr = dma_map_page(dev, fp->page, fp->page_offset,
-+                                     skb_frag_size(fp), DMA_TO_DEVICE);
-               if (dma_mapping_error(dev, *addr))
-                       goto unwind;
-       }
-@@ -1410,23 +1410,23 @@ int cxgb4_ofld_send(struct net_device *dev, struct sk_buff *skb)
- }
- EXPORT_SYMBOL(cxgb4_ofld_send);
-
--static inline void copy_frags(struct sk_buff *skb,
-+static inline void copy_frags(struct skb_shared_info *ssi,
-                             const struct pkt_gl *gl, unsigned int offset)
- {
--      int i;
-+      unsigned int n;
-
-       /* usually there's just one frag */
--      __skb_fill_page_desc(skb, 0, gl->frags[0].page,
--                           gl->frags[0].offset + offset,
--                           gl->frags[0].size - offset);
--      skb_shinfo(skb)->nr_frags = gl->nfrags;
--      for (i = 1; i < gl->nfrags; i++)
--              __skb_fill_page_desc(skb, i, gl->frags[i].page,
--                                   gl->frags[i].offset,
--                                   gl->frags[i].size);
-+      ssi->frags[0].page = gl->frags[0].page;
-+      ssi->frags[0].page_offset = gl->frags[0].page_offset + offset;
-+      skb_frag_size_set(&ssi->frags[0],
-+                        skb_frag_size(&gl->frags[0]) - offset);
-+      ssi->nr_frags = gl->nfrags;
-+      n = gl->nfrags - 1;
-+      if (n)
-+              memcpy(&ssi->frags[1], &gl->frags[1], n * sizeof(skb_frag_t));
-
-       /* get a reference to the last page, we don't own it */
--      get_page(gl->frags[gl->nfrags - 1].page);
-+      get_page(gl->frags[n].page);
- }
-
- /**
-@@ -1461,7 +1461,7 @@ struct sk_buff *cxgb4_pktgl_to_skb(const struct pkt_gl *gl,
-               __skb_put(skb, pull_len);
-               skb_copy_to_linear_data(skb, gl->va, pull_len);
-
--              copy_frags(skb, gl, pull_len);
-+              copy_frags(skb_shinfo(skb), gl, pull_len);
-               skb->len = gl->tot_len;
-               skb->data_len = skb->len - pull_len;
-               skb->truesize += skb->data_len;
-@@ -1480,7 +1480,7 @@ EXPORT_SYMBOL(cxgb4_pktgl_to_skb);
- static void t4_pktgl_free(const struct pkt_gl *gl)
- {
-       int n;
--      const struct page_frag *p;
-+      const skb_frag_t *p;
-
-       for (p = gl->frags, n = gl->nfrags - 1; n--; p++)
-               put_page(p->page);
-@@ -1524,7 +1524,7 @@ static void do_gro(struct sge_eth_rxq *rxq, const struct pkt_gl *gl,
-               return;
-       }
-
--      copy_frags(skb, gl, RX_PKT_PAD);
-+      copy_frags(skb_shinfo(skb), gl, RX_PKT_PAD);
-       skb->len = gl->tot_len - RX_PKT_PAD;
-       skb->data_len = skb->len;
-       skb->truesize += skb->data_len;
-@@ -1700,7 +1700,7 @@ static int process_responses(struct sge_rspq *q, int budget)
-               rmb();
-               rsp_type = RSPD_TYPE(rc->type_gen);
-               if (likely(rsp_type == RSP_TYPE_FLBUF)) {
--                      struct page_frag *fp;
-+                      skb_frag_t *fp;
-                       struct pkt_gl si;
-                       const struct rx_sw_desc *rsd;
-                       u32 len = ntohl(rc->pldbuflen_qid), bufsz, frags;
-@@ -1719,9 +1719,9 @@ static int process_responses(struct sge_rspq *q, int budget)
-                               rsd = &rxq->fl.sdesc[rxq->fl.cidx];
-                               bufsz = get_buf_size(rsd);
-                               fp->page = rsd->page;
--                              fp->offset = q->offset;
--                              fp->size = min(bufsz, len);
--                              len -= fp->size;
-+                              fp->page_offset = q->offset;
-+                              skb_frag_size_set(fp, min(bufsz, len));
-+                              len -= skb_frag_size(fp);
-                               if (!len)
-                                       break;
-                               unmap_rx_buf(q->adap, &rxq->fl);
-@@ -1733,16 +1733,17 @@ static int process_responses(struct sge_rspq *q, int budget)
-                        */
-                       dma_sync_single_for_cpu(q->adap->pdev_dev,
-                                               get_buf_addr(rsd),
--                                              fp->size, DMA_FROM_DEVICE);
-+                                              skb_frag_size(fp),
-+                                              DMA_FROM_DEVICE);
-
-                       si.va = page_address(si.frags[0].page) +
--                              si.frags[0].offset;
-+                              si.frags[0].page_offset;
-                       prefetch(si.va);
-
-                       si.nfrags = frags + 1;
-                       ret = q->handler(q, q->cur_desc, &si);
-                       if (likely(ret == 0))
--                              q->offset += ALIGN(fp->size, FL_ALIGN);
-+                              q->offset += ALIGN(skb_frag_size(fp), FL_ALIGN);
-                       else
-                               restore_rx_bufs(&si, &rxq->fl, frags);
-               } else if (likely(rsp_type == RSP_TYPE_CPL)) {
---
-1.7.1
-
diff --git a/backports/2.6.32-EL6.2/09-nes-RHEL6.2-backports.patch b/backports/2.6.32-EL6.2/09-nes-RHEL6.2-backports.patch
deleted file mode 100644 (file)
index 44c3b10..0000000
+++ /dev/null
@@ -1,261 +0,0 @@
-From 40c9be2518262d444504619daf15205e211d17d5 Mon Sep 17 00:00:00 2001
-From: Faisal Latif <faisal.latif@intel.com>
-Date: Sat, 21 Apr 2012 18:17:40 -0500
-Subject: [PATCH] nes: backport for RHEL6.2
-
-Add RHEL6.2 backports
-
-Signed-off-by: Faisal Latif <faisal.latif@intel.com>
----
- drivers/infiniband/hw/nes/nes.c     |    3 +-
- drivers/infiniband/hw/nes/nes_cm.c  |   14 ++--
- drivers/infiniband/hw/nes/nes_nic.c |  116 ++++++++++++-----------------------
- 3 files changed, 48 insertions(+), 85 deletions(-)
-
-diff --git a/drivers/infiniband/hw/nes/nes.c b/drivers/infiniband/hw/nes/nes.c
-index 5965b3d..28e7ebc 100644
---- a/drivers/infiniband/hw/nes/nes.c
-+++ b/drivers/infiniband/hw/nes/nes.c
-@@ -150,8 +150,7 @@ static int nes_inetaddr_event(struct notifier_block *notifier,
-                               nesdev, nesdev->netdev[0]->name);
-               netdev = nesdev->netdev[0];
-               nesvnic = netdev_priv(netdev);
--              is_bonded = netif_is_bond_slave(netdev) &&
--                          (netdev->master == event_netdev);
-+              is_bonded = (netdev->master == event_netdev);
-               if ((netdev == event_netdev) || is_bonded) {
-                       if (nesvnic->rdma_enabled == 0) {
-                               nes_debug(NES_DBG_NETDEV, "Returning without processing event for %s since"
-diff --git a/drivers/infiniband/hw/nes/nes_cm.c b/drivers/infiniband/hw/nes/nes_cm.c
-index 0a52d72..bc01b81 100644
---- a/drivers/infiniband/hw/nes/nes_cm.c
-+++ b/drivers/infiniband/hw/nes/nes_cm.c
-@@ -1331,19 +1331,21 @@ static inline int mini_cm_accelerated(struct nes_cm_core *cm_core,
- static int nes_addr_resolve_neigh(struct nes_vnic *nesvnic, u32 dst_ip, int arpindex)
- {
-       struct rtable *rt;
-+      struct flowi fl;
-       struct neighbour *neigh;
-       int rc = arpindex;
-       struct net_device *netdev;
-       struct nes_adapter *nesadapter = nesvnic->nesdev->nesadapter;
-
--      rt = ip_route_output(&init_net, htonl(dst_ip), 0, 0, 0);
--      if (IS_ERR(rt)) {
-+      memset(&fl, 0, sizeof fl);
-+      fl.nl_u.ip4_u.daddr = htonl(dst_ip);
-+      if (ip_route_output_key(&init_net, &rt, &fl)) {
-               printk(KERN_ERR "%s: ip_route_output_key failed for 0x%08X\n",
--                     __func__, dst_ip);
-+                              __func__, dst_ip);
-               return rc;
-       }
-
--      if (netif_is_bond_slave(nesvnic->netdev))
-+      if (nesvnic->netdev->master)
-               netdev = nesvnic->netdev->master;
-       else
-               netdev = nesvnic->netdev;
-@@ -1378,9 +1380,7 @@ static int nes_addr_resolve_neigh(struct nes_vnic *nesvnic, u32 dst_ip, int arpi
-       }
-
-       if ((neigh == NULL) || (!(neigh->nud_state & NUD_VALID))) {
--              rcu_read_lock();
--              neigh_event_send(dst_get_neighbour(&rt->dst), NULL);
--              rcu_read_unlock();
-+              neigh_event_send(rt->u.dst.neighbour, NULL);
-       }
-       ip_rt_put(rt);
-       return rc;
-diff --git a/drivers/infiniband/hw/nes/nes_nic.c b/drivers/infiniband/hw/nes/nes_nic.c
-index c00d2f3..89d06f7 100644
---- a/drivers/infiniband/hw/nes/nes_nic.c
-+++ b/drivers/infiniband/hw/nes/nes_nic.c
-@@ -865,6 +865,7 @@ static void nes_netdev_set_multicast_list(struct net_device *netdev)
-       struct nes_vnic *nesvnic = netdev_priv(netdev);
-       struct nes_device *nesdev = nesvnic->nesdev;
-       struct nes_adapter *nesadapter = nesvnic->nesdev->nesadapter;
-+      struct dev_mc_list *multicast_addr;
-       u32 nic_active_bit;
-       u32 nic_active;
-       u32 perfect_filter_register_address;
-@@ -877,7 +878,6 @@ static void nes_netdev_set_multicast_list(struct net_device *netdev)
-                                       nics_per_function, 4);
-       u8 max_pft_entries_avaiable = NES_PFT_SIZE - pft_entries_preallocated;
-       unsigned long flags;
--      int mc_count = netdev_mc_count(netdev);
-
-       spin_lock_irqsave(&nesadapter->resource_lock, flags);
-       nic_active_bit = 1 << nesvnic->nic_index;
-@@ -907,61 +907,46 @@ static void nes_netdev_set_multicast_list(struct net_device *netdev)
-                 mc_count, !!(netdev->flags & IFF_PROMISC),
-                 !!(netdev->flags & IFF_ALLMULTI));
-       if (!mc_all_on) {
--              char *addrs;
--              int i;
--              struct netdev_hw_addr *ha;
--
--              addrs = kmalloc(ETH_ALEN * mc_count, GFP_ATOMIC);
--              if (!addrs) {
--                      set_allmulti(nesdev, nic_active_bit);
--                      goto unlock;
--              }
--              i = 0;
--              netdev_for_each_mc_addr(ha, netdev)
--                      memcpy(get_addr(addrs, i++), ha->addr, ETH_ALEN);
--
-+              multicast_addr = netdev->mc_list;
-               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;
--                   mc_index++) {
--                      while (i < mc_count && nesvnic->mcrq_mcast_filter &&
--                      ((mc_nic_index = nesvnic->mcrq_mcast_filter(nesvnic,
--                                      get_addr(addrs, i++))) == 0));
-+                      pft_entries_preallocated * 0x8;
-+              for (mc_index = 0; mc_index < max_pft_entries_avaiable;
-+                              mc_index++) {
-+                      while (multicast_addr && nesvnic->mcrq_mcast_filter &&
-+                              ((mc_nic_index = nesvnic->mcrq_mcast_filter(nesvnic,
-+                                                  multicast_addr->dmi_addr)) == 0)) {
-+                              multicast_addr = multicast_addr->next;
-+                      }
-                       if (mc_nic_index < 0)
--                              mc_nic_index = nesvnic->nic_index;
-+                              mc_nic_index = (1 << nesvnic->nic_index);
-                       while (nesadapter->pft_mcast_map[mc_index] < 16 &&
-                               nesadapter->pft_mcast_map[mc_index] !=
-                                       nesvnic->nic_index &&
-                                       mc_index < max_pft_entries_avaiable) {
-                                               nes_debug(NES_DBG_NIC_RX,
--                                      "mc_index=%d skipping nic_index=%d, "
--                                      "used for=%d \n", mc_index,
-+                                      "mc_index=%d skipping nic_index=%d,\
-+                                      used for=%d \n", mc_index,
-                                       nesvnic->nic_index,
-                                       nesadapter->pft_mcast_map[mc_index]);
-                               mc_index++;
-                       }
-                       if (mc_index >= max_pft_entries_avaiable)
-                               break;
--                      if (i < mc_count) {
--                              char *addr = get_addr(addrs, i++);
--
--                              nes_debug(NES_DBG_NIC_RX, "Assigning MC Address %pM to register 0x%04X nic_idx=%d\n",
--                                        addr,
--                                        perfect_filter_register_address+(mc_index * 8),
--                                        mc_nic_index);
--                              macaddr_high  = ((u16) addr[0]) << 8;
--                              macaddr_high += (u16) addr[1];
--                              macaddr_low   = ((u32) addr[2]) << 24;
--                              macaddr_low  += ((u32) addr[3]) << 16;
--                              macaddr_low  += ((u32) addr[4]) << 8;
--                              macaddr_low  += (u32) addr[5];
-+                      if (multicast_addr) {
-+                              macaddr_high  = ((u16)multicast_addr->dmi_addr[0]) << 8;
-+                              macaddr_high += (u16)multicast_addr->dmi_addr[1];
-+                              macaddr_low   = ((u32)multicast_addr->dmi_addr[2]) << 24;
-+                              macaddr_low  += ((u32)multicast_addr->dmi_addr[3]) << 16;
-+                              macaddr_low  += ((u32)multicast_addr->dmi_addr[4]) << 8;
-+                              macaddr_low  += (u32)multicast_addr->dmi_addr[5];
-                               nes_write_indexed(nesdev,
-                                               perfect_filter_register_address+(mc_index * 8),
-                                               macaddr_low);
-                               nes_write_indexed(nesdev,
-                                               perfect_filter_register_address+4+(mc_index * 8),
-                                               (u32)macaddr_high | NES_MAC_ADDR_VALID |
--                                              ((((u32)(1<<mc_nic_index)) << 16)));
-+                                              ((((u32)(mc_nic_index)) << 16)));
-+                              multicast_addr = multicast_addr->next;
-                               nesadapter->pft_mcast_map[mc_index] =
-                                                       nesvnic->nic_index;
-                       } else {
-@@ -973,13 +958,20 @@ static void nes_netdev_set_multicast_list(struct net_device *netdev)
-                               nesadapter->pft_mcast_map[mc_index] = 255;
-                       }
-               }
--              kfree(addrs);
-               /* PFT is not large enough */
--              if (i < mc_count)
--                      set_allmulti(nesdev, nic_active_bit);
-+              if (multicast_addr && multicast_addr->next) {
-+                      nic_active = nes_read_indexed(nesdev,
-+                                              NES_IDX_NIC_MULTICAST_ALL);
-+                      nic_active |= nic_active_bit;
-+                      nes_write_indexed(nesdev, NES_IDX_NIC_MULTICAST_ALL,
-+                                                              nic_active);
-+                      nic_active = nes_read_indexed(nesdev,
-+                                              NES_IDX_NIC_UNICAST_ALL);
-+                      nic_active &= ~nic_active_bit;
-+                      nes_write_indexed(nesdev, NES_IDX_NIC_UNICAST_ALL,
-+                                                              nic_active);
-+              }
-       }
--
--unlock:
-       spin_unlock_irqrestore(&nesadapter->resource_lock, flags);
- }
-
-@@ -1610,32 +1602,6 @@ static void nes_vlan_mode(struct net_device *netdev, struct nes_device *nesdev,
-       spin_unlock_irqrestore(&nesadapter->phy_lock, flags);
- }
-
--static u32 nes_fix_features(struct net_device *netdev, u32 features)
--{
--      /*
--       * Since there is no support for separate rx/tx vlan accel
--       * enable/disable make sure tx flag is always in same state as rx.
--       */
--      if (features & NETIF_F_HW_VLAN_RX)
--              features |= NETIF_F_HW_VLAN_TX;
--      else
--              features &= ~NETIF_F_HW_VLAN_TX;
--
--      return features;
--}
--
--static int nes_set_features(struct net_device *netdev, u32 features)
--{
--      struct nes_vnic *nesvnic = netdev_priv(netdev);
--      struct nes_device *nesdev = nesvnic->nesdev;
--      u32 changed = netdev->features ^ features;
--
--      if (changed & NETIF_F_HW_VLAN_RX)
--              nes_vlan_mode(netdev, nesdev, features);
--
--      return 0;
--}
--
- static const struct net_device_ops nes_netdev_ops = {
-       .ndo_open               = nes_netdev_open,
-       .ndo_stop               = nes_netdev_stop,
-@@ -1646,8 +1612,6 @@ 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,
--      .ndo_fix_features       = nes_fix_features,
--      .ndo_set_features       = nes_set_features,
- };
-
- /**
-@@ -1711,12 +1675,12 @@ 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->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;
-+      if ((nesvnic->logical_port < 2) || (nesdev->nesadapter->hw_rev != NE020_REV)) {
-+              netdev->features |= NETIF_F_TSO | NETIF_F_SG | NETIF_F_IP_CSUM;
-+              netdev->features |= NETIF_F_GSO | NETIF_F_TSO | NETIF_F_SG | NETIF_F_IP_CSUM;
-+      } else {
-+              netdev->features |= NETIF_F_SG | NETIF_F_IP_CSUM;
-+      }
-
-       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.1
diff --git a/backports/2.6.32-EL6.2/09-unwind_netlink_dump_start_arg_change.patch b/backports/2.6.32-EL6.2/09-unwind_netlink_dump_start_arg_change.patch
deleted file mode 100644 (file)
index 092e3e3..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -rup a/drivers/infiniband/core/netlink.c b/drivers/infiniband/core/netlink.c
---- a/drivers/infiniband/core/netlink.c        2012-05-18 13:52:58.000000000 -0400
-+++ b/drivers/infiniband/core/netlink.c        2012-05-18 13:52:13.000000000 -0400
-@@ -151,7 +151,7 @@ static int ibnl_rcv_msg(struct sk_buff *
-                               return -EINVAL;
-                       return netlink_dump_start(nls, skb, nlh,
-                                                 client->cb_table[op].dump,
--                                                NULL);
-+                                                NULL, 0);
-               }
-       }
diff --git a/backports/2.6.32-EL6.2/10-cxgb4-Add-build-support-for-kernel-3.1.patch b/backports/2.6.32-EL6.2/10-cxgb4-Add-build-support-for-kernel-3.1.patch
deleted file mode 100644 (file)
index e5d643e..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-From bca407cec6adad6766870d6c26ff3ffa3b10e529 Mon Sep 17 00:00:00 2001
-From: Vipul Pandya <vipul@chelsio.com>
-Date: Mon, 7 May 2012 14:40:34 +0530
-Subject: [PATCH 02/14] cxgb4: Add build support for kernel 3.1
-
-Signed-off-by: Vipul Pandya <vipul@chelsio.com>
----
- drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c |    8 ++++----
- 1 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-index 4c8f42a..0b77fec 100644
---- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-@@ -32,6 +32,9 @@
-  * SOFTWARE.
-  */
-
-+#ifdef pr_fmt
-+#undef pr_fmt
-+#endif
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
- #include <linux/bitmap.h>
-@@ -41,7 +44,6 @@
- #include <linux/err.h>
- #include <linux/etherdevice.h>
- #include <linux/firmware.h>
--#include <linux/if.h>
- #include <linux/if_vlan.h>
- #include <linux/init.h>
- #include <linux/log2.h>
-@@ -1902,7 +1904,7 @@ static int set_rss_table(struct net_device *dev,
- }
-
- static int get_rxnfc(struct net_device *dev, struct ethtool_rxnfc *info,
--                   u32 *rules)
-+                   void *rules)
- {
-       const struct port_info *pi = netdev_priv(dev);
-
-@@ -3640,8 +3642,6 @@ static int __devinit init_one(struct pci_dev *pdev,
-               netdev->features |= netdev->hw_features | highdma;
-               netdev->vlan_features = netdev->features & VLAN_FEAT;
-
--              netdev->priv_flags |= IFF_UNICAST_FLT;
--
-               netdev->netdev_ops = &cxgb4_netdev_ops;
-               SET_ETHTOOL_OPS(netdev, &cxgb_ethtool_ops);
-       }
---
-1.7.1
-
diff --git a/backports/2.6.32-EL6.2/11-cxgb3-Reversing-do-vlan-cleanup.patch b/backports/2.6.32-EL6.2/11-cxgb3-Reversing-do-vlan-cleanup.patch
deleted file mode 100644 (file)
index 3b8519a..0000000
+++ /dev/null
@@ -1,212 +0,0 @@
-From 708ed9efefdc11cf5be0491314befb0fafac1daa Mon Sep 17 00:00:00 2001
-From: Vipul Pandya <vipul@chelsio.com>
-Date: Mon, 7 May 2012 15:50:15 +0530
-Subject: [PATCH 03/14] cxgb3: Reversing do vlan cleanup
-
-This patch is a reverse patch of the following upstream commit
-892ef5d85259e193505d553c10237fd5dc9a3d0d
-
-Signed-off-by: Vipul Pandya <vipul@chelsio.com>
----
- drivers/net/ethernet/chelsio/cxgb3/adapter.h       |    2 +
- drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c    |   51 ++++---------------
- drivers/net/ethernet/chelsio/cxgb3/cxgb3_offload.c |    9 ++-
- drivers/net/ethernet/chelsio/cxgb3/sge.c           |   35 +++++++++++--
- 4 files changed, 48 insertions(+), 49 deletions(-)
-
-diff --git a/drivers/net/ethernet/chelsio/cxgb3/adapter.h b/drivers/net/ethernet/chelsio/cxgb3/adapter.h
-index 8b395b5..7300de5 100644
---- a/drivers/net/ethernet/chelsio/cxgb3/adapter.h
-+++ b/drivers/net/ethernet/chelsio/cxgb3/adapter.h
-@@ -45,6 +45,7 @@
- #include "t3cdev.h"
- #include <asm/io.h>
-
-+struct vlan_group;
- struct adapter;
- struct sge_qset;
- struct port_info;
-@@ -65,6 +66,7 @@ struct iscsi_config {
-
- struct port_info {
-       struct adapter *adapter;
-+      struct vlan_group *vlan_grp;
-       struct sge_qset *qs;
-       u8 port_id;
-       u8 nqsets;
-diff --git a/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c b/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
-index 4d15c8f..d9ee262 100644
---- a/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
-+++ b/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
-@@ -2531,51 +2531,25 @@ static void t3_synchronize_rx(struct adapter *adap, const struct port_info *p)
-       }
- }
-
--static void cxgb_vlan_mode(struct net_device *dev, u32 features)
-+static void vlan_rx_register(struct net_device *dev, struct vlan_group *grp)
- {
-       struct port_info *pi = netdev_priv(dev);
-       struct adapter *adapter = pi->adapter;
-
--      if (adapter->params.rev > 0) {
--              t3_set_vlan_accel(adapter, 1 << pi->port_id,
--                                features & NETIF_F_HW_VLAN_RX);
--      } else {
-+      pi->vlan_grp = grp;
-+      if (adapter->params.rev > 0)
-+              t3_set_vlan_accel(adapter, 1 << pi->port_id, grp != NULL);
-+      else {
-               /* single control for all ports */
--              unsigned int i, have_vlans = features & NETIF_F_HW_VLAN_RX;
--
-+              unsigned int i, have_vlans = 0;
-               for_each_port(adapter, i)
--                      have_vlans |=
--                              adapter->port[i]->features & NETIF_F_HW_VLAN_RX;
-+                  have_vlans |= adap2pinfo(adapter, i)->vlan_grp != NULL;
-
-               t3_set_vlan_accel(adapter, 1, have_vlans);
-       }
-       t3_synchronize_rx(adapter, pi);
- }
-
--static u32 cxgb_fix_features(struct net_device *dev, u32 features)
--{
--      /*
--       * Since there is no support for separate rx/tx vlan accel
--       * enable/disable make sure tx flag is always in same state as rx.
--       */
--      if (features & NETIF_F_HW_VLAN_RX)
--              features |= NETIF_F_HW_VLAN_TX;
--      else
--              features &= ~NETIF_F_HW_VLAN_TX;
--
--      return features;
--}
--
--static int cxgb_set_features(struct net_device *dev, u32 features)
--{
--      u32 changed = dev->features ^ features;
--
--      if (changed & NETIF_F_HW_VLAN_RX)
--              cxgb_vlan_mode(dev, features);
--
--      return 0;
--}
--
- #ifdef CONFIG_NET_POLL_CONTROLLER
- static void cxgb_netpoll(struct net_device *dev)
- {
-@@ -3156,8 +3130,7 @@ static const struct net_device_ops cxgb_netdev_ops = {
-       .ndo_do_ioctl           = cxgb_ioctl,
-       .ndo_change_mtu         = cxgb_change_mtu,
-       .ndo_set_mac_address    = cxgb_set_mac_addr,
--      .ndo_fix_features       = cxgb_fix_features,
--      .ndo_set_features       = cxgb_set_features,
-+      .ndo_vlan_rx_register   = vlan_rx_register,
- #ifdef CONFIG_NET_POLL_CONTROLLER
-       .ndo_poll_controller    = cxgb_netpoll,
- #endif
-@@ -3289,8 +3262,9 @@ static int __devinit init_one(struct pci_dev *pdev,
-               netdev->mem_start = mmio_start;
-               netdev->mem_end = mmio_start + mmio_len - 1;
-               netdev->hw_features = NETIF_F_SG | NETIF_F_IP_CSUM |
--                      NETIF_F_TSO | NETIF_F_RXCSUM | NETIF_F_HW_VLAN_RX;
--              netdev->features |= netdev->hw_features | NETIF_F_HW_VLAN_TX;
-+                      NETIF_F_TSO | NETIF_F_RXCSUM;
-+              netdev->features |= netdev->hw_features |
-+                      NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX;
-               if (pci_using_dac)
-                       netdev->features |= NETIF_F_HIGHDMA;
-
-@@ -3354,9 +3328,6 @@ static int __devinit init_one(struct pci_dev *pdev,
-       err = sysfs_create_group(&adapter->port[0]->dev.kobj,
-                                &cxgb3_attr_group);
-
--      for_each_port(adapter, i)
--              cxgb_vlan_mode(adapter->port[i], adapter->port[i]->features);
--
-       print_port_info(adapter, ai);
-       return 0;
-
-diff --git a/drivers/net/ethernet/chelsio/cxgb3/cxgb3_offload.c b/drivers/net/ethernet/chelsio/cxgb3/cxgb3_offload.c
-index 90ff131..d7cd560 100644
---- a/drivers/net/ethernet/chelsio/cxgb3/cxgb3_offload.c
-+++ b/drivers/net/ethernet/chelsio/cxgb3/cxgb3_offload.c
-@@ -177,13 +177,16 @@ static struct net_device *get_iff_from_mac(struct adapter *adapter,
-       int i;
-
-       for_each_port(adapter, i) {
-+              struct vlan_group *grp;
-               struct net_device *dev = adapter->port[i];
-+              const struct port_info *p = netdev_priv(dev);
-
-               if (!memcmp(dev->dev_addr, mac, ETH_ALEN)) {
-                       if (vlan && vlan != VLAN_VID_MASK) {
--                              rcu_read_lock();
--                              dev = __vlan_find_dev_deep(dev, vlan);
--                              rcu_read_unlock();
-+                              grp = p->vlan_grp;
-+                              dev = NULL;
-+                              if (grp)
-+                                      dev = vlan_group_get_device(grp, vlan);
-                       } else if (netif_is_bond_slave(dev)) {
-                               while (dev->master)
-                                       dev = dev->master;
-diff --git a/drivers/net/ethernet/chelsio/cxgb3/sge.c b/drivers/net/ethernet/chelsio/cxgb3/sge.c
-index cfb60e1..12c3d36 100644
---- a/drivers/net/ethernet/chelsio/cxgb3/sge.c
-+++ b/drivers/net/ethernet/chelsio/cxgb3/sge.c
-@@ -2028,11 +2028,28 @@ static void rx_eth(struct adapter *adap, struct sge_rspq *rq,
-               skb_checksum_none_assert(skb);
-       skb_record_rx_queue(skb, qs - &adap->sge.qs[pi->first_qset]);
-
--      if (p->vlan_valid) {
-+      if (unlikely(p->vlan_valid)) {
-+              struct vlan_group *grp = pi->vlan_grp;
-+
-               qs->port_stats[SGE_PSTAT_VLANEX]++;
--              __vlan_hwaccel_put_tag(skb, ntohs(p->vlan));
--      }
--      if (rq->polling) {
-+              if (likely(grp))
-+                      if (lro)
-+                              vlan_gro_receive(&qs->napi, grp,
-+                                               ntohs(p->vlan), skb);
-+                      else {
-+                              if (unlikely(pi->iscsic.flags)) {
-+                                      unsigned short vtag = ntohs(p->vlan) &
-+                                                              VLAN_VID_MASK;
-+                                      skb->dev = vlan_group_get_device(grp,
-+                                                                       vtag);
-+                                      cxgb3_process_iscsi_prov_pack(pi, skb);
-+                              }
-+                              __vlan_hwaccel_rx(skb, grp, ntohs(p->vlan),
-+                                                rq->polling);
-+                      }
-+              else
-+                      dev_kfree_skb_any(skb);
-+      } else if (rq->polling) {
-               if (lro)
-                       napi_gro_receive(&qs->napi, skb);
-               else {
-@@ -2130,8 +2147,14 @@ static void lro_add_page(struct adapter *adap, struct sge_qset *qs,
-
-       skb_record_rx_queue(skb, qs - &adap->sge.qs[pi->first_qset]);
-
--      if (cpl->vlan_valid)
--              __vlan_hwaccel_put_tag(skb, ntohs(cpl->vlan));
-+      if (unlikely(cpl->vlan_valid)) {
-+              struct vlan_group *grp = pi->vlan_grp;
-+
-+              if (likely(grp != NULL)) {
-+                      vlan_gro_frags(&qs->napi, grp, ntohs(cpl->vlan));
-+                      return;
-+              }
-+      }
-       napi_gro_frags(&qs->napi);
- }
-
---
-1.7.1
-
diff --git a/backports/2.6.32-EL6.2/12-iw_cxgb3-Add-RHEL6.2-backports.patch b/backports/2.6.32-EL6.2/12-iw_cxgb3-Add-RHEL6.2-backports.patch
deleted file mode 100644 (file)
index bbd3ed4..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-From 4d79ac47a87ece1a8bae619683a11b264f7db063 Mon Sep 17 00:00:00 2001
-From: Vipul Pandya <vipul@chelsio.com>
-Date: Thu, 3 May 2012 14:39:49 +0530
-Subject: [PATCH 04/14] iw_cxgb3: Add RHEL6.2 backports
-
-Signed-off-by: Vipul Pandya <vipul@chelsio.com>
----
- drivers/infiniband/hw/cxgb3/iwch_cm.c |   27 ++++++++++++++++++++-------
- 1 files changed, 20 insertions(+), 7 deletions(-)
-
-diff --git a/drivers/infiniband/hw/cxgb3/iwch_cm.c b/drivers/infiniband/hw/cxgb3/iwch_cm.c
-index c88b12b..25f2377 100644
---- a/drivers/infiniband/hw/cxgb3/iwch_cm.c
-+++ b/drivers/infiniband/hw/cxgb3/iwch_cm.c
-@@ -338,12 +338,25 @@ static struct rtable *find_route(struct t3cdev *dev, __be32 local_ip,
-                                __be16 peer_port, u8 tos)
- {
-       struct rtable *rt;
--      struct flowi4 fl4;
-+      struct flowi fl = {
-+              .oif = 0,
-+              .nl_u = {
-+                      .ip4_u = {
-+                              .daddr = peer_ip,
-+                              .saddr = local_ip,
-+                              .tos = tos
-+                      }
-+              },
-+              .proto = IPPROTO_TCP,
-+              .uli_u = {
-+                      .ports = {
-+                              .sport = local_port,
-+                              .dport = peer_port
-+                      }
-+              }
-+      };
-
--      rt = ip_route_output_ports(&init_net, &fl4, NULL, peer_ip, local_ip,
--                                 peer_port, local_port, IPPROTO_TCP,
--                                 tos, 0);
--      if (IS_ERR(rt))
-+      if (ip_route_output_flow(&init_net, &rt, &fl, NULL, false))
-               return NULL;
-       return rt;
- }
-@@ -1374,7 +1387,7 @@ static int pass_accept_req(struct t3cdev *tdev, struct sk_buff *skb, void *ctx)
-                      __func__);
-               goto reject;
-       }
--      dst = &rt->dst;
-+      dst = &rt->u.dst;
-       rcu_read_lock();
-       neigh = dst_get_neighbour(dst);
-       l2t = t3_l2t_get(tdev, neigh, neigh->dev);
-@@ -1946,7 +1959,7 @@ int iwch_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
-               err = -EHOSTUNREACH;
-               goto fail3;
-       }
--      ep->dst = &rt->dst;
-+      ep->dst = &rt->u.dst;
-
-       rcu_read_lock();
-       neigh = dst_get_neighbour(ep->dst);
---
-1.7.1
-
diff --git a/backports/2.6.32-EL6.2/13-iw_cxgb4-Add-RHEL6.2-backports.patch b/backports/2.6.32-EL6.2/13-iw_cxgb4-Add-RHEL6.2-backports.patch
deleted file mode 100644 (file)
index f191a41..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-From d80b776c844c1a35f32a55150021f2e8635b7323 Mon Sep 17 00:00:00 2001
-From: Vipul Pandya <vipul@chelsio.com>
-Date: Thu, 10 May 2012 15:39:37 +0530
-Subject: [PATCH 05/14] iw_cxgb4: Add RHEL6.2 backports
-
-Signed-off-by: Vipul Pandya <vipul@chelsio.com>
----
- drivers/infiniband/hw/cxgb4/cm.c |   30 +++++++++++++++++++++---------
- 1 files changed, 21 insertions(+), 9 deletions(-)
-
-diff --git a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c
-index 0747004..15b903c 100644
---- a/drivers/infiniband/hw/cxgb4/cm.c
-+++ b/drivers/infiniband/hw/cxgb4/cm.c
-@@ -316,12 +316,24 @@ static struct rtable *find_route(struct c4iw_dev *dev, __be32 local_ip,
-                                __be16 peer_port, u8 tos)
- {
-       struct rtable *rt;
--      struct flowi4 fl4;
--
--      rt = ip_route_output_ports(&init_net, &fl4, NULL, peer_ip, local_ip,
--                                 peer_port, local_port, IPPROTO_TCP,
--                                 tos, 0);
--      if (IS_ERR(rt))
-+      struct flowi fl = {
-+              .oif = 0,
-+              .nl_u = {
-+                      .ip4_u = {
-+                              .daddr = peer_ip,
-+                              .saddr = local_ip,
-+                              .tos = tos
-+                      }
-+              },
-+              .proto = IPPROTO_TCP,
-+              .uli_u = {
-+                      .ports = {
-+                              .sport = local_port,
-+                              .dport = peer_port
-+                      }
-+              }
-+      };
-+      if (ip_route_output_flow(&init_net, &rt, &fl, NULL, false))
-               return NULL;
-       return rt;
- }
-@@ -1595,7 +1607,7 @@ static int pass_accept_req(struct c4iw_dev *dev, struct sk_buff *skb)
-                      __func__);
-               goto reject;
-       }
--      dst = &rt->dst;
-+      dst = &rt->u.dst;
-       rcu_read_lock();
-       neigh = dst_get_neighbour(dst);
-       if (neigh->dev->flags & IFF_LOOPBACK) {
-@@ -1822,7 +1834,7 @@ static int c4iw_reconnect(struct c4iw_ep *ep)
-               err = -EHOSTUNREACH;
-               goto fail3;
-       }
--      ep->dst = &rt->dst;
-+      ep->dst = &rt->u.dst;
-
-       rcu_read_lock();
-       neigh = dst_get_neighbour(ep->dst);
-@@ -2305,7 +2317,7 @@ int c4iw_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
-               err = -EHOSTUNREACH;
-               goto fail3;
-       }
--      ep->dst = &rt->dst;
-+      ep->dst = &rt->u.dst;
-
-       rcu_read_lock();
-       neigh = dst_get_neighbour(ep->dst);
---
-1.7.1
-
diff --git a/backports/2.6.32-EL6.2/14-iw_cxgb4-Revert-use-the-DMA-state-API-instead-of-the.patch b/backports/2.6.32-EL6.2/14-iw_cxgb4-Revert-use-the-DMA-state-API-instead-of-the.patch
deleted file mode 100644 (file)
index 2be8286..0000000
+++ /dev/null
@@ -1,157 +0,0 @@
-From 8651cf61a4cd6651c6fbd37a3702d6f134cdaaa6 Mon Sep 17 00:00:00 2001
-From: Vipul Pandya <vipul@chelsio.com>
-Date: Thu, 10 May 2012 15:41:56 +0530
-Subject: [PATCH 06/14] iw_cxgb4: Revert use the DMA state API instead of the pci equivalents
-
-This patch is a reverse patch of the following upstream commit
-f38926aa1dc5fbf7dfc5f97a53377b2e796dedc3
-
-Signed-off-by: Vipul Pandya <vipul@chelsio.com>
----
- drivers/infiniband/hw/cxgb4/cq.c       |    6 +++---
- drivers/infiniband/hw/cxgb4/iw_cxgb4.h |    2 +-
- drivers/infiniband/hw/cxgb4/mem.c      |    4 ++--
- drivers/infiniband/hw/cxgb4/qp.c       |    8 ++++----
- drivers/infiniband/hw/cxgb4/t4.h       |    6 +++---
- 5 files changed, 13 insertions(+), 13 deletions(-)
-
-diff --git a/drivers/infiniband/hw/cxgb4/cq.c b/drivers/infiniband/hw/cxgb4/cq.c
-index 0f1607c..c3c2d68 100644
---- a/drivers/infiniband/hw/cxgb4/cq.c
-+++ b/drivers/infiniband/hw/cxgb4/cq.c
-@@ -70,7 +70,7 @@ static int destroy_cq(struct c4iw_rdev *rdev, struct t4_cq *cq,
-       kfree(cq->sw_queue);
-       dma_free_coherent(&(rdev->lldi.pdev->dev),
-                         cq->memsize, cq->queue,
--                        dma_unmap_addr(cq, mapping));
-+                        pci_unmap_addr(cq, mapping));
-       c4iw_put_cqid(rdev, cq->cqid, uctx);
-       return ret;
- }
-@@ -105,7 +105,7 @@ static int create_cq(struct c4iw_rdev *rdev, struct t4_cq *cq,
-               ret = -ENOMEM;
-               goto err3;
-       }
--      dma_unmap_addr_set(cq, mapping, cq->dma_addr);
-+      pci_unmap_addr_set(cq, mapping, cq->dma_addr);
-       memset(cq->queue, 0, cq->memsize);
-
-       /* build fw_ri_res_wr */
-@@ -165,7 +165,7 @@ static int create_cq(struct c4iw_rdev *rdev, struct t4_cq *cq,
-       return 0;
- err4:
-       dma_free_coherent(&rdev->lldi.pdev->dev, cq->memsize, cq->queue,
--                        dma_unmap_addr(cq, mapping));
-+                        pci_unmap_addr(cq, mapping));
- err3:
-       kfree(cq->sw_queue);
- err2:
-diff --git a/drivers/infiniband/hw/cxgb4/iw_cxgb4.h b/drivers/infiniband/hw/cxgb4/iw_cxgb4.h
-index 1357c5b..677e8fb 100644
---- a/drivers/infiniband/hw/cxgb4/iw_cxgb4.h
-+++ b/drivers/infiniband/hw/cxgb4/iw_cxgb4.h
-@@ -292,7 +292,7 @@ static inline struct c4iw_mw *to_c4iw_mw(struct ib_mw *ibmw)
-
- struct c4iw_fr_page_list {
-       struct ib_fast_reg_page_list ibpl;
--      DEFINE_DMA_UNMAP_ADDR(mapping);
-+      DECLARE_PCI_UNMAP_ADDR(mapping);
-       dma_addr_t dma_addr;
-       struct c4iw_dev *dev;
-       int size;
-diff --git a/drivers/infiniband/hw/cxgb4/mem.c b/drivers/infiniband/hw/cxgb4/mem.c
-index 40c8353..88b1026 100644
---- a/drivers/infiniband/hw/cxgb4/mem.c
-+++ b/drivers/infiniband/hw/cxgb4/mem.c
-@@ -757,7 +757,7 @@ struct ib_fast_reg_page_list *c4iw_alloc_fastreg_pbl(struct ib_device *device,
-       if (!c4pl)
-               return ERR_PTR(-ENOMEM);
-
--      dma_unmap_addr_set(c4pl, mapping, dma_addr);
-+      pci_unmap_addr_set(c4pl, mapping, dma_addr);
-       c4pl->dma_addr = dma_addr;
-       c4pl->dev = dev;
-       c4pl->size = size;
-@@ -772,7 +772,7 @@ void c4iw_free_fastreg_pbl(struct ib_fast_reg_page_list *ibpl)
-       struct c4iw_fr_page_list *c4pl = to_c4iw_fr_page_list(ibpl);
-
-       dma_free_coherent(&c4pl->dev->rdev.lldi.pdev->dev, c4pl->size,
--                        c4pl, dma_unmap_addr(c4pl, mapping));
-+                        c4pl, pci_unmap_addr(c4pl, mapping));
- }
-
- int c4iw_dereg_mr(struct ib_mr *ib_mr)
-diff --git a/drivers/infiniband/hw/cxgb4/qp.c b/drivers/infiniband/hw/cxgb4/qp.c
-index 5f940ae..d682318 100644
---- a/drivers/infiniband/hw/cxgb4/qp.c
-+++ b/drivers/infiniband/hw/cxgb4/qp.c
-@@ -100,7 +100,7 @@ static int destroy_qp(struct c4iw_rdev *rdev, struct t4_wq *wq,
-        */
-       dma_free_coherent(&(rdev->lldi.pdev->dev),
-                         wq->rq.memsize, wq->rq.queue,
--                        dma_unmap_addr(&wq->rq, mapping));
-+                        pci_unmap_addr(&wq->rq, mapping));
-       dealloc_sq(rdev, &wq->sq);
-       c4iw_rqtpool_free(rdev, wq->rq.rqt_hwaddr, wq->rq.rqt_size);
-       kfree(wq->rq.sw_rq);
-@@ -158,7 +158,7 @@ static int create_qp(struct c4iw_rdev *rdev, struct t4_wq *wq,
-               if (alloc_host_sq(rdev, &wq->sq))
-                       goto err5;
-       memset(wq->sq.queue, 0, wq->sq.memsize);
--      dma_unmap_addr_set(&wq->sq, mapping, wq->sq.dma_addr);
-+      pci_unmap_addr_set(&wq->sq, mapping, wq->sq.dma_addr);
-
-       wq->rq.queue = dma_alloc_coherent(&(rdev->lldi.pdev->dev),
-                                         wq->rq.memsize, &(wq->rq.dma_addr),
-@@ -171,7 +171,7 @@ static int create_qp(struct c4iw_rdev *rdev, struct t4_wq *wq,
-               wq->rq.queue,
-               (unsigned long long)virt_to_phys(wq->rq.queue));
-       memset(wq->rq.queue, 0, wq->rq.memsize);
--      dma_unmap_addr_set(&wq->rq, mapping, wq->rq.dma_addr);
-+      pci_unmap_addr_set(&wq->rq, mapping, wq->rq.dma_addr);
-
-       wq->db = rdev->lldi.db_reg;
-       wq->gts = rdev->lldi.gts_reg;
-@@ -270,7 +270,7 @@ static int create_qp(struct c4iw_rdev *rdev, struct t4_wq *wq,
- err7:
-       dma_free_coherent(&(rdev->lldi.pdev->dev),
-                         wq->rq.memsize, wq->rq.queue,
--                        dma_unmap_addr(&wq->rq, mapping));
-+                        pci_unmap_addr(&wq->rq, mapping));
- err6:
-       dealloc_sq(rdev, &wq->sq);
- err5:
-diff --git a/drivers/infiniband/hw/cxgb4/t4.h b/drivers/infiniband/hw/cxgb4/t4.h
-index c0221ee..47a9bd2 100644
---- a/drivers/infiniband/hw/cxgb4/t4.h
-+++ b/drivers/infiniband/hw/cxgb4/t4.h
-@@ -292,7 +292,7 @@ enum {
- struct t4_sq {
-       union t4_wr *queue;
-       dma_addr_t dma_addr;
--      DEFINE_DMA_UNMAP_ADDR(mapping);
-+      DECLARE_PCI_UNMAP_ADDR(mapping);
-       unsigned long phys_addr;
-       struct t4_swsqe *sw_sq;
-       struct t4_swsqe *oldest_read;
-@@ -314,7 +314,7 @@ struct t4_swrqe {
- struct t4_rq {
-       union  t4_recv_wr *queue;
-       dma_addr_t dma_addr;
--      DEFINE_DMA_UNMAP_ADDR(mapping);
-+      DECLARE_PCI_UNMAP_ADDR(mapping);
-       struct t4_swrqe *sw_rq;
-       u64 udb;
-       size_t memsize;
-@@ -452,7 +452,7 @@ static inline int t4_wq_db_enabled(struct t4_wq *wq)
- struct t4_cq {
-       struct t4_cqe *queue;
-       dma_addr_t dma_addr;
--      DEFINE_DMA_UNMAP_ADDR(mapping);
-+      DECLARE_PCI_UNMAP_ADDR(mapping);
-       struct t4_cqe *sw_queue;
-       void __iomem *gts;
-       struct c4iw_rdev *rdev;
---
-1.7.1
-
diff --git a/backports/2.6.32-EL6.2/15-cxgb3-Revert-implement-set_phys_id.patch b/backports/2.6.32-EL6.2/15-cxgb3-Revert-implement-set_phys_id.patch
deleted file mode 100644 (file)
index 8c00dce..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-From 6ede508ac7b890df01acd9cd219542d36c49b25e Mon Sep 17 00:00:00 2001
-From: Vipul Pandya <vipul@chelsio.com>
-Date: Thu, 10 May 2012 15:55:10 +0530
-Subject: [PATCH 07/14] cxgb3: Revert implement set_phys_id
-
-This patch is a reverse patch of the following upstream commit
-12fcf941674fd781117a56f998d2bb28b4bc4cf1
-
-Signed-off-by: Vipul Pandya <vipul@chelsio.com>
----
- drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c |   24 ++++++++++------------
- 1 files changed, 11 insertions(+), 13 deletions(-)
-
-diff --git a/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c b/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
-index d9ee262..a671d43 100644
---- a/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
-+++ b/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
-@@ -1728,26 +1728,24 @@ static int restart_autoneg(struct net_device *dev)
-       return 0;
- }
-
--static int set_phys_id(struct net_device *dev,
--                     enum ethtool_phys_id_state state)
-+static int cxgb3_phys_id(struct net_device *dev, u32 data)
- {
-       struct port_info *pi = netdev_priv(dev);
-       struct adapter *adapter = pi->adapter;
-+      int i;
-
--      switch (state) {
--      case ETHTOOL_ID_ACTIVE:
--              return 1;       /* cycle on/off once per second */
--
--      case ETHTOOL_ID_OFF:
--              t3_set_reg_field(adapter, A_T3DBG_GPIO_EN, F_GPIO0_OUT_VAL, 0);
--              break;
-+      if (data == 0)
-+              data = 2;
-
--      case ETHTOOL_ID_ON:
--      case ETHTOOL_ID_INACTIVE:
-+      for (i = 0; i < data * 2; i++) {
-               t3_set_reg_field(adapter, A_T3DBG_GPIO_EN, F_GPIO0_OUT_VAL,
--                       F_GPIO0_OUT_VAL);
-+                               (i & 1) ? F_GPIO0_OUT_VAL : 0);
-+              if (msleep_interruptible(500))
-+                      break;
-       }
-
-+      t3_set_reg_field(adapter, A_T3DBG_GPIO_EN, F_GPIO0_OUT_VAL,
-+                       F_GPIO0_OUT_VAL);
-       return 0;
- }
-
-@@ -2063,7 +2061,7 @@ static const struct ethtool_ops cxgb_ethtool_ops = {
-       .set_pauseparam = set_pauseparam,
-       .get_link = ethtool_op_get_link,
-       .get_strings = get_strings,
--      .set_phys_id = set_phys_id,
-+      .phys_id = cxgb3_phys_id,
-       .nway_reset = restart_autoneg,
-       .get_sset_count = get_sset_count,
-       .get_ethtool_stats = get_stats,
---
-1.7.1
-
diff --git a/backports/2.6.32-EL6.2/16-cxgb3-Revert-convert-to-hw_features.patch b/backports/2.6.32-EL6.2/16-cxgb3-Revert-convert-to-hw_features.patch
deleted file mode 100644 (file)
index 17fffb0..0000000
+++ /dev/null
@@ -1,248 +0,0 @@
-From 810969f13f370934f20c017cea7ee949db23a002 Mon Sep 17 00:00:00 2001
-From: Vipul Pandya <vipul@chelsio.com>
-Date: Thu, 10 May 2012 17:02:03 +0530
-Subject: [PATCH 08/14] cxgb3: Revert convert to hw_features
-
-This patch is a reverse patch of the following upstream commit
-d2fe2755342b30bc1ee7797b9975f8626d65e485
-
-Signed-off-by: Vipul Pandya <vipul@chelsio.com>
----
- drivers/net/ethernet/chelsio/cxgb3/adapter.h    |    7 ++
- drivers/net/ethernet/chelsio/cxgb3/common.h     |    1 +
- drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c |   78 +++++++++++++++++++----
- drivers/net/ethernet/chelsio/cxgb3/sge.c        |    7 +-
- 4 files changed, 76 insertions(+), 17 deletions(-)
-
-diff --git a/drivers/net/ethernet/chelsio/cxgb3/adapter.h b/drivers/net/ethernet/chelsio/cxgb3/adapter.h
-index 7300de5..ef67be5 100644
---- a/drivers/net/ethernet/chelsio/cxgb3/adapter.h
-+++ b/drivers/net/ethernet/chelsio/cxgb3/adapter.h
-@@ -50,6 +50,11 @@ struct adapter;
- struct sge_qset;
- struct port_info;
-
-+enum {                        /* rx_offload flags */
-+      T3_RX_CSUM      = 1 << 0,
-+      T3_LRO          = 1 << 1,
-+};
-+
- enum mac_idx_types {
-       LAN_MAC_IDX     = 0,
-       SAN_MAC_IDX,
-@@ -69,6 +74,7 @@ struct port_info {
-       struct vlan_group *vlan_grp;
-       struct sge_qset *qs;
-       u8 port_id;
-+      u8 rx_offload;
-       u8 nqsets;
-       u8 first_qset;
-       struct cphy phy;
-@@ -206,6 +212,7 @@ struct sge_qset {          /* an SGE queue set */
-       struct sge_fl fl[SGE_RXQ_PER_SET];
-       struct sge_txq txq[SGE_TXQ_PER_SET];
-       int nomem;
-+      int lro_enabled;
-       void *lro_va;
-       struct net_device *netdev;
-       struct netdev_queue *tx_q;      /* associated netdev TX queue */
-diff --git a/drivers/net/ethernet/chelsio/cxgb3/common.h b/drivers/net/ethernet/chelsio/cxgb3/common.h
-index df01b63..85d032f 100644
---- a/drivers/net/ethernet/chelsio/cxgb3/common.h
-+++ b/drivers/net/ethernet/chelsio/cxgb3/common.h
-@@ -317,6 +317,7 @@ struct tp_params {
-
- struct qset_params {          /* SGE queue set parameters */
-       unsigned int polling;   /* polling/interrupt service for rspq */
-+      unsigned int lro;       /* large receive offload */
-       unsigned int coalesce_usecs;    /* irq coalescing timer */
-       unsigned int rspq_size; /* # of entries in response queue */
-       unsigned int fl_size;   /* # of entries in regular free list */
-diff --git a/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c b/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
-index a671d43..e2da139 100644
---- a/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
-+++ b/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
-@@ -644,6 +644,26 @@ static void enable_all_napi(struct adapter *adap)
- }
-
- /**
-+ *    set_qset_lro - Turn a queue set's LRO capability on and off
-+ *    @dev: the device the qset is attached to
-+ *    @qset_idx: the queue set index
-+ *    @val: the LRO switch
-+ *
-+ *    Sets LRO on or off for a particular queue set.
-+ *    the device's features flag is updated to reflect the LRO
-+ *    capability when all queues belonging to the device are
-+ *    in the same state.
-+ */
-+static void set_qset_lro(struct net_device *dev, int qset_idx, int val)
-+{
-+      struct port_info *pi = netdev_priv(dev);
-+      struct adapter *adapter = pi->adapter;
-+
-+      adapter->params.sge.qset[qset_idx].lro = !!val;
-+      adapter->sge.qs[qset_idx].lro_enabled = !!val;
-+}
-+
-+/**
-  *    setup_sge_qsets - configure SGE Tx/Rx/response queues
-  *    @adap: the adapter
-  *
-@@ -665,6 +685,7 @@ static int setup_sge_qsets(struct adapter *adap)
-
-               pi->qs = &adap->sge.qs[pi->first_qset];
-               for (j = 0; j < pi->nqsets; ++j, ++qset_idx) {
-+                      set_qset_lro(dev, qset_idx, pi->rx_offload & T3_LRO);
-                       err = t3_sge_alloc_qset(adap, qset_idx, 1,
-                               (adap->flags & USING_MSIX) ? qset_idx + 1 :
-                                                            irq_idx,
-@@ -1889,6 +1910,29 @@ static int set_pauseparam(struct net_device *dev,
-       return 0;
- }
-
-+static u32 get_rx_csum(struct net_device *dev)
-+{
-+      struct port_info *p = netdev_priv(dev);
-+
-+      return p->rx_offload & T3_RX_CSUM;
-+}
-+
-+static int set_rx_csum(struct net_device *dev, u32 data)
-+{
-+      struct port_info *p = netdev_priv(dev);
-+
-+      if (data) {
-+              p->rx_offload |= T3_RX_CSUM;
-+      } else {
-+              int i;
-+
-+              p->rx_offload &= ~(T3_RX_CSUM | T3_LRO);
-+              for (i = p->first_qset; i < p->first_qset + p->nqsets; i++)
-+                      set_qset_lro(dev, i, 0);
-+      }
-+      return 0;
-+}
-+
- static void get_sge_param(struct net_device *dev, struct ethtool_ringparam *e)
- {
-       struct port_info *pi = netdev_priv(dev);
-@@ -2059,6 +2103,10 @@ static const struct ethtool_ops cxgb_ethtool_ops = {
-       .set_eeprom = set_eeprom,
-       .get_pauseparam = get_pauseparam,
-       .set_pauseparam = set_pauseparam,
-+      .get_rx_csum = get_rx_csum,
-+      .set_rx_csum = set_rx_csum,
-+      .set_tx_csum = ethtool_op_set_tx_csum,
-+      .set_sg = ethtool_op_set_sg,
-       .get_link = ethtool_op_get_link,
-       .get_strings = get_strings,
-       .phys_id = cxgb3_phys_id,
-@@ -2068,6 +2116,7 @@ static const struct ethtool_ops cxgb_ethtool_ops = {
-       .get_regs_len = get_regs_len,
-       .get_regs = get_regs,
-       .get_wol = get_wol,
-+      .set_tso = ethtool_op_set_tso,
- };
-
- static int in_range(int val, int lo, int hi)
-@@ -2115,6 +2164,15 @@ static int cxgb_extension_ioctl(struct net_device *dev, void __user *useraddr)
-                             MAX_RSPQ_ENTRIES))
-                       return -EINVAL;
-
-+              if ((adapter->flags & FULL_INIT_DONE) && t.lro > 0)
-+                      for_each_port(adapter, i) {
-+                              pi = adap2pinfo(adapter, i);
-+                              if (t.qset_idx >= pi->first_qset &&
-+                                  t.qset_idx < pi->first_qset + pi->nqsets &&
-+                                  !(pi->rx_offload & T3_RX_CSUM))
-+                                      return -EINVAL;
-+                      }
-+
-               if ((adapter->flags & FULL_INIT_DONE) &&
-                       (t.rspq_size >= 0 || t.fl_size[0] >= 0 ||
-                       t.fl_size[1] >= 0 || t.txq_size[0] >= 0 ||
-@@ -2175,14 +2233,8 @@ static int cxgb_extension_ioctl(struct net_device *dev, void __user *useraddr)
-                               }
-                       }
-               }
--
--              if (t.lro >= 0) {
--                      if (t.lro)
--                              dev->wanted_features |= NETIF_F_GRO;
--                      else
--                              dev->wanted_features &= ~NETIF_F_GRO;
--                      netdev_update_features(dev);
--              }
-+              if (t.lro >= 0)
-+                      set_qset_lro(dev, t.qset_idx, t.lro);
-
-               break;
-       }
-@@ -2216,7 +2268,7 @@ static int cxgb_extension_ioctl(struct net_device *dev, void __user *useraddr)
-               t.fl_size[0] = q->fl_size;
-               t.fl_size[1] = q->jumbo_size;
-               t.polling = q->polling;
--              t.lro = !!(dev->features & NETIF_F_GRO);
-+              t.lro = q->lro;
-               t.intr_lat = q->coalesce_usecs;
-               t.cong_thres = q->cong_thres;
-               t.qnum = q1;
-@@ -3254,18 +3306,18 @@ static int __devinit init_one(struct pci_dev *pdev,
-               adapter->port[i] = netdev;
-               pi = netdev_priv(netdev);
-               pi->adapter = adapter;
-+              pi->rx_offload = T3_RX_CSUM | T3_LRO;
-               pi->port_id = i;
-               netif_carrier_off(netdev);
-               netdev->irq = pdev->irq;
-               netdev->mem_start = mmio_start;
-               netdev->mem_end = mmio_start + mmio_len - 1;
--              netdev->hw_features = NETIF_F_SG | NETIF_F_IP_CSUM |
--                      NETIF_F_TSO | NETIF_F_RXCSUM;
--              netdev->features |= netdev->hw_features |
--                      NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX;
-+              netdev->features |= NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_TSO;
-+              netdev->features |= NETIF_F_GRO;
-               if (pci_using_dac)
-                       netdev->features |= NETIF_F_HIGHDMA;
-
-+              netdev->features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX;
-               netdev->netdev_ops = &cxgb_netdev_ops;
-               SET_ETHTOOL_OPS(netdev, &cxgb_ethtool_ops);
-       }
-diff --git a/drivers/net/ethernet/chelsio/cxgb3/sge.c b/drivers/net/ethernet/chelsio/cxgb3/sge.c
-index 12c3d36..0e5b894 100644
---- a/drivers/net/ethernet/chelsio/cxgb3/sge.c
-+++ b/drivers/net/ethernet/chelsio/cxgb3/sge.c
-@@ -2020,7 +2020,7 @@ static void rx_eth(struct adapter *adap, struct sge_rspq *rq,
-       skb_pull(skb, sizeof(*p) + pad);
-       skb->protocol = eth_type_trans(skb, adap->port[p->iff]);
-       pi = netdev_priv(skb->dev);
--      if ((skb->dev->features & NETIF_F_RXCSUM) && p->csum_valid &&
-+      if ((pi->rx_offload & T3_RX_CSUM) && p->csum_valid &&
-           p->csum == htons(0xffff) && !p->fragment) {
-               qs->port_stats[SGE_PSTAT_RX_CSUM_GOOD]++;
-               skb->ip_summed = CHECKSUM_UNNECESSARY;
-@@ -2121,7 +2121,7 @@ static void lro_add_page(struct adapter *adap, struct sge_qset *qs,
-               offset = 2 + sizeof(struct cpl_rx_pkt);
-               cpl = qs->lro_va = sd->pg_chunk.va + 2;
-
--              if ((qs->netdev->features & NETIF_F_RXCSUM) &&
-+              if ((pi->rx_offload & T3_RX_CSUM) &&
-                    cpl->csum_valid && cpl->csum == htons(0xffff)) {
-                       skb->ip_summed = CHECKSUM_UNNECESSARY;
-                       qs->port_stats[SGE_PSTAT_RX_CSUM_GOOD]++;
-@@ -2286,8 +2286,7 @@ static int process_responses(struct adapter *adap, struct sge_qset *qs,
-       q->next_holdoff = q->holdoff_tmr;
-
-       while (likely(budget_left && is_new_response(r, q))) {
--              int packet_complete, eth, ethpad = 2;
--              int lro = !!(qs->netdev->features & NETIF_F_GRO);
-+              int packet_complete, eth, ethpad = 2, lro = qs->lro_enabled;
-               struct sk_buff *skb = NULL;
-               u32 len, flags;
-               __be32 rss_hi, rss_lo;
---
-1.7.1
-
diff --git a/backports/2.6.32-EL6.2/17-cxgb3-Add-RHEL6.2-backports.patch b/backports/2.6.32-EL6.2/17-cxgb3-Add-RHEL6.2-backports.patch
deleted file mode 100644 (file)
index eef6afa..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-From 585e4113fc88b627bbc365f2fc15f11a903906c6 Mon Sep 17 00:00:00 2001
-From: Vipul Pandya <vipul@chelsio.com>
-Date: Thu, 10 May 2012 17:12:56 +0530
-Subject: [PATCH 09/14] cxgb3: Add RHEL6.2 backports
-
-Signed-off-by: Vipul Pandya <vipul@chelsio.com>
----
- drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c    |    3 +--
- drivers/net/ethernet/chelsio/cxgb3/cxgb3_offload.c |    3 +--
- drivers/net/ethernet/chelsio/cxgb3/xgmac.c         |    8 ++++----
- 3 files changed, 6 insertions(+), 8 deletions(-)
-
-diff --git a/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c b/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
-index e2da139..c80fed5 100644
---- a/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
-+++ b/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
-@@ -1359,7 +1359,6 @@ out:
- static int offload_close(struct t3cdev *tdev)
- {
-       struct adapter *adapter = tdev2adap(tdev);
--      struct t3c_data *td = T3C_DATA(tdev);
-
-       if (!test_bit(OFFLOAD_DEVMAP_BIT, &adapter->open_device_map))
-               return 0;
-@@ -1370,7 +1369,7 @@ static int offload_close(struct t3cdev *tdev)
-       sysfs_remove_group(&tdev->lldev->dev.kobj, &offload_attr_group);
-
-       /* Flush work scheduled while releasing TIDs */
--      flush_work_sync(&td->tid_release_task);
-+      flush_scheduled_work();
-
-       tdev->lldev = NULL;
-       cxgb3_set_dummy_ops(tdev);
-diff --git a/drivers/net/ethernet/chelsio/cxgb3/cxgb3_offload.c b/drivers/net/ethernet/chelsio/cxgb3/cxgb3_offload.c
-index d7cd560..ce3b0ae 100644
---- a/drivers/net/ethernet/chelsio/cxgb3/cxgb3_offload.c
-+++ b/drivers/net/ethernet/chelsio/cxgb3/cxgb3_offload.c
-@@ -187,10 +187,9 @@ static struct net_device *get_iff_from_mac(struct adapter *adapter,
-                               dev = NULL;
-                               if (grp)
-                                       dev = vlan_group_get_device(grp, vlan);
--                      } else if (netif_is_bond_slave(dev)) {
-+                      } else
-                               while (dev->master)
-                                       dev = dev->master;
--                      }
-                       return dev;
-               }
-       }
-diff --git a/drivers/net/ethernet/chelsio/cxgb3/xgmac.c b/drivers/net/ethernet/chelsio/cxgb3/xgmac.c
-index 3af19a5..5bcadc8 100644
---- a/drivers/net/ethernet/chelsio/cxgb3/xgmac.c
-+++ b/drivers/net/ethernet/chelsio/cxgb3/xgmac.c
-@@ -311,16 +311,16 @@ int t3_mac_set_rx_mode(struct cmac *mac, struct net_device *dev)
-       if (dev->flags & IFF_ALLMULTI)
-               hash_lo = hash_hi = 0xffffffff;
-       else {
--              struct netdev_hw_addr *ha;
-+              const struct dev_addr_list *d;
-               int exact_addr_idx = mac->nucast;
-
-               hash_lo = hash_hi = 0;
--              netdev_for_each_mc_addr(ha, dev)
-+              netdev_for_each_mc_addr(d, dev)
-                       if (exact_addr_idx < EXACT_ADDR_FILTERS)
-                               set_addr_filter(mac, exact_addr_idx++,
--                                              ha->addr);
-+                                              d->dmi_addr);
-                       else {
--                              int hash = hash_hw_addr(ha->addr);
-+                              int hash = hash_hw_addr(d->dmi_addr);
-
-                               if (hash < 32)
-                                       hash_lo |= (1 << hash);
---
-1.7.1
-
diff --git a/backports/2.6.32-EL6.2/18-cxgb4-Add-phys_id-interface.patch b/backports/2.6.32-EL6.2/18-cxgb4-Add-phys_id-interface.patch
deleted file mode 100644 (file)
index 94a38ce..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-From 23e76ca8dcd4d2d1ffbf1cde508c81bc14b09bc9 Mon Sep 17 00:00:00 2001
-From: Vipul Pandya <vipul@chelsio.com>
-Date: Thu, 10 May 2012 17:33:51 +0530
-Subject: [PATCH 10/14] cxgb4: Add phys_id interface
-
-Signed-off-by: Vipul Pandya <vipul@chelsio.com>
----
- drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c |    4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-index 0b77fec..4083a3e 100644
---- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-@@ -868,7 +868,7 @@ void *t4_alloc_mem(size_t size)
-       void *p = kzalloc(size, GFP_KERNEL);
-
-       if (!p)
--              p = vzalloc(size);
-+              p = vmalloc(size);
-       return p;
- }
-
-@@ -1983,7 +1983,7 @@ static struct ethtool_ops cxgb_ethtool_ops = {
-       .set_pauseparam    = set_pauseparam,
-       .get_link          = ethtool_op_get_link,
-       .get_strings       = get_strings,
--      .set_phys_id       = identify_port,
-+      .phys_id           = identify_port,
-       .nway_reset        = restart_autoneg,
-       .get_sset_count    = get_sset_count,
-       .get_ethtool_stats = get_stats,
---
-1.7.1
-
diff --git a/backports/2.6.32-EL6.2/19-cxgb4-Revert-netdevice-changes.patch b/backports/2.6.32-EL6.2/19-cxgb4-Revert-netdevice-changes.patch
deleted file mode 100644 (file)
index 8123815..0000000
+++ /dev/null
@@ -1,195 +0,0 @@
-From 583857f85aadb5438eeeff7c1f4778f6c11ef9ed Mon Sep 17 00:00:00 2001
-From: Vipul Pandya <vipul@chelsio.com>
-Date: Thu, 10 May 2012 17:37:37 +0530
-Subject: [PATCH 11/14] cxgb4: Revert netdevice changes
-
-Signed-off-by: Vipul Pandya <vipul@chelsio.com>
----
- drivers/net/ethernet/chelsio/cxgb4/cxgb4.h      |    6 ++
- drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c |   72 +++++++++++++++++-----
- drivers/net/ethernet/chelsio/cxgb4/sge.c        |    4 +-
- 3 files changed, 64 insertions(+), 18 deletions(-)
-
-diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h b/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
-index 223a7f7..eb79a2d 100644
---- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
-+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
-@@ -289,6 +289,7 @@ struct port_info {
-       u8     port_id;
-       u8     tx_chan;
-       u8     lport;                 /* associated offload logical port */
-+      u8     rx_offload;            /* CSO, etc */
-       u8     nqsets;                /* # of qsets */
-       u8     first_qset;            /* index of first qset */
-       u8     rss_mode;
-@@ -296,6 +297,11 @@ struct port_info {
-       u16   *rss;
- };
-
-+/* port_info.rx_offload flags */
-+enum {
-+      RX_CSO = 1 << 0,
-+};
-+
- struct dentry;
- struct work_struct;
-
-diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-index 4083a3e..ef62323 100644
---- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-@@ -1536,6 +1536,24 @@ static int set_pauseparam(struct net_device *dev,
-       return 0;
- }
-
-+static u32 get_rx_csum(struct net_device *dev)
-+{
-+      struct port_info *p = netdev_priv(dev);
-+
-+      return p->rx_offload & RX_CSO;
-+}
-+
-+static int set_rx_csum(struct net_device *dev, u32 data)
-+{
-+      struct port_info *p = netdev_priv(dev);
-+
-+      if (data)
-+              p->rx_offload |= RX_CSO;
-+      else
-+              p->rx_offload &= ~RX_CSO;
-+      return 0;
-+}
-+
- static void get_sge_param(struct net_device *dev, struct ethtool_ringparam *e)
- {
-       const struct port_info *pi = netdev_priv(dev);
-@@ -1857,20 +1875,36 @@ static int set_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
-       return err;
- }
-
--static int cxgb_set_features(struct net_device *dev, u32 features)
-+#define TSO_FLAGS (NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_TSO_ECN)
-+
-+static int set_tso(struct net_device *dev, u32 value)
-+{
-+      if (value)
-+              dev->features |= TSO_FLAGS;
-+      else
-+              dev->features &= ~TSO_FLAGS;
-+      return 0;
-+}
-+
-+static int set_flags(struct net_device *dev, u32 flags)
- {
--      const struct port_info *pi = netdev_priv(dev);
--      u32 changed = dev->features ^ features;
-       int err;
-+      unsigned long old_feat = dev->features;
-
--      if (!(changed & NETIF_F_HW_VLAN_RX))
--              return 0;
-+      err = ethtool_op_set_flags(dev, flags, ETH_FLAG_RXHASH |
-+                                 ETH_FLAG_RXVLAN | ETH_FLAG_TXVLAN);
-+      if (err)
-+              return err;
-
--      err = t4_set_rxmode(pi->adapter, pi->adapter->fn, pi->viid, -1,
--                          -1, -1, -1,
--                          !!(features & NETIF_F_HW_VLAN_RX), true);
--      if (unlikely(err))
--              dev->features = features ^ NETIF_F_HW_VLAN_RX;
-+      if ((old_feat ^ dev->features) & NETIF_F_HW_VLAN_RX) {
-+              const struct port_info *pi = netdev_priv(dev);
-+
-+              err = t4_set_rxmode(pi->adapter, pi->adapter->fn, pi->viid, -1,
-+                                  -1, -1, -1, !!(flags & ETH_FLAG_RXVLAN),
-+                                  true);
-+              if (err)
-+                      dev->features = old_feat;
-+      }
-       return err;
- }
-
-@@ -1981,6 +2015,10 @@ static struct ethtool_ops cxgb_ethtool_ops = {
-       .set_eeprom        = set_eeprom,
-       .get_pauseparam    = get_pauseparam,
-       .set_pauseparam    = set_pauseparam,
-+      .get_rx_csum       = get_rx_csum,
-+      .set_rx_csum       = set_rx_csum,
-+      .set_tx_csum       = ethtool_op_set_tx_ipv6_csum,
-+      .set_sg            = ethtool_op_set_sg,
-       .get_link          = ethtool_op_get_link,
-       .get_strings       = get_strings,
-       .phys_id           = identify_port,
-@@ -1991,6 +2029,8 @@ static struct ethtool_ops cxgb_ethtool_ops = {
-       .get_regs          = get_regs,
-       .get_wol           = get_wol,
-       .set_wol           = set_wol,
-+      .set_tso           = set_tso,
-+      .set_flags         = set_flags,
-       .get_rxnfc         = get_rxnfc,
-       .get_rxfh_indir    = get_rss_table,
-       .set_rxfh_indir    = set_rss_table,
-@@ -2847,7 +2887,6 @@ static const struct net_device_ops cxgb4_netdev_ops = {
-       .ndo_get_stats64      = cxgb_get_stats,
-       .ndo_set_rx_mode      = cxgb_set_rxmode,
-       .ndo_set_mac_address  = cxgb_set_mac_addr,
--      .ndo_set_features     = cxgb_set_features,
-       .ndo_validate_addr    = eth_validate_addr,
-       .ndo_do_ioctl         = cxgb_ioctl,
-       .ndo_change_mtu       = cxgb_change_mtu,
-@@ -3530,7 +3569,6 @@ static void free_some_resources(struct adapter *adapter)
-               t4_fw_bye(adapter, adapter->fn);
- }
-
--#define TSO_FLAGS (NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_TSO_ECN)
- #define VLAN_FEAT (NETIF_F_SG | NETIF_F_IP_CSUM | TSO_FLAGS | \
-                  NETIF_F_IPV6_CSUM | NETIF_F_HIGHDMA)
-
-@@ -3632,14 +3670,14 @@ static int __devinit init_one(struct pci_dev *pdev,
-               pi = netdev_priv(netdev);
-               pi->adapter = adapter;
-               pi->xact_addr_filt = -1;
-+              pi->rx_offload = RX_CSO;
-               pi->port_id = i;
-               netdev->irq = pdev->irq;
-
--              netdev->hw_features = NETIF_F_SG | TSO_FLAGS |
--                      NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM |
--                      NETIF_F_RXCSUM | NETIF_F_RXHASH |
--                      NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX;
--              netdev->features |= netdev->hw_features | highdma;
-+              netdev->features |= NETIF_F_SG | TSO_FLAGS;
-+              netdev->features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM;
-+              netdev->features |= NETIF_F_GRO | NETIF_F_RXHASH | highdma;
-+              netdev->features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX;
-               netdev->vlan_features = netdev->features & VLAN_FEAT;
-
-               netdev->netdev_ops = &cxgb4_netdev_ops;
-diff --git a/drivers/net/ethernet/chelsio/cxgb4/sge.c b/drivers/net/ethernet/chelsio/cxgb4/sge.c
-index 7fa9fd0..1dcf0fd 100644
---- a/drivers/net/ethernet/chelsio/cxgb4/sge.c
-+++ b/drivers/net/ethernet/chelsio/cxgb4/sge.c
-@@ -1559,6 +1559,7 @@ int t4_ethrx_handler(struct sge_rspq *q, const __be64 *rsp,
- {
-       bool csum_ok;
-       struct sk_buff *skb;
-+      struct port_info *pi;
-       const struct cpl_rx_pkt *pkt;
-       struct sge_eth_rxq *rxq = container_of(q, struct sge_eth_rxq, rspq);
-
-@@ -1586,9 +1587,10 @@ int t4_ethrx_handler(struct sge_rspq *q, const __be64 *rsp,
-       if (skb->dev->features & NETIF_F_RXHASH)
-               skb->rxhash = (__force u32)pkt->rsshdr.hash_val;
-
-+      pi = netdev_priv(skb->dev);
-       rxq->stats.pkts++;
-
--      if (csum_ok && (q->netdev->features & NETIF_F_RXCSUM) &&
-+      if (csum_ok && (pi->rx_offload & RX_CSO) &&
-           (pkt->l2info & htonl(RXF_UDP | RXF_TCP))) {
-               if (!pkt->ip_frag) {
-                       skb->ip_summed = CHECKSUM_UNNECESSARY;
---
-1.7.1
-
diff --git a/backports/2.6.32-EL6.2/20-cxgb4-cxgb4_main-and-sge-changes.patch b/backports/2.6.32-EL6.2/20-cxgb4-cxgb4_main-and-sge-changes.patch
deleted file mode 100644 (file)
index 648dae6..0000000
+++ /dev/null
@@ -1,183 +0,0 @@
-From 65f230d00b7f0d6558f53a2df049cc7f9fa7f041 Mon Sep 17 00:00:00 2001
-From: Vipul Pandya <vipul@chelsio.com>
-Date: Thu, 10 May 2012 17:49:00 +0530
-Subject: [PATCH 12/14] cxgb4: cxgb4_main and sge changes
-
-Signed-off-by: Vipul Pandya <vipul@chelsio.com>
----
- drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c |   89 ++---------------------
- drivers/net/ethernet/chelsio/cxgb4/sge.c        |    4 -
- 2 files changed, 7 insertions(+), 86 deletions(-)
-
-diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-index ef62323..49da127 100644
---- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-@@ -333,14 +333,14 @@ static int set_addr_filters(const struct net_device *dev, bool sleep)
-       u16 filt_idx[7];
-       const u8 *addr[7];
-       int ret, naddr = 0;
-+      const struct dev_addr_list *d;
-       const struct netdev_hw_addr *ha;
--      int uc_cnt = netdev_uc_count(dev);
--      int mc_cnt = netdev_mc_count(dev);
-+      int uc_cnt = ((&(dev)->uc)->count);
-       const struct port_info *pi = netdev_priv(dev);
-       unsigned int mb = pi->adapter->fn;
-
-       /* first do the secondary unicast addresses */
--      netdev_for_each_uc_addr(ha, dev) {
-+      list_for_each_entry(ha, &(&(dev)->uc)->list, list) {
-               addr[naddr++] = ha->addr;
-               if (--uc_cnt == 0 || naddr >= ARRAY_SIZE(addr)) {
-                       ret = t4_alloc_mac_filt(pi->adapter, mb, pi->viid, free,
-@@ -354,9 +354,9 @@ static int set_addr_filters(const struct net_device *dev, bool sleep)
-       }
-
-       /* next set up the multicast addresses */
--      netdev_for_each_mc_addr(ha, dev) {
--              addr[naddr++] = ha->addr;
--              if (--mc_cnt == 0 || naddr >= ARRAY_SIZE(addr)) {
-+      netdev_for_each_mc_addr(d, dev) {
-+              addr[naddr++] = d->dmi_addr;
-+              if (naddr >= ARRAY_SIZE(addr) || d->next == NULL) {
-                       ret = t4_alloc_mac_filt(pi->adapter, mb, pi->viid, free,
-                                       naddr, addr, filt_idx, &mhash, sleep);
-                       if (ret < 0)
-@@ -1891,8 +1891,7 @@ static int set_flags(struct net_device *dev, u32 flags)
-       int err;
-       unsigned long old_feat = dev->features;
-
--      err = ethtool_op_set_flags(dev, flags, ETH_FLAG_RXHASH |
--                                 ETH_FLAG_RXVLAN | ETH_FLAG_TXVLAN);
-+      err = ethtool_op_set_flags(dev, flags);
-       if (err)
-               return err;
-
-@@ -1908,35 +1907,6 @@ static int set_flags(struct net_device *dev, u32 flags)
-       return err;
- }
-
--static int get_rss_table(struct net_device *dev, struct ethtool_rxfh_indir *p)
--{
--      const struct port_info *pi = netdev_priv(dev);
--      unsigned int n = min_t(unsigned int, p->size, pi->rss_size);
--
--      p->size = pi->rss_size;
--      while (n--)
--              p->ring_index[n] = pi->rss[n];
--      return 0;
--}
--
--static int set_rss_table(struct net_device *dev,
--                       const struct ethtool_rxfh_indir *p)
--{
--      unsigned int i;
--      struct port_info *pi = netdev_priv(dev);
--
--      if (p->size != pi->rss_size)
--              return -EINVAL;
--      for (i = 0; i < p->size; i++)
--              if (p->ring_index[i] >= pi->nqsets)
--                      return -EINVAL;
--      for (i = 0; i < p->size; i++)
--              pi->rss[i] = p->ring_index[i];
--      if (pi->adapter->flags & FULL_INIT_DONE)
--              return write_rss(pi, pi->rss);
--      return 0;
--}
--
- static int get_rxnfc(struct net_device *dev, struct ethtool_rxnfc *info,
-                    void *rules)
- {
-@@ -2032,8 +2002,6 @@ static struct ethtool_ops cxgb_ethtool_ops = {
-       .set_tso           = set_tso,
-       .set_flags         = set_flags,
-       .get_rxnfc         = get_rxnfc,
--      .get_rxfh_indir    = get_rss_table,
--      .set_rxfh_indir    = set_rss_table,
-       .flash_device      = set_flash,
- };
-
-@@ -2743,48 +2711,6 @@ static int cxgb_close(struct net_device *dev)
-       return t4_enable_vi(adapter, adapter->fn, pi->viid, false, false);
- }
-
--static struct rtnl_link_stats64 *cxgb_get_stats(struct net_device *dev,
--                                              struct rtnl_link_stats64 *ns)
--{
--      struct port_stats stats;
--      struct port_info *p = netdev_priv(dev);
--      struct adapter *adapter = p->adapter;
--
--      spin_lock(&adapter->stats_lock);
--      t4_get_port_stats(adapter, p->tx_chan, &stats);
--      spin_unlock(&adapter->stats_lock);
--
--      ns->tx_bytes   = stats.tx_octets;
--      ns->tx_packets = stats.tx_frames;
--      ns->rx_bytes   = stats.rx_octets;
--      ns->rx_packets = stats.rx_frames;
--      ns->multicast  = stats.rx_mcast_frames;
--
--      /* detailed rx_errors */
--      ns->rx_length_errors = stats.rx_jabber + stats.rx_too_long +
--                             stats.rx_runt;
--      ns->rx_over_errors   = 0;
--      ns->rx_crc_errors    = stats.rx_fcs_err;
--      ns->rx_frame_errors  = stats.rx_symbol_err;
--      ns->rx_fifo_errors   = stats.rx_ovflow0 + stats.rx_ovflow1 +
--                             stats.rx_ovflow2 + stats.rx_ovflow3 +
--                             stats.rx_trunc0 + stats.rx_trunc1 +
--                             stats.rx_trunc2 + stats.rx_trunc3;
--      ns->rx_missed_errors = 0;
--
--      /* detailed tx_errors */
--      ns->tx_aborted_errors   = 0;
--      ns->tx_carrier_errors   = 0;
--      ns->tx_fifo_errors      = 0;
--      ns->tx_heartbeat_errors = 0;
--      ns->tx_window_errors    = 0;
--
--      ns->tx_errors = stats.tx_error_frames;
--      ns->rx_errors = stats.rx_symbol_err + stats.rx_fcs_err +
--              ns->rx_length_errors + stats.rx_len_err + ns->rx_fifo_errors;
--      return ns;
--}
--
- static int cxgb_ioctl(struct net_device *dev, struct ifreq *req, int cmd)
- {
-       unsigned int mbox;
-@@ -2884,7 +2810,6 @@ static const struct net_device_ops cxgb4_netdev_ops = {
-       .ndo_open             = cxgb_open,
-       .ndo_stop             = cxgb_close,
-       .ndo_start_xmit       = t4_eth_xmit,
--      .ndo_get_stats64      = cxgb_get_stats,
-       .ndo_set_rx_mode      = cxgb_set_rxmode,
-       .ndo_set_mac_address  = cxgb_set_mac_addr,
-       .ndo_validate_addr    = eth_validate_addr,
-diff --git a/drivers/net/ethernet/chelsio/cxgb4/sge.c b/drivers/net/ethernet/chelsio/cxgb4/sge.c
-index 1dcf0fd..c935ae9 100644
---- a/drivers/net/ethernet/chelsio/cxgb4/sge.c
-+++ b/drivers/net/ethernet/chelsio/cxgb4/sge.c
-@@ -1530,8 +1530,6 @@ static void do_gro(struct sge_eth_rxq *rxq, const struct pkt_gl *gl,
-       skb->truesize += skb->data_len;
-       skb->ip_summed = CHECKSUM_UNNECESSARY;
-       skb_record_rx_queue(skb, rxq->rspq.idx);
--      if (rxq->rspq.netdev->features & NETIF_F_RXHASH)
--              skb->rxhash = (__force u32)pkt->rsshdr.hash_val;
-
-       if (unlikely(pkt->vlan_ex)) {
-               __vlan_hwaccel_put_tag(skb, ntohs(pkt->vlan));
-@@ -1584,8 +1582,6 @@ int t4_ethrx_handler(struct sge_rspq *q, const __be64 *rsp,
-       __skb_pull(skb, RX_PKT_PAD);      /* remove ethernet header padding */
-       skb->protocol = eth_type_trans(skb, q->netdev);
-       skb_record_rx_queue(skb, q->idx);
--      if (skb->dev->features & NETIF_F_RXHASH)
--              skb->rxhash = (__force u32)pkt->rsshdr.hash_val;
-
-       pi = netdev_priv(skb->dev);
-       rxq->stats.pkts++;
---
-1.7.1
-
diff --git a/backports/2.6.32-EL6.2/21-cxgb4-real_num_tx_queues-changes.patch b/backports/2.6.32-EL6.2/21-cxgb4-real_num_tx_queues-changes.patch
deleted file mode 100644 (file)
index 8a0b6cf..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-From ce0bbdee8fe4ac34ad0b695f914c499b5ebeae3f Mon Sep 17 00:00:00 2001
-From: Vipul Pandya <vipul@chelsio.com>
-Date: Thu, 10 May 2012 17:51:16 +0530
-Subject: [PATCH 13/14] cxgb4: real_num_tx_queues changes
-
-Signed-off-by: Vipul Pandya <vipul@chelsio.com>
----
- drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c |    3 ++-
- drivers/net/ethernet/chelsio/cxgb4/t4_hw.c      |    2 +-
- 2 files changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-index 49da127..a669aad 100644
---- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-@@ -3462,7 +3462,7 @@ static void __devinit enable_pcie_relaxed_ordering(struct pci_dev *dev)
-       u16 v;
-       int pos;
-
--      pos = pci_pcie_cap(dev);
-+      pos = pci_find_capability(dev, PCI_CAP_ID_EXP);
-       if (pos > 0) {
-               pci_read_config_word(dev, pos + PCI_EXP_DEVCTL, &v);
-               v |= PCI_EXP_DEVCTL_RELAX_EN;
-@@ -3654,6 +3654,7 @@ static int __devinit init_one(struct pci_dev *pdev,
-        */
-       for_each_port(adapter, i) {
-               pi = adap2pinfo(adapter, i);
-+              adapter->port[i]->real_num_tx_queues = pi->nqsets;
-               netif_set_real_num_tx_queues(adapter->port[i], pi->nqsets);
-               netif_set_real_num_rx_queues(adapter->port[i], pi->nqsets);
-
-diff --git a/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c b/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
-index d1ec111..8147917 100644
---- a/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
-+++ b/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
-@@ -2685,7 +2685,7 @@ static void __devinit get_pci_mode(struct adapter *adapter,
-                                  struct pci_params *p)
- {
-       u16 val;
--      u32 pcie_cap = pci_pcie_cap(adapter->pdev);
-+      u32 pcie_cap = pci_find_capability(adapter->pdev, PCI_CAP_ID_EXP);
-
-       if (pcie_cap) {
-               pci_read_config_word(adapter->pdev, pcie_cap + PCI_EXP_LNKSTA,
---
-1.7.1
-
diff --git a/backports/2.6.32-EL6.2/22-cxgb4-Fix-packet-counters.patch b/backports/2.6.32-EL6.2/22-cxgb4-Fix-packet-counters.patch
deleted file mode 100644 (file)
index d26dea0..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-From 05e7163348fbef11a2307c52259e75ff19d46cf1 Mon Sep 17 00:00:00 2001
-From: Vipul Pandya <vipul@chelsio.com>
-Date: Thu, 10 May 2012 17:52:47 +0530
-Subject: [PATCH 14/14] cxgb4: Fix packet counters
-
-Signed-off-by: Vipul Pandya <vipul@chelsio.com>
----
- drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c |   43 +++++++++++++++++++++++
- 1 files changed, 43 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-index a669aad..90390c3 100644
---- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-@@ -2711,6 +2711,48 @@ static int cxgb_close(struct net_device *dev)
-       return t4_enable_vi(adapter, adapter->fn, pi->viid, false, false);
- }
-
-+static struct net_device_stats *cxgb_get_stats(struct net_device *dev)
-+{
-+      struct port_stats stats;
-+      struct port_info *p = netdev_priv(dev);
-+      struct adapter *adapter = p->adapter;
-+      struct net_device_stats *ns = &dev->stats;
-+
-+      spin_lock(&adapter->stats_lock);
-+      t4_get_port_stats(adapter, p->tx_chan, &stats);
-+      spin_unlock(&adapter->stats_lock);
-+
-+      ns->tx_bytes   = stats.tx_octets;
-+      ns->tx_packets = stats.tx_frames;
-+      ns->rx_bytes   = stats.rx_octets;
-+      ns->rx_packets = stats.rx_frames;
-+      ns->multicast  = stats.rx_mcast_frames;
-+
-+      /* detailed rx_errors */
-+      ns->rx_length_errors = stats.rx_jabber + stats.rx_too_long +
-+              stats.rx_runt;
-+      ns->rx_over_errors   = 0;
-+      ns->rx_crc_errors    = stats.rx_fcs_err;
-+      ns->rx_frame_errors  = stats.rx_symbol_err;
-+      ns->rx_fifo_errors   = stats.rx_ovflow0 + stats.rx_ovflow1 +
-+              stats.rx_ovflow2 + stats.rx_ovflow3 +
-+              stats.rx_trunc0 + stats.rx_trunc1 +
-+              stats.rx_trunc2 + stats.rx_trunc3;
-+      ns->rx_missed_errors = 0;
-+
-+      /* detailed tx_errors */
-+      ns->tx_aborted_errors   = 0;
-+      ns->tx_carrier_errors   = 0;
-+      ns->tx_fifo_errors      = 0;
-+      ns->tx_heartbeat_errors = 0;
-+      ns->tx_window_errors    = 0;
-+
-+      ns->tx_errors = stats.tx_error_frames;
-+      ns->rx_errors = stats.rx_symbol_err + stats.rx_fcs_err +
-+              ns->rx_length_errors + stats.rx_len_err + ns->rx_fifo_errors;
-+      return ns;
-+}
-+
- static int cxgb_ioctl(struct net_device *dev, struct ifreq *req, int cmd)
- {
-       unsigned int mbox;
-@@ -2810,6 +2852,7 @@ static const struct net_device_ops cxgb4_netdev_ops = {
-       .ndo_open             = cxgb_open,
-       .ndo_stop             = cxgb_close,
-       .ndo_start_xmit       = t4_eth_xmit,
-+      .ndo_get_stats        = cxgb_get_stats,
-       .ndo_set_rx_mode      = cxgb_set_rxmode,
-       .ndo_set_mac_address  = cxgb_set_mac_addr,
-       .ndo_validate_addr    = eth_validate_addr,
---
-1.7.1
-
diff --git a/backports/2.6.32-EL6.2/23-qib_fs_RHEL6.2_backports.patch b/backports/2.6.32-EL6.2/23-qib_fs_RHEL6.2_backports.patch
deleted file mode 100644 (file)
index 544a224..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-diff -rup a/drivers/infiniband/hw/qib/qib_fs.c b/drivers/infiniband/hw/qib/qib_fs.c
---- a/drivers/infiniband/hw/qib/qib_fs.c       2012-05-21 10:14:13.000000000 -0400
-+++ b/drivers/infiniband/hw/qib/qib_fs.c       2012-05-21 10:51:08.000000000 -0400
-@@ -58,7 +58,9 @@ static int qibfs_mknod(struct inode *dir
-               goto bail;
-       }
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,36))
-       inode->i_ino = get_next_ino();
-+#endif
-       inode->i_mode = mode;
-       inode->i_uid = 0;
-       inode->i_gid = 0;
-@@ -453,14 +455,27 @@ static int remove_file(struct dentry *pa
-               goto bail;
-       }
-+#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,36))
-+      spin_lock(&dcache_lock);
-+#endif
-       spin_lock(&tmp->d_lock);
-       if (!(d_unhashed(tmp) && tmp->d_inode)) {
-+#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,36))
-+              dget_locked(tmp);
-+#else
-               dget_dlock(tmp);
-+#endif
-               __d_drop(tmp);
-               spin_unlock(&tmp->d_lock);
-+#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,36))
-+              spin_unlock(&dcache_lock);
-+#endif
-               simple_unlink(parent->d_inode, tmp);
-       } else {
-               spin_unlock(&tmp->d_lock);
-+#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,36))
-+              spin_unlock(&dcache_lock);
-+#endif
-       }
-       ret = 0;
-@@ -552,6 +567,7 @@ bail:
-       return ret;
- }
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,36))
- static struct dentry *qibfs_mount(struct file_system_type *fs_type, int flags,
-                       const char *dev_name, void *data)
- {
-@@ -559,6 +575,15 @@ static struct dentry *qibfs_mount(struct
-       ret = mount_single(fs_type, flags, data, qibfs_fill_super);
-       if (!IS_ERR(ret))
-               qib_super = ret->d_sb;
-+#else
-+static int qibfs_get_sb(struct file_system_type *fs_type, int flags,
-+                      const char *dev_name, void *data, struct vfsmount *mnt)
-+{
-+      int ret = get_sb_single(fs_type, flags, data,
-+                                      qibfs_fill_super, mnt);
-+      if (ret >= 0)
-+              qib_super = mnt->mnt_sb;
-+#endif
-       return ret;
- }
-@@ -600,7 +625,11 @@ int qibfs_remove(struct qib_devdata *dd)
- static struct file_system_type qibfs_fs_type = {
-       .owner =        THIS_MODULE,
-       .name =         "ipathfs",
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,36))
-       .mount =        qibfs_mount,
-+#else
-+      .get_sb =        qibfs_get_sb,
-+#endif
-       .kill_sb =      qibfs_kill_super,
- };
diff --git a/backports/3.0.13_sles11_sp2/01-pinned_to_locked_vm_to_3_1.patch b/backports/3.0.13_sles11_sp2/01-pinned_to_locked_vm_to_3_1.patch
deleted file mode 100644 (file)
index 5875c2b..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-Index: compat-rdma/drivers/infiniband/core/umem.c
-===================================================================
---- compat-rdma.orig/drivers/infiniband/core/umem.c
-+++ compat-rdma/drivers/infiniband/core/umem.c
-@@ -137,7 +137,7 @@ struct ib_umem *ib_umem_get(struct ib_uc
-       down_write(&current->mm->mmap_sem);
--      locked     = npages + current->mm->pinned_vm;
-+      locked     = npages + current->mm->locked_vm;
-       lock_limit = rlimit(RLIMIT_MEMLOCK) >> PAGE_SHIFT;
-       if ((locked > lock_limit) && !capable(CAP_IPC_LOCK)) {
-@@ -207,7 +207,7 @@ out:
-               __ib_umem_release(context->device, umem, 0);
-               kfree(umem);
-       } else
--              current->mm->pinned_vm = locked;
-+              current->mm->locked_vm = locked;
-       up_write(&current->mm->mmap_sem);
-       if (vma_list)
-@@ -223,7 +223,7 @@ static void ib_umem_account(struct work_
-       struct ib_umem *umem = container_of(work, struct ib_umem, work);
-       down_write(&umem->mm->mmap_sem);
--      umem->mm->pinned_vm -= umem->diff;
-+      umem->mm->locked_vm -= umem->diff;
-       up_write(&umem->mm->mmap_sem);
-       mmput(umem->mm);
-       kfree(umem);
-Index: compat-rdma/drivers/infiniband/hw/ipath/ipath_user_pages.c
-===================================================================
---- compat-rdma.orig/drivers/infiniband/hw/ipath/ipath_user_pages.c
-+++ compat-rdma/drivers/infiniband/hw/ipath/ipath_user_pages.c
-@@ -79,7 +79,7 @@ static int __ipath_get_user_pages(unsign
-                       goto bail_release;
-       }
--      current->mm->pinned_vm += num_pages;
-+      current->mm->locked_vm += num_pages;
-       ret = 0;
-       goto bail;
-@@ -178,7 +178,7 @@ void ipath_release_user_pages(struct pag
-       __ipath_release_user_pages(p, num_pages, 1);
--      current->mm->pinned_vm -= num_pages;
-+      current->mm->locked_vm -= num_pages;
-       up_write(&current->mm->mmap_sem);
- }
-@@ -195,7 +195,7 @@ static void user_pages_account(struct wo
-               container_of(_work, struct ipath_user_pages_work, work);
-       down_write(&work->mm->mmap_sem);
--      work->mm->pinned_vm -= work->num_pages;
-+      work->mm->locked_vm -= work->num_pages;
-       up_write(&work->mm->mmap_sem);
-       mmput(work->mm);
-       kfree(work);
-Index: compat-rdma/drivers/infiniband/hw/qib/qib_user_pages.c
-===================================================================
---- compat-rdma.orig/drivers/infiniband/hw/qib/qib_user_pages.c
-+++ compat-rdma/drivers/infiniband/hw/qib/qib_user_pages.c
-@@ -74,7 +74,7 @@ static int __qib_get_user_pages(unsigned
-                       goto bail_release;
-       }
--      current->mm->pinned_vm += num_pages;
-+      current->mm->locked_vm += num_pages;
-       ret = 0;
-       goto bail;
-@@ -151,7 +151,7 @@ void qib_release_user_pages(struct page
-       __qib_release_user_pages(p, num_pages, 1);
-       if (current->mm) {
--              current->mm->pinned_vm -= num_pages;
-+              current->mm->locked_vm -= num_pages;
-               up_write(&current->mm->mmap_sem);
-       }
- }
diff --git a/backports/3.0.13_sles11_sp2/02-remove-SKB-paged-frag-API.patch b/backports/3.0.13_sles11_sp2/02-remove-SKB-paged-frag-API.patch
deleted file mode 100644 (file)
index 1c44fc4..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-Index: compat-rdma/drivers/net/ethernet/mellanox/mlx4/en_rx.c
-===================================================================
---- compat-rdma.orig/drivers/net/ethernet/mellanox/mlx4/en_rx.c        2012-01-09 16:15:04.000000000 +0200
-+++ compat-rdma/drivers/net/ethernet/mellanox/mlx4/en_rx.c     2012-01-23 11:52:39.899175000 +0200
-@@ -44,7 +44,7 @@
- static int mlx4_en_alloc_frag(struct mlx4_en_priv *priv,
-                             struct mlx4_en_rx_desc *rx_desc,
--                            struct page_frag *skb_frags,
-+                            struct skb_frag_struct *skb_frags,
-                             struct mlx4_en_rx_alloc *ring_alloc,
-                             int i)
- {
-@@ -61,7 +61,7 @@ static int mlx4_en_alloc_frag(struct mlx
-                       return -ENOMEM;
-               skb_frags[i].page = page_alloc->page;
--              skb_frags[i].offset = page_alloc->offset;
-+              skb_frags[i].page_offset = page_alloc->offset;
-               page_alloc->page = page;
-               page_alloc->offset = frag_info->frag_align;
-       } else {
-@@ -69,11 +69,11 @@ static int mlx4_en_alloc_frag(struct mlx
-               get_page(page);
-               skb_frags[i].page = page;
--              skb_frags[i].offset = page_alloc->offset;
-+              skb_frags[i].page_offset = page_alloc->offset;
-               page_alloc->offset += frag_info->frag_stride;
-       }
-       dma = pci_map_single(mdev->pdev, page_address(skb_frags[i].page) +
--                           skb_frags[i].offset, frag_info->frag_size,
-+                           skb_frags[i].page_offset, frag_info->frag_size,
-                            PCI_DMA_FROMDEVICE);
-       rx_desc->data[i].addr = cpu_to_be64(dma);
-       return 0;
-@@ -157,8 +157,8 @@ static int mlx4_en_prepare_rx_desc(struc
-                                  struct mlx4_en_rx_ring *ring, int index)
- {
-       struct mlx4_en_rx_desc *rx_desc = ring->buf + (index * ring->stride);
--      struct page_frag *skb_frags = ring->rx_info +
--                                    (index << priv->log_rx_info);
-+      struct skb_frag_struct *skb_frags = ring->rx_info +
-+                                          (index << priv->log_rx_info);
-       int i;
-       for (i = 0; i < priv->num_frags; i++)
-@@ -183,7 +183,7 @@ static void mlx4_en_free_rx_desc(struct
-                                int index)
- {
-       struct mlx4_en_dev *mdev = priv->mdev;
--      struct page_frag *skb_frags;
-+      struct skb_frag_struct *skb_frags;
-       struct mlx4_en_rx_desc *rx_desc = ring->buf + (index << ring->log_stride);
-       dma_addr_t dma;
-       int nr;
-@@ -194,7 +194,7 @@ static void mlx4_en_free_rx_desc(struct
-               dma = be64_to_cpu(rx_desc->data[nr].addr);
-               en_dbg(DRV, priv, "Unmapping buffer at dma:0x%llx\n", (u64) dma);
--              pci_unmap_single(mdev->pdev, dma, skb_frags[nr].size,
-+              pci_unmap_single(mdev->pdev, dma, skb_frag_size(&skb_frags[nr]),
-                                PCI_DMA_FROMDEVICE);
-               put_page(skb_frags[nr].page);
-       }
-@@ -403,7 +403,7 @@ void mlx4_en_deactivate_rx_ring(struct m
- /* Unmap a completed descriptor and free unused pages */
- static int mlx4_en_complete_rx_desc(struct mlx4_en_priv *priv,
-                                   struct mlx4_en_rx_desc *rx_desc,
--                                  struct page_frag *skb_frags,
-+                                  struct skb_frag_struct *skb_frags,
-                                   struct sk_buff *skb,
-                                   struct mlx4_en_rx_alloc *page_alloc,
-                                   int length)
-@@ -421,9 +421,9 @@ static int mlx4_en_complete_rx_desc(stru
-                       break;
-               /* Save page reference in skb */
--              __skb_frag_set_page(&skb_frags_rx[nr], skb_frags[nr].page);
--              skb_frag_size_set(&skb_frags_rx[nr], skb_frags[nr].size);
--              skb_frags_rx[nr].page_offset = skb_frags[nr].offset;
-+              skb_frags_rx[nr].page = skb_frags[nr].page;
-+              skb_frag_size_set(&skb_frags_rx[nr], skb_frag_size(&skb_frags[nr]));
-+              skb_frags_rx[nr].page_offset = skb_frags[nr].page_offset;
-               skb->truesize += frag_info->frag_stride;
-               dma = be64_to_cpu(rx_desc->data[nr].addr);
-@@ -446,7 +446,7 @@ fail:
-        * the descriptor) of this packet; remaining fragments are reused... */
-       while (nr > 0) {
-               nr--;
--              __skb_frag_unref(&skb_frags_rx[nr]);
-+              put_page(skb_frags_rx[nr].page);
-       }
-       return 0;
- }
-@@ -454,7 +454,7 @@ fail:
- static struct sk_buff *mlx4_en_rx_skb(struct mlx4_en_priv *priv,
-                                     struct mlx4_en_rx_desc *rx_desc,
--                                    struct page_frag *skb_frags,
-+                                    struct skb_frag_struct *skb_frags,
-                                     struct mlx4_en_rx_alloc *page_alloc,
-                                     unsigned int length)
- {
-@@ -475,7 +475,7 @@ static struct sk_buff *mlx4_en_rx_skb(st
-       /* Get pointer to first fragment so we could copy the headers into the
-        * (linear part of the) skb */
--      va = page_address(skb_frags[0].page) + skb_frags[0].offset;
-+      va = page_address(skb_frags[0].page) + skb_frags[0].page_offset;
-       if (length <= SMALL_PACKET_SIZE) {
-               /* We are copying all relevant data to the skb - temporarily
-@@ -533,7 +533,7 @@ int mlx4_en_process_rx_cq(struct net_dev
-       struct mlx4_en_priv *priv = netdev_priv(dev);
-       struct mlx4_cqe *cqe;
-       struct mlx4_en_rx_ring *ring = &priv->rx_ring[cq->ring];
--      struct page_frag *skb_frags;
-+      struct skb_frag_struct *skb_frags;
-       struct mlx4_en_rx_desc *rx_desc;
-       struct sk_buff *skb;
-       int index;
diff --git a/backports/3.0.13_sles11_sp2/03-remove-attr_is_visible.patch b/backports/3.0.13_sles11_sp2/03-remove-attr_is_visible.patch
deleted file mode 100644 (file)
index c05ace7..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-Index: compat-rdma/drivers/infiniband/ulp/iser/iscsi_iser.c
-===================================================================
---- compat-rdma.orig/drivers/infiniband/ulp/iser/iscsi_iser.c
-+++ compat-rdma/drivers/infiniband/ulp/iser/iscsi_iser.c
-@@ -719,7 +719,9 @@ static struct iscsi_transport iscsi_iser
-       .create_conn            = iscsi_iser_conn_create,
-       .bind_conn              = iscsi_iser_conn_bind,
-       .destroy_conn           = iscsi_iser_conn_destroy,
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(3,2,0))
-       .attr_is_visible        = iser_attr_is_visible,
-+#endif
-       .set_param              = iscsi_iser_set_param,
-       .get_conn_param         = iscsi_conn_get_param,
-       .get_ep_param           = iscsi_iser_get_ep_param,
diff --git a/backports/3.0.13_sles11_sp2/04-cxgb4-Reversing-convert-to-SKB-paged-frag-API.patch b/backports/3.0.13_sles11_sp2/04-cxgb4-Reversing-convert-to-SKB-paged-frag-API.patch
deleted file mode 100644 (file)
index 11a0fc1..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-From 5ea32823a4937cd918a823bd0dfbbb592e8b9e6e Mon Sep 17 00:00:00 2001
-From: Vipul Pandya <vipul@chelsio.com>
-Date: Mon, 7 May 2012 14:17:55 +0530
-Subject: [PATCH 1/2] cxgb4: Reversing convert to SKB paged frag API.
-
-This patch is a reverse patch of upstream commit
-e91b0f2491f7a7b21c4e562df09f3dbe551f0fe2
-
-Signed-off-by: Vipul Pandya <vipul@chelsio.com>
----
- drivers/net/ethernet/chelsio/cxgb4/cxgb4.h |    2 +-
- drivers/net/ethernet/chelsio/cxgb4/sge.c   |   45 +++++++++++++--------------
- 2 files changed, 23 insertions(+), 24 deletions(-)
-
-diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h b/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
-index 0fe1885..223a7f7 100644
---- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
-+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
-@@ -326,7 +326,7 @@ struct sge_fl {                     /* SGE free-buffer queue state */
-
- /* A packet gather list */
- struct pkt_gl {
--      struct page_frag frags[MAX_SKB_FRAGS];
-+      skb_frag_t frags[MAX_SKB_FRAGS];
-       void *va;                         /* virtual address of first byte */
-       unsigned int nfrags;              /* # of fragments */
-       unsigned int tot_len;             /* total length of fragments */
-diff --git a/drivers/net/ethernet/chelsio/cxgb4/sge.c b/drivers/net/ethernet/chelsio/cxgb4/sge.c
-index 140254c..c5e99fb 100644
---- a/drivers/net/ethernet/chelsio/cxgb4/sge.c
-+++ b/drivers/net/ethernet/chelsio/cxgb4/sge.c
-@@ -216,8 +216,8 @@ static int map_skb(struct device *dev, const struct sk_buff *skb,
-       end = &si->frags[si->nr_frags];
-
-       for (fp = si->frags; fp < end; fp++) {
--              *++addr = skb_frag_dma_map(dev, fp, 0, skb_frag_size(fp),
--                                         DMA_TO_DEVICE);
-+              *++addr = dma_map_page(dev, fp->page, fp->page_offset,
-+                                     skb_frag_size(fp), DMA_TO_DEVICE);
-               if (dma_mapping_error(dev, *addr))
-                       goto unwind;
-       }
-@@ -1410,23 +1410,22 @@ int cxgb4_ofld_send(struct net_device *dev, struct sk_buff *skb)
- }
- EXPORT_SYMBOL(cxgb4_ofld_send);
-
--static inline void copy_frags(struct sk_buff *skb,
-+static inline void copy_frags(struct skb_shared_info *ssi,
-                             const struct pkt_gl *gl, unsigned int offset)
- {
--      int i;
-+      unsigned int n;
-
-       /* usually there's just one frag */
--      __skb_fill_page_desc(skb, 0, gl->frags[0].page,
--                           gl->frags[0].offset + offset,
--                           gl->frags[0].size - offset);
--      skb_shinfo(skb)->nr_frags = gl->nfrags;
--      for (i = 1; i < gl->nfrags; i++)
--              __skb_fill_page_desc(skb, i, gl->frags[i].page,
--                                   gl->frags[i].offset,
--                                   gl->frags[i].size);
-+      ssi->frags[0].page = gl->frags[0].page;
-+      ssi->frags[0].page_offset = gl->frags[0].page_offset + offset;
-+      skb_frag_size_set(&ssi->frags[0], skb_frag_size(&gl->frags[0]) - offset);
-+      ssi->nr_frags = gl->nfrags;
-+      n = gl->nfrags - 1;
-+      if (n)
-+              memcpy(&ssi->frags[1], &gl->frags[1], n * sizeof(skb_frag_t));
-
-       /* get a reference to the last page, we don't own it */
--      get_page(gl->frags[gl->nfrags - 1].page);
-+      get_page(gl->frags[n].page);
- }
-
- /**
-@@ -1461,7 +1460,7 @@ struct sk_buff *cxgb4_pktgl_to_skb(const struct pkt_gl *gl,
-               __skb_put(skb, pull_len);
-               skb_copy_to_linear_data(skb, gl->va, pull_len);
-
--              copy_frags(skb, gl, pull_len);
-+              copy_frags(skb_shinfo(skb), gl, pull_len);
-               skb->len = gl->tot_len;
-               skb->data_len = skb->len - pull_len;
-               skb->truesize += skb->data_len;
-@@ -1480,7 +1479,7 @@ EXPORT_SYMBOL(cxgb4_pktgl_to_skb);
- static void t4_pktgl_free(const struct pkt_gl *gl)
- {
-       int n;
--      const struct page_frag *p;
-+      const skb_frag_t *p;
-
-       for (p = gl->frags, n = gl->nfrags - 1; n--; p++)
-               put_page(p->page);
-@@ -1524,7 +1523,7 @@ static void do_gro(struct sge_eth_rxq *rxq, const struct pkt_gl *gl,
-               return;
-       }
-
--      copy_frags(skb, gl, RX_PKT_PAD);
-+      copy_frags(skb_shinfo(skb), gl, RX_PKT_PAD);
-       skb->len = gl->tot_len - RX_PKT_PAD;
-       skb->data_len = skb->len;
-       skb->truesize += skb->data_len;
-@@ -1700,7 +1699,7 @@ static int process_responses(struct sge_rspq *q, int budget)
-               rmb();
-               rsp_type = RSPD_TYPE(rc->type_gen);
-               if (likely(rsp_type == RSP_TYPE_FLBUF)) {
--                      struct page_frag *fp;
-+                      skb_frag_t *fp;
-                       struct pkt_gl si;
-                       const struct rx_sw_desc *rsd;
-                       u32 len = ntohl(rc->pldbuflen_qid), bufsz, frags;
-@@ -1719,9 +1718,9 @@ static int process_responses(struct sge_rspq *q, int budget)
-                               rsd = &rxq->fl.sdesc[rxq->fl.cidx];
-                               bufsz = get_buf_size(rsd);
-                               fp->page = rsd->page;
--                              fp->offset = q->offset;
--                              fp->size = min(bufsz, len);
--                              len -= fp->size;
-+                              fp->page_offset = q->offset;
-+                              skb_frag_size_set(fp, min(bufsz, len));
-+                              len -= skb_frag_size(fp);
-                               if (!len)
-                                       break;
-                               unmap_rx_buf(q->adap, &rxq->fl);
-@@ -1733,16 +1732,16 @@ static int process_responses(struct sge_rspq *q, int budget)
-                        */
-                       dma_sync_single_for_cpu(q->adap->pdev_dev,
-                                               get_buf_addr(rsd),
--                                              fp->size, DMA_FROM_DEVICE);
-+                                              skb_frag_size(fp), DMA_FROM_DEVICE);
-
-                       si.va = page_address(si.frags[0].page) +
--                              si.frags[0].offset;
-+                              si.frags[0].page_offset;
-                       prefetch(si.va);
-
-                       si.nfrags = frags + 1;
-                       ret = q->handler(q, q->cur_desc, &si);
-                       if (likely(ret == 0))
--                              q->offset += ALIGN(fp->size, FL_ALIGN);
-+                              q->offset += ALIGN(skb_frag_size(fp), FL_ALIGN);
-                       else
-                               restore_rx_bufs(&si, &rxq->fl, frags);
-               } else if (likely(rsp_type == RSP_TYPE_CPL)) {
---
-1.7.1
-
diff --git a/backports/3.0.13_sles11_sp2/05-cxgb4-Add-build-support-for-kernel-3.1.patch b/backports/3.0.13_sles11_sp2/05-cxgb4-Add-build-support-for-kernel-3.1.patch
deleted file mode 100644 (file)
index a580f79..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-From e861ec83739c5c981a1ae96edb08062f73d52dc4 Mon Sep 17 00:00:00 2001
-From: Vipul Pandya <vipul@chelsio.com>
-Date: Mon, 7 May 2012 14:40:34 +0530
-Subject: [PATCH 2/2] cxgb4: Add build support for kernel 3.1
-
-Signed-off-by: Vipul Pandya <vipul@chelsio.com>
----
- drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c |    8 ++++----
- 1 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-index 4c8f42a..0b77fec 100644
---- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-@@ -32,6 +32,9 @@
-  * SOFTWARE.
-  */
-
-+#ifdef pr_fmt
-+#undef pr_fmt
-+#endif
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
- #include <linux/bitmap.h>
-@@ -41,7 +44,6 @@
- #include <linux/err.h>
- #include <linux/etherdevice.h>
- #include <linux/firmware.h>
--#include <linux/if.h>
- #include <linux/if_vlan.h>
- #include <linux/init.h>
- #include <linux/log2.h>
-@@ -1902,7 +1904,7 @@ static int set_rss_table(struct net_device *dev,
- }
-
- static int get_rxnfc(struct net_device *dev, struct ethtool_rxnfc *info,
--                   u32 *rules)
-+                   void *rules)
- {
-       const struct port_info *pi = netdev_priv(dev);
-
-@@ -3640,8 +3642,6 @@ static int __devinit init_one(struct pci_dev *pdev,
-               netdev->features |= netdev->hw_features | highdma;
-               netdev->vlan_features = netdev->features & VLAN_FEAT;
-
--              netdev->priv_flags |= IFF_UNICAST_FLT;
--
-               netdev->netdev_ops = &cxgb4_netdev_ops;
-               SET_ETHTOOL_OPS(netdev, &cxgb_ethtool_ops);
-       }
---
-1.7.1
-
diff --git a/backports/3.0.13_sles11_sp2/06-cxgb3-Reversing-do-vlan-cleanup.patch b/backports/3.0.13_sles11_sp2/06-cxgb3-Reversing-do-vlan-cleanup.patch
deleted file mode 100644 (file)
index 35251e7..0000000
+++ /dev/null
@@ -1,212 +0,0 @@
-From d6b1c6b1aaca4eaf89e0e0021bafa29af933063e Mon Sep 17 00:00:00 2001
-From: Vipul Pandya <vipul@chelsio.com>
-Date: Mon, 7 May 2012 15:50:15 +0530
-Subject: [PATCH 3/3] cxgb3: Reversing do vlan cleanup
-
-This patch is a reverse patch of the following upstream commit
-892ef5d85259e193505d553c10237fd5dc9a3d0d
-
-Signed-off-by: Vipul Pandya <vipul@chelsio.com>
----
- drivers/net/ethernet/chelsio/cxgb3/adapter.h       |    2 +
- drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c    |   51 ++++---------------
- drivers/net/ethernet/chelsio/cxgb3/cxgb3_offload.c |    9 ++-
- drivers/net/ethernet/chelsio/cxgb3/sge.c           |   35 +++++++++++--
- 4 files changed, 48 insertions(+), 49 deletions(-)
-
-diff --git a/drivers/net/ethernet/chelsio/cxgb3/adapter.h b/drivers/net/ethernet/chelsio/cxgb3/adapter.h
-index 8b395b5..7300de5 100644
---- a/drivers/net/ethernet/chelsio/cxgb3/adapter.h
-+++ b/drivers/net/ethernet/chelsio/cxgb3/adapter.h
-@@ -45,6 +45,7 @@
- #include "t3cdev.h"
- #include <asm/io.h>
-
-+struct vlan_group;
- struct adapter;
- struct sge_qset;
- struct port_info;
-@@ -65,6 +66,7 @@ struct iscsi_config {
-
- struct port_info {
-       struct adapter *adapter;
-+      struct vlan_group *vlan_grp;
-       struct sge_qset *qs;
-       u8 port_id;
-       u8 nqsets;
-diff --git a/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c b/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
-index 4d15c8f..d9ee262 100644
---- a/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
-+++ b/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
-@@ -2531,51 +2531,25 @@ static void t3_synchronize_rx(struct adapter *adap, const struct port_info *p)
-       }
- }
-
--static void cxgb_vlan_mode(struct net_device *dev, u32 features)
-+static void vlan_rx_register(struct net_device *dev, struct vlan_group *grp)
- {
-       struct port_info *pi = netdev_priv(dev);
-       struct adapter *adapter = pi->adapter;
-
--      if (adapter->params.rev > 0) {
--              t3_set_vlan_accel(adapter, 1 << pi->port_id,
--                                features & NETIF_F_HW_VLAN_RX);
--      } else {
-+      pi->vlan_grp = grp;
-+      if (adapter->params.rev > 0)
-+              t3_set_vlan_accel(adapter, 1 << pi->port_id, grp != NULL);
-+      else {
-               /* single control for all ports */
--              unsigned int i, have_vlans = features & NETIF_F_HW_VLAN_RX;
--
-+              unsigned int i, have_vlans = 0;
-               for_each_port(adapter, i)
--                      have_vlans |=
--                              adapter->port[i]->features & NETIF_F_HW_VLAN_RX;
-+                  have_vlans |= adap2pinfo(adapter, i)->vlan_grp != NULL;
-
-               t3_set_vlan_accel(adapter, 1, have_vlans);
-       }
-       t3_synchronize_rx(adapter, pi);
- }
-
--static u32 cxgb_fix_features(struct net_device *dev, u32 features)
--{
--      /*
--       * Since there is no support for separate rx/tx vlan accel
--       * enable/disable make sure tx flag is always in same state as rx.
--       */
--      if (features & NETIF_F_HW_VLAN_RX)
--              features |= NETIF_F_HW_VLAN_TX;
--      else
--              features &= ~NETIF_F_HW_VLAN_TX;
--
--      return features;
--}
--
--static int cxgb_set_features(struct net_device *dev, u32 features)
--{
--      u32 changed = dev->features ^ features;
--
--      if (changed & NETIF_F_HW_VLAN_RX)
--              cxgb_vlan_mode(dev, features);
--
--      return 0;
--}
--
- #ifdef CONFIG_NET_POLL_CONTROLLER
- static void cxgb_netpoll(struct net_device *dev)
- {
-@@ -3156,8 +3130,7 @@ static const struct net_device_ops cxgb_netdev_ops = {
-       .ndo_do_ioctl           = cxgb_ioctl,
-       .ndo_change_mtu         = cxgb_change_mtu,
-       .ndo_set_mac_address    = cxgb_set_mac_addr,
--      .ndo_fix_features       = cxgb_fix_features,
--      .ndo_set_features       = cxgb_set_features,
-+      .ndo_vlan_rx_register   = vlan_rx_register,
- #ifdef CONFIG_NET_POLL_CONTROLLER
-       .ndo_poll_controller    = cxgb_netpoll,
- #endif
-@@ -3289,8 +3262,9 @@ static int __devinit init_one(struct pci_dev *pdev,
-               netdev->mem_start = mmio_start;
-               netdev->mem_end = mmio_start + mmio_len - 1;
-               netdev->hw_features = NETIF_F_SG | NETIF_F_IP_CSUM |
--                      NETIF_F_TSO | NETIF_F_RXCSUM | NETIF_F_HW_VLAN_RX;
--              netdev->features |= netdev->hw_features | NETIF_F_HW_VLAN_TX;
-+                      NETIF_F_TSO | NETIF_F_RXCSUM;
-+              netdev->features |= netdev->hw_features |
-+                      NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX;
-               if (pci_using_dac)
-                       netdev->features |= NETIF_F_HIGHDMA;
-
-@@ -3354,9 +3328,6 @@ static int __devinit init_one(struct pci_dev *pdev,
-       err = sysfs_create_group(&adapter->port[0]->dev.kobj,
-                                &cxgb3_attr_group);
-
--      for_each_port(adapter, i)
--              cxgb_vlan_mode(adapter->port[i], adapter->port[i]->features);
--
-       print_port_info(adapter, ai);
-       return 0;
-
-diff --git a/drivers/net/ethernet/chelsio/cxgb3/cxgb3_offload.c b/drivers/net/ethernet/chelsio/cxgb3/cxgb3_offload.c
-index 90ff131..d7cd560 100644
---- a/drivers/net/ethernet/chelsio/cxgb3/cxgb3_offload.c
-+++ b/drivers/net/ethernet/chelsio/cxgb3/cxgb3_offload.c
-@@ -177,13 +177,16 @@ static struct net_device *get_iff_from_mac(struct adapter *adapter,
-       int i;
-
-       for_each_port(adapter, i) {
-+              struct vlan_group *grp;
-               struct net_device *dev = adapter->port[i];
-+              const struct port_info *p = netdev_priv(dev);
-
-               if (!memcmp(dev->dev_addr, mac, ETH_ALEN)) {
-                       if (vlan && vlan != VLAN_VID_MASK) {
--                              rcu_read_lock();
--                              dev = __vlan_find_dev_deep(dev, vlan);
--                              rcu_read_unlock();
-+                              grp = p->vlan_grp;
-+                              dev = NULL;
-+                              if (grp)
-+                                      dev = vlan_group_get_device(grp, vlan);
-                       } else if (netif_is_bond_slave(dev)) {
-                               while (dev->master)
-                                       dev = dev->master;
-diff --git a/drivers/net/ethernet/chelsio/cxgb3/sge.c b/drivers/net/ethernet/chelsio/cxgb3/sge.c
-index cfb60e1..a73523e 100644
---- a/drivers/net/ethernet/chelsio/cxgb3/sge.c
-+++ b/drivers/net/ethernet/chelsio/cxgb3/sge.c
-@@ -2028,11 +2028,28 @@ static void rx_eth(struct adapter *adap, struct sge_rspq *rq,
-               skb_checksum_none_assert(skb);
-       skb_record_rx_queue(skb, qs - &adap->sge.qs[pi->first_qset]);
-
--      if (p->vlan_valid) {
-+      if (unlikely(p->vlan_valid)) {
-+              struct vlan_group *grp = pi->vlan_grp;
-+
-               qs->port_stats[SGE_PSTAT_VLANEX]++;
--              __vlan_hwaccel_put_tag(skb, ntohs(p->vlan));
--      }
--      if (rq->polling) {
-+              if (likely(grp))
-+                      if (lro)
-+                              vlan_gro_receive(&qs->napi, grp,
-+                                               ntohs(p->vlan), skb);
-+                      else {
-+                              if (unlikely(pi->iscsic.flags)) {
-+                                      unsigned short vtag = ntohs(p->vlan) &
-+                                                              VLAN_VID_MASK;
-+                                      skb->dev = vlan_group_get_device(grp,
-+                                                                       vtag);
-+                                      cxgb3_process_iscsi_prov_pack(pi, skb);
-+                              }
-+                              __vlan_hwaccel_rx(skb, grp, ntohs(p->vlan),
-+                                                rq->polling);
-+                      }
-+              else
-+                      dev_kfree_skb_any(skb);
-+      } else if (rq->polling) {
-               if (lro)
-                       napi_gro_receive(&qs->napi, skb);
-               else {
-@@ -2130,8 +2147,14 @@ static void lro_add_page(struct adapter *adap, struct sge_qset *qs,
-
-       skb_record_rx_queue(skb, qs - &adap->sge.qs[pi->first_qset]);
-
--      if (cpl->vlan_valid)
--              __vlan_hwaccel_put_tag(skb, ntohs(cpl->vlan));
-+      if (unlikely(cpl->vlan_valid)) {
-+              struct vlan_group *grp = pi->vlan_grp;
-+
-+              if (likely(grp != NULL)) {
-+                      vlan_gro_frags(&qs->napi, grp, ntohs(cpl->vlan));
-+                      return;
-+              }
-+      }
-       napi_gro_frags(&qs->napi);
- }
-
---
-1.7.1
-
diff --git a/backports/3.0.13_sles11_sp2/07-netlink_dump_start_arg.patch b/backports/3.0.13_sles11_sp2/07-netlink_dump_start_arg.patch
deleted file mode 100644 (file)
index 442bf41..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-diff -rup a/drivers/infiniband/core/Makefile b/drivers/infiniband/core/Makefile
---- a/drivers/infiniband/core/Makefile 2012-05-18 13:16:13.000000000 -0400
-+++ b/drivers/infiniband/core/Makefile 2012-05-18 13:17:57.000000000 -0400
-@@ -30,3 +30,6 @@ ib_umad-y :=                 user_mad.o
- ib_ucm-y :=                   ucm.o
- ib_uverbs-y :=                        uverbs_main.o uverbs_cmd.o uverbs_marshall.o
-+
-+# sles11sp2 specific
-+CFLAGS_netlink.o += -DNEED_MIN_DUMP_ALLOC_ARG
diff --git a/backports/3.0.13_sles11_sp2/08-cxgb4-remove-netdev_alloc_page-and-use-__GFP_COLD.patch b/backports/3.0.13_sles11_sp2/08-cxgb4-remove-netdev_alloc_page-and-use-__GFP_COLD.patch
deleted file mode 100644 (file)
index 0769ce1..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-From 8c4674b2176db67f3a059d9dfb22377caff3a3be Mon Sep 17 00:00:00 2001
-From: Vipul Pandya <vipul@chelsio.com>
-Date: Wed, 30 May 2012 17:26:47 +0530
-Subject: [PATCH] cxgb4: remove netdev_alloc_page and use __GFP_COLD
-
-This patch is created from following upstream commit
-1f2149c1df50c8c712950872675f46e6e44629f0
-
-Signed-off-by: Vipul Pandya <vipul@chelsio.com>
----
- drivers/net/ethernet/chelsio/cxgb4/sge.c |    6 +++---
- 1 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/net/ethernet/chelsio/cxgb4/sge.c b/drivers/net/ethernet/chelsio/cxgb4/sge.c
-index c5e99fb..6a554a7 100644
---- a/drivers/net/ethernet/chelsio/cxgb4/sge.c
-+++ b/drivers/net/ethernet/chelsio/cxgb4/sge.c
-@@ -491,7 +491,7 @@ static unsigned int refill_fl(struct adapter *adap, struct sge_fl *q, int n,
-       __be64 *d = &q->desc[q->pidx];
-       struct rx_sw_desc *sd = &q->sdesc[q->pidx];
-
--      gfp |= __GFP_NOWARN;         /* failures are expected */
-+      gfp |= __GFP_NOWARN | __GFP_COLD;         /* failures are expected */
-
- #if FL_PG_ORDER > 0
-       /*
-@@ -528,7 +528,7 @@ static unsigned int refill_fl(struct adapter *adap, struct sge_fl *q, int n,
- #endif
-
-       while (n--) {
--              pg = __netdev_alloc_page(adap->port[0], gfp);
-+              pg = alloc_page(gfp);
-               if (unlikely(!pg)) {
-                       q->alloc_failed++;
-                       break;
-@@ -537,7 +537,7 @@ static unsigned int refill_fl(struct adapter *adap, struct sge_fl *q, int n,
-               mapping = dma_map_page(adap->pdev_dev, pg, 0, PAGE_SIZE,
-                                      PCI_DMA_FROMDEVICE);
-               if (unlikely(dma_mapping_error(adap->pdev_dev, mapping))) {
--                      netdev_free_page(adap->port[0], pg);
-+                      put_page(pg);
-                       goto out;
-               }
-               *d++ = cpu_to_be64(mapping);
---
-1.7.7
-
diff --git a/backports/3.0/01-pinned_to_locked_vm_to_3_1.patch b/backports/3.0/01-pinned_to_locked_vm_to_3_1.patch
deleted file mode 100644 (file)
index 5875c2b..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-Index: compat-rdma/drivers/infiniband/core/umem.c
-===================================================================
---- compat-rdma.orig/drivers/infiniband/core/umem.c
-+++ compat-rdma/drivers/infiniband/core/umem.c
-@@ -137,7 +137,7 @@ struct ib_umem *ib_umem_get(struct ib_uc
-       down_write(&current->mm->mmap_sem);
--      locked     = npages + current->mm->pinned_vm;
-+      locked     = npages + current->mm->locked_vm;
-       lock_limit = rlimit(RLIMIT_MEMLOCK) >> PAGE_SHIFT;
-       if ((locked > lock_limit) && !capable(CAP_IPC_LOCK)) {
-@@ -207,7 +207,7 @@ out:
-               __ib_umem_release(context->device, umem, 0);
-               kfree(umem);
-       } else
--              current->mm->pinned_vm = locked;
-+              current->mm->locked_vm = locked;
-       up_write(&current->mm->mmap_sem);
-       if (vma_list)
-@@ -223,7 +223,7 @@ static void ib_umem_account(struct work_
-       struct ib_umem *umem = container_of(work, struct ib_umem, work);
-       down_write(&umem->mm->mmap_sem);
--      umem->mm->pinned_vm -= umem->diff;
-+      umem->mm->locked_vm -= umem->diff;
-       up_write(&umem->mm->mmap_sem);
-       mmput(umem->mm);
-       kfree(umem);
-Index: compat-rdma/drivers/infiniband/hw/ipath/ipath_user_pages.c
-===================================================================
---- compat-rdma.orig/drivers/infiniband/hw/ipath/ipath_user_pages.c
-+++ compat-rdma/drivers/infiniband/hw/ipath/ipath_user_pages.c
-@@ -79,7 +79,7 @@ static int __ipath_get_user_pages(unsign
-                       goto bail_release;
-       }
--      current->mm->pinned_vm += num_pages;
-+      current->mm->locked_vm += num_pages;
-       ret = 0;
-       goto bail;
-@@ -178,7 +178,7 @@ void ipath_release_user_pages(struct pag
-       __ipath_release_user_pages(p, num_pages, 1);
--      current->mm->pinned_vm -= num_pages;
-+      current->mm->locked_vm -= num_pages;
-       up_write(&current->mm->mmap_sem);
- }
-@@ -195,7 +195,7 @@ static void user_pages_account(struct wo
-               container_of(_work, struct ipath_user_pages_work, work);
-       down_write(&work->mm->mmap_sem);
--      work->mm->pinned_vm -= work->num_pages;
-+      work->mm->locked_vm -= work->num_pages;
-       up_write(&work->mm->mmap_sem);
-       mmput(work->mm);
-       kfree(work);
-Index: compat-rdma/drivers/infiniband/hw/qib/qib_user_pages.c
-===================================================================
---- compat-rdma.orig/drivers/infiniband/hw/qib/qib_user_pages.c
-+++ compat-rdma/drivers/infiniband/hw/qib/qib_user_pages.c
-@@ -74,7 +74,7 @@ static int __qib_get_user_pages(unsigned
-                       goto bail_release;
-       }
--      current->mm->pinned_vm += num_pages;
-+      current->mm->locked_vm += num_pages;
-       ret = 0;
-       goto bail;
-@@ -151,7 +151,7 @@ void qib_release_user_pages(struct page
-       __qib_release_user_pages(p, num_pages, 1);
-       if (current->mm) {
--              current->mm->pinned_vm -= num_pages;
-+              current->mm->locked_vm -= num_pages;
-               up_write(&current->mm->mmap_sem);
-       }
- }
diff --git a/backports/3.0/02-remove-SKB-paged-frag-API.patch b/backports/3.0/02-remove-SKB-paged-frag-API.patch
deleted file mode 100644 (file)
index 1c44fc4..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-Index: compat-rdma/drivers/net/ethernet/mellanox/mlx4/en_rx.c
-===================================================================
---- compat-rdma.orig/drivers/net/ethernet/mellanox/mlx4/en_rx.c        2012-01-09 16:15:04.000000000 +0200
-+++ compat-rdma/drivers/net/ethernet/mellanox/mlx4/en_rx.c     2012-01-23 11:52:39.899175000 +0200
-@@ -44,7 +44,7 @@
- static int mlx4_en_alloc_frag(struct mlx4_en_priv *priv,
-                             struct mlx4_en_rx_desc *rx_desc,
--                            struct page_frag *skb_frags,
-+                            struct skb_frag_struct *skb_frags,
-                             struct mlx4_en_rx_alloc *ring_alloc,
-                             int i)
- {
-@@ -61,7 +61,7 @@ static int mlx4_en_alloc_frag(struct mlx
-                       return -ENOMEM;
-               skb_frags[i].page = page_alloc->page;
--              skb_frags[i].offset = page_alloc->offset;
-+              skb_frags[i].page_offset = page_alloc->offset;
-               page_alloc->page = page;
-               page_alloc->offset = frag_info->frag_align;
-       } else {
-@@ -69,11 +69,11 @@ static int mlx4_en_alloc_frag(struct mlx
-               get_page(page);
-               skb_frags[i].page = page;
--              skb_frags[i].offset = page_alloc->offset;
-+              skb_frags[i].page_offset = page_alloc->offset;
-               page_alloc->offset += frag_info->frag_stride;
-       }
-       dma = pci_map_single(mdev->pdev, page_address(skb_frags[i].page) +
--                           skb_frags[i].offset, frag_info->frag_size,
-+                           skb_frags[i].page_offset, frag_info->frag_size,
-                            PCI_DMA_FROMDEVICE);
-       rx_desc->data[i].addr = cpu_to_be64(dma);
-       return 0;
-@@ -157,8 +157,8 @@ static int mlx4_en_prepare_rx_desc(struc
-                                  struct mlx4_en_rx_ring *ring, int index)
- {
-       struct mlx4_en_rx_desc *rx_desc = ring->buf + (index * ring->stride);
--      struct page_frag *skb_frags = ring->rx_info +
--                                    (index << priv->log_rx_info);
-+      struct skb_frag_struct *skb_frags = ring->rx_info +
-+                                          (index << priv->log_rx_info);
-       int i;
-       for (i = 0; i < priv->num_frags; i++)
-@@ -183,7 +183,7 @@ static void mlx4_en_free_rx_desc(struct
-                                int index)
- {
-       struct mlx4_en_dev *mdev = priv->mdev;
--      struct page_frag *skb_frags;
-+      struct skb_frag_struct *skb_frags;
-       struct mlx4_en_rx_desc *rx_desc = ring->buf + (index << ring->log_stride);
-       dma_addr_t dma;
-       int nr;
-@@ -194,7 +194,7 @@ static void mlx4_en_free_rx_desc(struct
-               dma = be64_to_cpu(rx_desc->data[nr].addr);
-               en_dbg(DRV, priv, "Unmapping buffer at dma:0x%llx\n", (u64) dma);
--              pci_unmap_single(mdev->pdev, dma, skb_frags[nr].size,
-+              pci_unmap_single(mdev->pdev, dma, skb_frag_size(&skb_frags[nr]),
-                                PCI_DMA_FROMDEVICE);
-               put_page(skb_frags[nr].page);
-       }
-@@ -403,7 +403,7 @@ void mlx4_en_deactivate_rx_ring(struct m
- /* Unmap a completed descriptor and free unused pages */
- static int mlx4_en_complete_rx_desc(struct mlx4_en_priv *priv,
-                                   struct mlx4_en_rx_desc *rx_desc,
--                                  struct page_frag *skb_frags,
-+                                  struct skb_frag_struct *skb_frags,
-                                   struct sk_buff *skb,
-                                   struct mlx4_en_rx_alloc *page_alloc,
-                                   int length)
-@@ -421,9 +421,9 @@ static int mlx4_en_complete_rx_desc(stru
-                       break;
-               /* Save page reference in skb */
--              __skb_frag_set_page(&skb_frags_rx[nr], skb_frags[nr].page);
--              skb_frag_size_set(&skb_frags_rx[nr], skb_frags[nr].size);
--              skb_frags_rx[nr].page_offset = skb_frags[nr].offset;
-+              skb_frags_rx[nr].page = skb_frags[nr].page;
-+              skb_frag_size_set(&skb_frags_rx[nr], skb_frag_size(&skb_frags[nr]));
-+              skb_frags_rx[nr].page_offset = skb_frags[nr].page_offset;
-               skb->truesize += frag_info->frag_stride;
-               dma = be64_to_cpu(rx_desc->data[nr].addr);
-@@ -446,7 +446,7 @@ fail:
-        * the descriptor) of this packet; remaining fragments are reused... */
-       while (nr > 0) {
-               nr--;
--              __skb_frag_unref(&skb_frags_rx[nr]);
-+              put_page(skb_frags_rx[nr].page);
-       }
-       return 0;
- }
-@@ -454,7 +454,7 @@ fail:
- static struct sk_buff *mlx4_en_rx_skb(struct mlx4_en_priv *priv,
-                                     struct mlx4_en_rx_desc *rx_desc,
--                                    struct page_frag *skb_frags,
-+                                    struct skb_frag_struct *skb_frags,
-                                     struct mlx4_en_rx_alloc *page_alloc,
-                                     unsigned int length)
- {
-@@ -475,7 +475,7 @@ static struct sk_buff *mlx4_en_rx_skb(st
-       /* Get pointer to first fragment so we could copy the headers into the
-        * (linear part of the) skb */
--      va = page_address(skb_frags[0].page) + skb_frags[0].offset;
-+      va = page_address(skb_frags[0].page) + skb_frags[0].page_offset;
-       if (length <= SMALL_PACKET_SIZE) {
-               /* We are copying all relevant data to the skb - temporarily
-@@ -533,7 +533,7 @@ int mlx4_en_process_rx_cq(struct net_dev
-       struct mlx4_en_priv *priv = netdev_priv(dev);
-       struct mlx4_cqe *cqe;
-       struct mlx4_en_rx_ring *ring = &priv->rx_ring[cq->ring];
--      struct page_frag *skb_frags;
-+      struct skb_frag_struct *skb_frags;
-       struct mlx4_en_rx_desc *rx_desc;
-       struct sk_buff *skb;
-       int index;
diff --git a/backports/3.0/03-remove-attr_is_visible.patch b/backports/3.0/03-remove-attr_is_visible.patch
deleted file mode 100644 (file)
index c05ace7..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-Index: compat-rdma/drivers/infiniband/ulp/iser/iscsi_iser.c
-===================================================================
---- compat-rdma.orig/drivers/infiniband/ulp/iser/iscsi_iser.c
-+++ compat-rdma/drivers/infiniband/ulp/iser/iscsi_iser.c
-@@ -719,7 +719,9 @@ static struct iscsi_transport iscsi_iser
-       .create_conn            = iscsi_iser_conn_create,
-       .bind_conn              = iscsi_iser_conn_bind,
-       .destroy_conn           = iscsi_iser_conn_destroy,
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(3,2,0))
-       .attr_is_visible        = iser_attr_is_visible,
-+#endif
-       .set_param              = iscsi_iser_set_param,
-       .get_conn_param         = iscsi_conn_get_param,
-       .get_ep_param           = iscsi_iser_get_ep_param,
diff --git a/backports/3.0/04-cxgb4-Reversing-convert-to-SKB-paged-frag-API.patch b/backports/3.0/04-cxgb4-Reversing-convert-to-SKB-paged-frag-API.patch
deleted file mode 100644 (file)
index 11a0fc1..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-From 5ea32823a4937cd918a823bd0dfbbb592e8b9e6e Mon Sep 17 00:00:00 2001
-From: Vipul Pandya <vipul@chelsio.com>
-Date: Mon, 7 May 2012 14:17:55 +0530
-Subject: [PATCH 1/2] cxgb4: Reversing convert to SKB paged frag API.
-
-This patch is a reverse patch of upstream commit
-e91b0f2491f7a7b21c4e562df09f3dbe551f0fe2
-
-Signed-off-by: Vipul Pandya <vipul@chelsio.com>
----
- drivers/net/ethernet/chelsio/cxgb4/cxgb4.h |    2 +-
- drivers/net/ethernet/chelsio/cxgb4/sge.c   |   45 +++++++++++++--------------
- 2 files changed, 23 insertions(+), 24 deletions(-)
-
-diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h b/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
-index 0fe1885..223a7f7 100644
---- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
-+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
-@@ -326,7 +326,7 @@ struct sge_fl {                     /* SGE free-buffer queue state */
-
- /* A packet gather list */
- struct pkt_gl {
--      struct page_frag frags[MAX_SKB_FRAGS];
-+      skb_frag_t frags[MAX_SKB_FRAGS];
-       void *va;                         /* virtual address of first byte */
-       unsigned int nfrags;              /* # of fragments */
-       unsigned int tot_len;             /* total length of fragments */
-diff --git a/drivers/net/ethernet/chelsio/cxgb4/sge.c b/drivers/net/ethernet/chelsio/cxgb4/sge.c
-index 140254c..c5e99fb 100644
---- a/drivers/net/ethernet/chelsio/cxgb4/sge.c
-+++ b/drivers/net/ethernet/chelsio/cxgb4/sge.c
-@@ -216,8 +216,8 @@ static int map_skb(struct device *dev, const struct sk_buff *skb,
-       end = &si->frags[si->nr_frags];
-
-       for (fp = si->frags; fp < end; fp++) {
--              *++addr = skb_frag_dma_map(dev, fp, 0, skb_frag_size(fp),
--                                         DMA_TO_DEVICE);
-+              *++addr = dma_map_page(dev, fp->page, fp->page_offset,
-+                                     skb_frag_size(fp), DMA_TO_DEVICE);
-               if (dma_mapping_error(dev, *addr))
-                       goto unwind;
-       }
-@@ -1410,23 +1410,22 @@ int cxgb4_ofld_send(struct net_device *dev, struct sk_buff *skb)
- }
- EXPORT_SYMBOL(cxgb4_ofld_send);
-
--static inline void copy_frags(struct sk_buff *skb,
-+static inline void copy_frags(struct skb_shared_info *ssi,
-                             const struct pkt_gl *gl, unsigned int offset)
- {
--      int i;
-+      unsigned int n;
-
-       /* usually there's just one frag */
--      __skb_fill_page_desc(skb, 0, gl->frags[0].page,
--                           gl->frags[0].offset + offset,
--                           gl->frags[0].size - offset);
--      skb_shinfo(skb)->nr_frags = gl->nfrags;
--      for (i = 1; i < gl->nfrags; i++)
--              __skb_fill_page_desc(skb, i, gl->frags[i].page,
--                                   gl->frags[i].offset,
--                                   gl->frags[i].size);
-+      ssi->frags[0].page = gl->frags[0].page;
-+      ssi->frags[0].page_offset = gl->frags[0].page_offset + offset;
-+      skb_frag_size_set(&ssi->frags[0], skb_frag_size(&gl->frags[0]) - offset);
-+      ssi->nr_frags = gl->nfrags;
-+      n = gl->nfrags - 1;
-+      if (n)
-+              memcpy(&ssi->frags[1], &gl->frags[1], n * sizeof(skb_frag_t));
-
-       /* get a reference to the last page, we don't own it */
--      get_page(gl->frags[gl->nfrags - 1].page);
-+      get_page(gl->frags[n].page);
- }
-
- /**
-@@ -1461,7 +1460,7 @@ struct sk_buff *cxgb4_pktgl_to_skb(const struct pkt_gl *gl,
-               __skb_put(skb, pull_len);
-               skb_copy_to_linear_data(skb, gl->va, pull_len);
-
--              copy_frags(skb, gl, pull_len);
-+              copy_frags(skb_shinfo(skb), gl, pull_len);
-               skb->len = gl->tot_len;
-               skb->data_len = skb->len - pull_len;
-               skb->truesize += skb->data_len;
-@@ -1480,7 +1479,7 @@ EXPORT_SYMBOL(cxgb4_pktgl_to_skb);
- static void t4_pktgl_free(const struct pkt_gl *gl)
- {
-       int n;
--      const struct page_frag *p;
-+      const skb_frag_t *p;
-
-       for (p = gl->frags, n = gl->nfrags - 1; n--; p++)
-               put_page(p->page);
-@@ -1524,7 +1523,7 @@ static void do_gro(struct sge_eth_rxq *rxq, const struct pkt_gl *gl,
-               return;
-       }
-
--      copy_frags(skb, gl, RX_PKT_PAD);
-+      copy_frags(skb_shinfo(skb), gl, RX_PKT_PAD);
-       skb->len = gl->tot_len - RX_PKT_PAD;
-       skb->data_len = skb->len;
-       skb->truesize += skb->data_len;
-@@ -1700,7 +1699,7 @@ static int process_responses(struct sge_rspq *q, int budget)
-               rmb();
-               rsp_type = RSPD_TYPE(rc->type_gen);
-               if (likely(rsp_type == RSP_TYPE_FLBUF)) {
--                      struct page_frag *fp;
-+                      skb_frag_t *fp;
-                       struct pkt_gl si;
-                       const struct rx_sw_desc *rsd;
-                       u32 len = ntohl(rc->pldbuflen_qid), bufsz, frags;
-@@ -1719,9 +1718,9 @@ static int process_responses(struct sge_rspq *q, int budget)
-                               rsd = &rxq->fl.sdesc[rxq->fl.cidx];
-                               bufsz = get_buf_size(rsd);
-                               fp->page = rsd->page;
--                              fp->offset = q->offset;
--                              fp->size = min(bufsz, len);
--                              len -= fp->size;
-+                              fp->page_offset = q->offset;
-+                              skb_frag_size_set(fp, min(bufsz, len));
-+                              len -= skb_frag_size(fp);
-                               if (!len)
-                                       break;
-                               unmap_rx_buf(q->adap, &rxq->fl);
-@@ -1733,16 +1732,16 @@ static int process_responses(struct sge_rspq *q, int budget)
-                        */
-                       dma_sync_single_for_cpu(q->adap->pdev_dev,
-                                               get_buf_addr(rsd),
--                                              fp->size, DMA_FROM_DEVICE);
-+                                              skb_frag_size(fp), DMA_FROM_DEVICE);
-
-                       si.va = page_address(si.frags[0].page) +
--                              si.frags[0].offset;
-+                              si.frags[0].page_offset;
-                       prefetch(si.va);
-
-                       si.nfrags = frags + 1;
-                       ret = q->handler(q, q->cur_desc, &si);
-                       if (likely(ret == 0))
--                              q->offset += ALIGN(fp->size, FL_ALIGN);
-+                              q->offset += ALIGN(skb_frag_size(fp), FL_ALIGN);
-                       else
-                               restore_rx_bufs(&si, &rxq->fl, frags);
-               } else if (likely(rsp_type == RSP_TYPE_CPL)) {
---
-1.7.1
-
diff --git a/backports/3.0/05-cxgb4-Add-build-support-for-kernel-3.1.patch b/backports/3.0/05-cxgb4-Add-build-support-for-kernel-3.1.patch
deleted file mode 100644 (file)
index a580f79..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-From e861ec83739c5c981a1ae96edb08062f73d52dc4 Mon Sep 17 00:00:00 2001
-From: Vipul Pandya <vipul@chelsio.com>
-Date: Mon, 7 May 2012 14:40:34 +0530
-Subject: [PATCH 2/2] cxgb4: Add build support for kernel 3.1
-
-Signed-off-by: Vipul Pandya <vipul@chelsio.com>
----
- drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c |    8 ++++----
- 1 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-index 4c8f42a..0b77fec 100644
---- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-@@ -32,6 +32,9 @@
-  * SOFTWARE.
-  */
-
-+#ifdef pr_fmt
-+#undef pr_fmt
-+#endif
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
- #include <linux/bitmap.h>
-@@ -41,7 +44,6 @@
- #include <linux/err.h>
- #include <linux/etherdevice.h>
- #include <linux/firmware.h>
--#include <linux/if.h>
- #include <linux/if_vlan.h>
- #include <linux/init.h>
- #include <linux/log2.h>
-@@ -1902,7 +1904,7 @@ static int set_rss_table(struct net_device *dev,
- }
-
- static int get_rxnfc(struct net_device *dev, struct ethtool_rxnfc *info,
--                   u32 *rules)
-+                   void *rules)
- {
-       const struct port_info *pi = netdev_priv(dev);
-
-@@ -3640,8 +3642,6 @@ static int __devinit init_one(struct pci_dev *pdev,
-               netdev->features |= netdev->hw_features | highdma;
-               netdev->vlan_features = netdev->features & VLAN_FEAT;
-
--              netdev->priv_flags |= IFF_UNICAST_FLT;
--
-               netdev->netdev_ops = &cxgb4_netdev_ops;
-               SET_ETHTOOL_OPS(netdev, &cxgb_ethtool_ops);
-       }
---
-1.7.1
-
diff --git a/backports/3.0/06-cxgb3-Reversing-do-vlan-cleanup.patch b/backports/3.0/06-cxgb3-Reversing-do-vlan-cleanup.patch
deleted file mode 100644 (file)
index 35251e7..0000000
+++ /dev/null
@@ -1,212 +0,0 @@
-From d6b1c6b1aaca4eaf89e0e0021bafa29af933063e Mon Sep 17 00:00:00 2001
-From: Vipul Pandya <vipul@chelsio.com>
-Date: Mon, 7 May 2012 15:50:15 +0530
-Subject: [PATCH 3/3] cxgb3: Reversing do vlan cleanup
-
-This patch is a reverse patch of the following upstream commit
-892ef5d85259e193505d553c10237fd5dc9a3d0d
-
-Signed-off-by: Vipul Pandya <vipul@chelsio.com>
----
- drivers/net/ethernet/chelsio/cxgb3/adapter.h       |    2 +
- drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c    |   51 ++++---------------
- drivers/net/ethernet/chelsio/cxgb3/cxgb3_offload.c |    9 ++-
- drivers/net/ethernet/chelsio/cxgb3/sge.c           |   35 +++++++++++--
- 4 files changed, 48 insertions(+), 49 deletions(-)
-
-diff --git a/drivers/net/ethernet/chelsio/cxgb3/adapter.h b/drivers/net/ethernet/chelsio/cxgb3/adapter.h
-index 8b395b5..7300de5 100644
---- a/drivers/net/ethernet/chelsio/cxgb3/adapter.h
-+++ b/drivers/net/ethernet/chelsio/cxgb3/adapter.h
-@@ -45,6 +45,7 @@
- #include "t3cdev.h"
- #include <asm/io.h>
-
-+struct vlan_group;
- struct adapter;
- struct sge_qset;
- struct port_info;
-@@ -65,6 +66,7 @@ struct iscsi_config {
-
- struct port_info {
-       struct adapter *adapter;
-+      struct vlan_group *vlan_grp;
-       struct sge_qset *qs;
-       u8 port_id;
-       u8 nqsets;
-diff --git a/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c b/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
-index 4d15c8f..d9ee262 100644
---- a/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
-+++ b/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
-@@ -2531,51 +2531,25 @@ static void t3_synchronize_rx(struct adapter *adap, const struct port_info *p)
-       }
- }
-
--static void cxgb_vlan_mode(struct net_device *dev, u32 features)
-+static void vlan_rx_register(struct net_device *dev, struct vlan_group *grp)
- {
-       struct port_info *pi = netdev_priv(dev);
-       struct adapter *adapter = pi->adapter;
-
--      if (adapter->params.rev > 0) {
--              t3_set_vlan_accel(adapter, 1 << pi->port_id,
--                                features & NETIF_F_HW_VLAN_RX);
--      } else {
-+      pi->vlan_grp = grp;
-+      if (adapter->params.rev > 0)
-+              t3_set_vlan_accel(adapter, 1 << pi->port_id, grp != NULL);
-+      else {
-               /* single control for all ports */
--              unsigned int i, have_vlans = features & NETIF_F_HW_VLAN_RX;
--
-+              unsigned int i, have_vlans = 0;
-               for_each_port(adapter, i)
--                      have_vlans |=
--                              adapter->port[i]->features & NETIF_F_HW_VLAN_RX;
-+                  have_vlans |= adap2pinfo(adapter, i)->vlan_grp != NULL;
-
-               t3_set_vlan_accel(adapter, 1, have_vlans);
-       }
-       t3_synchronize_rx(adapter, pi);
- }
-
--static u32 cxgb_fix_features(struct net_device *dev, u32 features)
--{
--      /*
--       * Since there is no support for separate rx/tx vlan accel
--       * enable/disable make sure tx flag is always in same state as rx.
--       */
--      if (features & NETIF_F_HW_VLAN_RX)
--              features |= NETIF_F_HW_VLAN_TX;
--      else
--              features &= ~NETIF_F_HW_VLAN_TX;
--
--      return features;
--}
--
--static int cxgb_set_features(struct net_device *dev, u32 features)
--{
--      u32 changed = dev->features ^ features;
--
--      if (changed & NETIF_F_HW_VLAN_RX)
--              cxgb_vlan_mode(dev, features);
--
--      return 0;
--}
--
- #ifdef CONFIG_NET_POLL_CONTROLLER
- static void cxgb_netpoll(struct net_device *dev)
- {
-@@ -3156,8 +3130,7 @@ static const struct net_device_ops cxgb_netdev_ops = {
-       .ndo_do_ioctl           = cxgb_ioctl,
-       .ndo_change_mtu         = cxgb_change_mtu,
-       .ndo_set_mac_address    = cxgb_set_mac_addr,
--      .ndo_fix_features       = cxgb_fix_features,
--      .ndo_set_features       = cxgb_set_features,
-+      .ndo_vlan_rx_register   = vlan_rx_register,
- #ifdef CONFIG_NET_POLL_CONTROLLER
-       .ndo_poll_controller    = cxgb_netpoll,
- #endif
-@@ -3289,8 +3262,9 @@ static int __devinit init_one(struct pci_dev *pdev,
-               netdev->mem_start = mmio_start;
-               netdev->mem_end = mmio_start + mmio_len - 1;
-               netdev->hw_features = NETIF_F_SG | NETIF_F_IP_CSUM |
--                      NETIF_F_TSO | NETIF_F_RXCSUM | NETIF_F_HW_VLAN_RX;
--              netdev->features |= netdev->hw_features | NETIF_F_HW_VLAN_TX;
-+                      NETIF_F_TSO | NETIF_F_RXCSUM;
-+              netdev->features |= netdev->hw_features |
-+                      NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX;
-               if (pci_using_dac)
-                       netdev->features |= NETIF_F_HIGHDMA;
-
-@@ -3354,9 +3328,6 @@ static int __devinit init_one(struct pci_dev *pdev,
-       err = sysfs_create_group(&adapter->port[0]->dev.kobj,
-                                &cxgb3_attr_group);
-
--      for_each_port(adapter, i)
--              cxgb_vlan_mode(adapter->port[i], adapter->port[i]->features);
--
-       print_port_info(adapter, ai);
-       return 0;
-
-diff --git a/drivers/net/ethernet/chelsio/cxgb3/cxgb3_offload.c b/drivers/net/ethernet/chelsio/cxgb3/cxgb3_offload.c
-index 90ff131..d7cd560 100644
---- a/drivers/net/ethernet/chelsio/cxgb3/cxgb3_offload.c
-+++ b/drivers/net/ethernet/chelsio/cxgb3/cxgb3_offload.c
-@@ -177,13 +177,16 @@ static struct net_device *get_iff_from_mac(struct adapter *adapter,
-       int i;
-
-       for_each_port(adapter, i) {
-+              struct vlan_group *grp;
-               struct net_device *dev = adapter->port[i];
-+              const struct port_info *p = netdev_priv(dev);
-
-               if (!memcmp(dev->dev_addr, mac, ETH_ALEN)) {
-                       if (vlan && vlan != VLAN_VID_MASK) {
--                              rcu_read_lock();
--                              dev = __vlan_find_dev_deep(dev, vlan);
--                              rcu_read_unlock();
-+                              grp = p->vlan_grp;
-+                              dev = NULL;
-+                              if (grp)
-+                                      dev = vlan_group_get_device(grp, vlan);
-                       } else if (netif_is_bond_slave(dev)) {
-                               while (dev->master)
-                                       dev = dev->master;
-diff --git a/drivers/net/ethernet/chelsio/cxgb3/sge.c b/drivers/net/ethernet/chelsio/cxgb3/sge.c
-index cfb60e1..a73523e 100644
---- a/drivers/net/ethernet/chelsio/cxgb3/sge.c
-+++ b/drivers/net/ethernet/chelsio/cxgb3/sge.c
-@@ -2028,11 +2028,28 @@ static void rx_eth(struct adapter *adap, struct sge_rspq *rq,
-               skb_checksum_none_assert(skb);
-       skb_record_rx_queue(skb, qs - &adap->sge.qs[pi->first_qset]);
-
--      if (p->vlan_valid) {
-+      if (unlikely(p->vlan_valid)) {
-+              struct vlan_group *grp = pi->vlan_grp;
-+
-               qs->port_stats[SGE_PSTAT_VLANEX]++;
--              __vlan_hwaccel_put_tag(skb, ntohs(p->vlan));
--      }
--      if (rq->polling) {
-+              if (likely(grp))
-+                      if (lro)
-+                              vlan_gro_receive(&qs->napi, grp,
-+                                               ntohs(p->vlan), skb);
-+                      else {
-+                              if (unlikely(pi->iscsic.flags)) {
-+                                      unsigned short vtag = ntohs(p->vlan) &
-+                                                              VLAN_VID_MASK;
-+                                      skb->dev = vlan_group_get_device(grp,
-+                                                                       vtag);
-+                                      cxgb3_process_iscsi_prov_pack(pi, skb);
-+                              }
-+                              __vlan_hwaccel_rx(skb, grp, ntohs(p->vlan),
-+                                                rq->polling);
-+                      }
-+              else
-+                      dev_kfree_skb_any(skb);
-+      } else if (rq->polling) {
-               if (lro)
-                       napi_gro_receive(&qs->napi, skb);
-               else {
-@@ -2130,8 +2147,14 @@ static void lro_add_page(struct adapter *adap, struct sge_qset *qs,
-
-       skb_record_rx_queue(skb, qs - &adap->sge.qs[pi->first_qset]);
-
--      if (cpl->vlan_valid)
--              __vlan_hwaccel_put_tag(skb, ntohs(cpl->vlan));
-+      if (unlikely(cpl->vlan_valid)) {
-+              struct vlan_group *grp = pi->vlan_grp;
-+
-+              if (likely(grp != NULL)) {
-+                      vlan_gro_frags(&qs->napi, grp, ntohs(cpl->vlan));
-+                      return;
-+              }
-+      }
-       napi_gro_frags(&qs->napi);
- }
-
---
-1.7.1
-
diff --git a/backports/3.1/01-pinned_to_locked_vm_to_3_1.patch b/backports/3.1/01-pinned_to_locked_vm_to_3_1.patch
deleted file mode 100644 (file)
index 5875c2b..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-Index: compat-rdma/drivers/infiniband/core/umem.c
-===================================================================
---- compat-rdma.orig/drivers/infiniband/core/umem.c
-+++ compat-rdma/drivers/infiniband/core/umem.c
-@@ -137,7 +137,7 @@ struct ib_umem *ib_umem_get(struct ib_uc
-       down_write(&current->mm->mmap_sem);
--      locked     = npages + current->mm->pinned_vm;
-+      locked     = npages + current->mm->locked_vm;
-       lock_limit = rlimit(RLIMIT_MEMLOCK) >> PAGE_SHIFT;
-       if ((locked > lock_limit) && !capable(CAP_IPC_LOCK)) {
-@@ -207,7 +207,7 @@ out:
-               __ib_umem_release(context->device, umem, 0);
-               kfree(umem);
-       } else
--              current->mm->pinned_vm = locked;
-+              current->mm->locked_vm = locked;
-       up_write(&current->mm->mmap_sem);
-       if (vma_list)
-@@ -223,7 +223,7 @@ static void ib_umem_account(struct work_
-       struct ib_umem *umem = container_of(work, struct ib_umem, work);
-       down_write(&umem->mm->mmap_sem);
--      umem->mm->pinned_vm -= umem->diff;
-+      umem->mm->locked_vm -= umem->diff;
-       up_write(&umem->mm->mmap_sem);
-       mmput(umem->mm);
-       kfree(umem);
-Index: compat-rdma/drivers/infiniband/hw/ipath/ipath_user_pages.c
-===================================================================
---- compat-rdma.orig/drivers/infiniband/hw/ipath/ipath_user_pages.c
-+++ compat-rdma/drivers/infiniband/hw/ipath/ipath_user_pages.c
-@@ -79,7 +79,7 @@ static int __ipath_get_user_pages(unsign
-                       goto bail_release;
-       }
--      current->mm->pinned_vm += num_pages;
-+      current->mm->locked_vm += num_pages;
-       ret = 0;
-       goto bail;
-@@ -178,7 +178,7 @@ void ipath_release_user_pages(struct pag
-       __ipath_release_user_pages(p, num_pages, 1);
--      current->mm->pinned_vm -= num_pages;
-+      current->mm->locked_vm -= num_pages;
-       up_write(&current->mm->mmap_sem);
- }
-@@ -195,7 +195,7 @@ static void user_pages_account(struct wo
-               container_of(_work, struct ipath_user_pages_work, work);
-       down_write(&work->mm->mmap_sem);
--      work->mm->pinned_vm -= work->num_pages;
-+      work->mm->locked_vm -= work->num_pages;
-       up_write(&work->mm->mmap_sem);
-       mmput(work->mm);
-       kfree(work);
-Index: compat-rdma/drivers/infiniband/hw/qib/qib_user_pages.c
-===================================================================
---- compat-rdma.orig/drivers/infiniband/hw/qib/qib_user_pages.c
-+++ compat-rdma/drivers/infiniband/hw/qib/qib_user_pages.c
-@@ -74,7 +74,7 @@ static int __qib_get_user_pages(unsigned
-                       goto bail_release;
-       }
--      current->mm->pinned_vm += num_pages;
-+      current->mm->locked_vm += num_pages;
-       ret = 0;
-       goto bail;
-@@ -151,7 +151,7 @@ void qib_release_user_pages(struct page
-       __qib_release_user_pages(p, num_pages, 1);
-       if (current->mm) {
--              current->mm->pinned_vm -= num_pages;
-+              current->mm->locked_vm -= num_pages;
-               up_write(&current->mm->mmap_sem);
-       }
- }
diff --git a/backports/3.1/02-remove-SKB-paged-frag-API.patch b/backports/3.1/02-remove-SKB-paged-frag-API.patch
deleted file mode 100644 (file)
index 1c44fc4..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-Index: compat-rdma/drivers/net/ethernet/mellanox/mlx4/en_rx.c
-===================================================================
---- compat-rdma.orig/drivers/net/ethernet/mellanox/mlx4/en_rx.c        2012-01-09 16:15:04.000000000 +0200
-+++ compat-rdma/drivers/net/ethernet/mellanox/mlx4/en_rx.c     2012-01-23 11:52:39.899175000 +0200
-@@ -44,7 +44,7 @@
- static int mlx4_en_alloc_frag(struct mlx4_en_priv *priv,
-                             struct mlx4_en_rx_desc *rx_desc,
--                            struct page_frag *skb_frags,
-+                            struct skb_frag_struct *skb_frags,
-                             struct mlx4_en_rx_alloc *ring_alloc,
-                             int i)
- {
-@@ -61,7 +61,7 @@ static int mlx4_en_alloc_frag(struct mlx
-                       return -ENOMEM;
-               skb_frags[i].page = page_alloc->page;
--              skb_frags[i].offset = page_alloc->offset;
-+              skb_frags[i].page_offset = page_alloc->offset;
-               page_alloc->page = page;
-               page_alloc->offset = frag_info->frag_align;
-       } else {
-@@ -69,11 +69,11 @@ static int mlx4_en_alloc_frag(struct mlx
-               get_page(page);
-               skb_frags[i].page = page;
--              skb_frags[i].offset = page_alloc->offset;
-+              skb_frags[i].page_offset = page_alloc->offset;
-               page_alloc->offset += frag_info->frag_stride;
-       }
-       dma = pci_map_single(mdev->pdev, page_address(skb_frags[i].page) +
--                           skb_frags[i].offset, frag_info->frag_size,
-+                           skb_frags[i].page_offset, frag_info->frag_size,
-                            PCI_DMA_FROMDEVICE);
-       rx_desc->data[i].addr = cpu_to_be64(dma);
-       return 0;
-@@ -157,8 +157,8 @@ static int mlx4_en_prepare_rx_desc(struc
-                                  struct mlx4_en_rx_ring *ring, int index)
- {
-       struct mlx4_en_rx_desc *rx_desc = ring->buf + (index * ring->stride);
--      struct page_frag *skb_frags = ring->rx_info +
--                                    (index << priv->log_rx_info);
-+      struct skb_frag_struct *skb_frags = ring->rx_info +
-+                                          (index << priv->log_rx_info);
-       int i;
-       for (i = 0; i < priv->num_frags; i++)
-@@ -183,7 +183,7 @@ static void mlx4_en_free_rx_desc(struct
-                                int index)
- {
-       struct mlx4_en_dev *mdev = priv->mdev;
--      struct page_frag *skb_frags;
-+      struct skb_frag_struct *skb_frags;
-       struct mlx4_en_rx_desc *rx_desc = ring->buf + (index << ring->log_stride);
-       dma_addr_t dma;
-       int nr;
-@@ -194,7 +194,7 @@ static void mlx4_en_free_rx_desc(struct
-               dma = be64_to_cpu(rx_desc->data[nr].addr);
-               en_dbg(DRV, priv, "Unmapping buffer at dma:0x%llx\n", (u64) dma);
--              pci_unmap_single(mdev->pdev, dma, skb_frags[nr].size,
-+              pci_unmap_single(mdev->pdev, dma, skb_frag_size(&skb_frags[nr]),
-                                PCI_DMA_FROMDEVICE);
-               put_page(skb_frags[nr].page);
-       }
-@@ -403,7 +403,7 @@ void mlx4_en_deactivate_rx_ring(struct m
- /* Unmap a completed descriptor and free unused pages */
- static int mlx4_en_complete_rx_desc(struct mlx4_en_priv *priv,
-                                   struct mlx4_en_rx_desc *rx_desc,
--                                  struct page_frag *skb_frags,
-+                                  struct skb_frag_struct *skb_frags,
-                                   struct sk_buff *skb,
-                                   struct mlx4_en_rx_alloc *page_alloc,
-                                   int length)
-@@ -421,9 +421,9 @@ static int mlx4_en_complete_rx_desc(stru
-                       break;
-               /* Save page reference in skb */
--              __skb_frag_set_page(&skb_frags_rx[nr], skb_frags[nr].page);
--              skb_frag_size_set(&skb_frags_rx[nr], skb_frags[nr].size);
--              skb_frags_rx[nr].page_offset = skb_frags[nr].offset;
-+              skb_frags_rx[nr].page = skb_frags[nr].page;
-+              skb_frag_size_set(&skb_frags_rx[nr], skb_frag_size(&skb_frags[nr]));
-+              skb_frags_rx[nr].page_offset = skb_frags[nr].page_offset;
-               skb->truesize += frag_info->frag_stride;
-               dma = be64_to_cpu(rx_desc->data[nr].addr);
-@@ -446,7 +446,7 @@ fail:
-        * the descriptor) of this packet; remaining fragments are reused... */
-       while (nr > 0) {
-               nr--;
--              __skb_frag_unref(&skb_frags_rx[nr]);
-+              put_page(skb_frags_rx[nr].page);
-       }
-       return 0;
- }
-@@ -454,7 +454,7 @@ fail:
- static struct sk_buff *mlx4_en_rx_skb(struct mlx4_en_priv *priv,
-                                     struct mlx4_en_rx_desc *rx_desc,
--                                    struct page_frag *skb_frags,
-+                                    struct skb_frag_struct *skb_frags,
-                                     struct mlx4_en_rx_alloc *page_alloc,
-                                     unsigned int length)
- {
-@@ -475,7 +475,7 @@ static struct sk_buff *mlx4_en_rx_skb(st
-       /* Get pointer to first fragment so we could copy the headers into the
-        * (linear part of the) skb */
--      va = page_address(skb_frags[0].page) + skb_frags[0].offset;
-+      va = page_address(skb_frags[0].page) + skb_frags[0].page_offset;
-       if (length <= SMALL_PACKET_SIZE) {
-               /* We are copying all relevant data to the skb - temporarily
-@@ -533,7 +533,7 @@ int mlx4_en_process_rx_cq(struct net_dev
-       struct mlx4_en_priv *priv = netdev_priv(dev);
-       struct mlx4_cqe *cqe;
-       struct mlx4_en_rx_ring *ring = &priv->rx_ring[cq->ring];
--      struct page_frag *skb_frags;
-+      struct skb_frag_struct *skb_frags;
-       struct mlx4_en_rx_desc *rx_desc;
-       struct sk_buff *skb;
-       int index;
diff --git a/backports/3.1/03-remove-attr_is_visible.patch b/backports/3.1/03-remove-attr_is_visible.patch
deleted file mode 100644 (file)
index c05ace7..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-Index: compat-rdma/drivers/infiniband/ulp/iser/iscsi_iser.c
-===================================================================
---- compat-rdma.orig/drivers/infiniband/ulp/iser/iscsi_iser.c
-+++ compat-rdma/drivers/infiniband/ulp/iser/iscsi_iser.c
-@@ -719,7 +719,9 @@ static struct iscsi_transport iscsi_iser
-       .create_conn            = iscsi_iser_conn_create,
-       .bind_conn              = iscsi_iser_conn_bind,
-       .destroy_conn           = iscsi_iser_conn_destroy,
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(3,2,0))
-       .attr_is_visible        = iser_attr_is_visible,
-+#endif
-       .set_param              = iscsi_iser_set_param,
-       .get_conn_param         = iscsi_conn_get_param,
-       .get_ep_param           = iscsi_iser_get_ep_param,
diff --git a/backports/3.1/04-cxgb4-Reversing-convert-to-SKB-paged-frag-API.patch b/backports/3.1/04-cxgb4-Reversing-convert-to-SKB-paged-frag-API.patch
deleted file mode 100644 (file)
index 11a0fc1..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-From 5ea32823a4937cd918a823bd0dfbbb592e8b9e6e Mon Sep 17 00:00:00 2001
-From: Vipul Pandya <vipul@chelsio.com>
-Date: Mon, 7 May 2012 14:17:55 +0530
-Subject: [PATCH 1/2] cxgb4: Reversing convert to SKB paged frag API.
-
-This patch is a reverse patch of upstream commit
-e91b0f2491f7a7b21c4e562df09f3dbe551f0fe2
-
-Signed-off-by: Vipul Pandya <vipul@chelsio.com>
----
- drivers/net/ethernet/chelsio/cxgb4/cxgb4.h |    2 +-
- drivers/net/ethernet/chelsio/cxgb4/sge.c   |   45 +++++++++++++--------------
- 2 files changed, 23 insertions(+), 24 deletions(-)
-
-diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h b/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
-index 0fe1885..223a7f7 100644
---- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
-+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
-@@ -326,7 +326,7 @@ struct sge_fl {                     /* SGE free-buffer queue state */
-
- /* A packet gather list */
- struct pkt_gl {
--      struct page_frag frags[MAX_SKB_FRAGS];
-+      skb_frag_t frags[MAX_SKB_FRAGS];
-       void *va;                         /* virtual address of first byte */
-       unsigned int nfrags;              /* # of fragments */
-       unsigned int tot_len;             /* total length of fragments */
-diff --git a/drivers/net/ethernet/chelsio/cxgb4/sge.c b/drivers/net/ethernet/chelsio/cxgb4/sge.c
-index 140254c..c5e99fb 100644
---- a/drivers/net/ethernet/chelsio/cxgb4/sge.c
-+++ b/drivers/net/ethernet/chelsio/cxgb4/sge.c
-@@ -216,8 +216,8 @@ static int map_skb(struct device *dev, const struct sk_buff *skb,
-       end = &si->frags[si->nr_frags];
-
-       for (fp = si->frags; fp < end; fp++) {
--              *++addr = skb_frag_dma_map(dev, fp, 0, skb_frag_size(fp),
--                                         DMA_TO_DEVICE);
-+              *++addr = dma_map_page(dev, fp->page, fp->page_offset,
-+                                     skb_frag_size(fp), DMA_TO_DEVICE);
-               if (dma_mapping_error(dev, *addr))
-                       goto unwind;
-       }
-@@ -1410,23 +1410,22 @@ int cxgb4_ofld_send(struct net_device *dev, struct sk_buff *skb)
- }
- EXPORT_SYMBOL(cxgb4_ofld_send);
-
--static inline void copy_frags(struct sk_buff *skb,
-+static inline void copy_frags(struct skb_shared_info *ssi,
-                             const struct pkt_gl *gl, unsigned int offset)
- {
--      int i;
-+      unsigned int n;
-
-       /* usually there's just one frag */
--      __skb_fill_page_desc(skb, 0, gl->frags[0].page,
--                           gl->frags[0].offset + offset,
--                           gl->frags[0].size - offset);
--      skb_shinfo(skb)->nr_frags = gl->nfrags;
--      for (i = 1; i < gl->nfrags; i++)
--              __skb_fill_page_desc(skb, i, gl->frags[i].page,
--                                   gl->frags[i].offset,
--                                   gl->frags[i].size);
-+      ssi->frags[0].page = gl->frags[0].page;
-+      ssi->frags[0].page_offset = gl->frags[0].page_offset + offset;
-+      skb_frag_size_set(&ssi->frags[0], skb_frag_size(&gl->frags[0]) - offset);
-+      ssi->nr_frags = gl->nfrags;
-+      n = gl->nfrags - 1;
-+      if (n)
-+              memcpy(&ssi->frags[1], &gl->frags[1], n * sizeof(skb_frag_t));
-
-       /* get a reference to the last page, we don't own it */
--      get_page(gl->frags[gl->nfrags - 1].page);
-+      get_page(gl->frags[n].page);
- }
-
- /**
-@@ -1461,7 +1460,7 @@ struct sk_buff *cxgb4_pktgl_to_skb(const struct pkt_gl *gl,
-               __skb_put(skb, pull_len);
-               skb_copy_to_linear_data(skb, gl->va, pull_len);
-
--              copy_frags(skb, gl, pull_len);
-+              copy_frags(skb_shinfo(skb), gl, pull_len);
-               skb->len = gl->tot_len;
-               skb->data_len = skb->len - pull_len;
-               skb->truesize += skb->data_len;
-@@ -1480,7 +1479,7 @@ EXPORT_SYMBOL(cxgb4_pktgl_to_skb);
- static void t4_pktgl_free(const struct pkt_gl *gl)
- {
-       int n;
--      const struct page_frag *p;
-+      const skb_frag_t *p;
-
-       for (p = gl->frags, n = gl->nfrags - 1; n--; p++)
-               put_page(p->page);
-@@ -1524,7 +1523,7 @@ static void do_gro(struct sge_eth_rxq *rxq, const struct pkt_gl *gl,
-               return;
-       }
-
--      copy_frags(skb, gl, RX_PKT_PAD);
-+      copy_frags(skb_shinfo(skb), gl, RX_PKT_PAD);
-       skb->len = gl->tot_len - RX_PKT_PAD;
-       skb->data_len = skb->len;
-       skb->truesize += skb->data_len;
-@@ -1700,7 +1699,7 @@ static int process_responses(struct sge_rspq *q, int budget)
-               rmb();
-               rsp_type = RSPD_TYPE(rc->type_gen);
-               if (likely(rsp_type == RSP_TYPE_FLBUF)) {
--                      struct page_frag *fp;
-+                      skb_frag_t *fp;
-                       struct pkt_gl si;
-                       const struct rx_sw_desc *rsd;
-                       u32 len = ntohl(rc->pldbuflen_qid), bufsz, frags;
-@@ -1719,9 +1718,9 @@ static int process_responses(struct sge_rspq *q, int budget)
-                               rsd = &rxq->fl.sdesc[rxq->fl.cidx];
-                               bufsz = get_buf_size(rsd);
-                               fp->page = rsd->page;
--                              fp->offset = q->offset;
--                              fp->size = min(bufsz, len);
--                              len -= fp->size;
-+                              fp->page_offset = q->offset;
-+                              skb_frag_size_set(fp, min(bufsz, len));
-+                              len -= skb_frag_size(fp);
-                               if (!len)
-                                       break;
-                               unmap_rx_buf(q->adap, &rxq->fl);
-@@ -1733,16 +1732,16 @@ static int process_responses(struct sge_rspq *q, int budget)
-                        */
-                       dma_sync_single_for_cpu(q->adap->pdev_dev,
-                                               get_buf_addr(rsd),
--                                              fp->size, DMA_FROM_DEVICE);
-+                                              skb_frag_size(fp), DMA_FROM_DEVICE);
-
-                       si.va = page_address(si.frags[0].page) +
--                              si.frags[0].offset;
-+                              si.frags[0].page_offset;
-                       prefetch(si.va);
-
-                       si.nfrags = frags + 1;
-                       ret = q->handler(q, q->cur_desc, &si);
-                       if (likely(ret == 0))
--                              q->offset += ALIGN(fp->size, FL_ALIGN);
-+                              q->offset += ALIGN(skb_frag_size(fp), FL_ALIGN);
-                       else
-                               restore_rx_bufs(&si, &rxq->fl, frags);
-               } else if (likely(rsp_type == RSP_TYPE_CPL)) {
---
-1.7.1
-
diff --git a/backports/3.1/05-cxgb4-Add-build-support-for-kernel-3.1.patch b/backports/3.1/05-cxgb4-Add-build-support-for-kernel-3.1.patch
deleted file mode 100644 (file)
index a580f79..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-From e861ec83739c5c981a1ae96edb08062f73d52dc4 Mon Sep 17 00:00:00 2001
-From: Vipul Pandya <vipul@chelsio.com>
-Date: Mon, 7 May 2012 14:40:34 +0530
-Subject: [PATCH 2/2] cxgb4: Add build support for kernel 3.1
-
-Signed-off-by: Vipul Pandya <vipul@chelsio.com>
----
- drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c |    8 ++++----
- 1 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-index 4c8f42a..0b77fec 100644
---- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-@@ -32,6 +32,9 @@
-  * SOFTWARE.
-  */
-
-+#ifdef pr_fmt
-+#undef pr_fmt
-+#endif
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
- #include <linux/bitmap.h>
-@@ -41,7 +44,6 @@
- #include <linux/err.h>
- #include <linux/etherdevice.h>
- #include <linux/firmware.h>
--#include <linux/if.h>
- #include <linux/if_vlan.h>
- #include <linux/init.h>
- #include <linux/log2.h>
-@@ -1902,7 +1904,7 @@ static int set_rss_table(struct net_device *dev,
- }
-
- static int get_rxnfc(struct net_device *dev, struct ethtool_rxnfc *info,
--                   u32 *rules)
-+                   void *rules)
- {
-       const struct port_info *pi = netdev_priv(dev);
-
-@@ -3640,8 +3642,6 @@ static int __devinit init_one(struct pci_dev *pdev,
-               netdev->features |= netdev->hw_features | highdma;
-               netdev->vlan_features = netdev->features & VLAN_FEAT;
-
--              netdev->priv_flags |= IFF_UNICAST_FLT;
--
-               netdev->netdev_ops = &cxgb4_netdev_ops;
-               SET_ETHTOOL_OPS(netdev, &cxgb_ethtool_ops);
-       }
---
-1.7.1
-