From 90ab7ae7de7e271562f6714420499f75240dd434 Mon Sep 17 00:00:00 2001 From: Vladimir Sokolovsky Date: Sun, 17 Jun 2012 18:12:31 +0300 Subject: [PATCH] Remove backport directories Backport will include patches that will add support for all kernels using: ... Signed-off-by: Vladimir Sokolovsky --- .../01-pinned_to_locked_vm_to_3_1.patch | 84 ----- .../02-remove-SKB-paged-frag-API.patch | 123 ------- .../03-remove-attr_is_visible.patch | 14 - .../04-ib-core-Add-RHEL6.2-backports.patch | 332 ------------------ .../05-ipoib-Add-RHEL6.2-backports.patch | 167 --------- .../06-mlx4_en-Add-RHEL6.2-backports.patch | 172 --------- .../07-mlx4_ib-Add-RHEL6.2-backports.patch | 35 -- .../08-rds-Add-RHEL6.2-backports.patch | 39 -- ...ersing-convert-to-SKB-paged-frag-API.patch | 150 -------- .../09-nes-RHEL6.2-backports.patch | 261 -------------- ...unwind_netlink_dump_start_arg_change.patch | 12 - ...gb4-Add-build-support-for-kernel-3.1.patch | 53 --- .../11-cxgb3-Reversing-do-vlan-cleanup.patch | 212 ----------- .../12-iw_cxgb3-Add-RHEL6.2-backports.patch | 66 ---- .../13-iw_cxgb4-Add-RHEL6.2-backports.patch | 75 ---- ...use-the-DMA-state-API-instead-of-the.patch | 157 --------- ...5-cxgb3-Revert-implement-set_phys_id.patch | 66 ---- ...-cxgb3-Revert-convert-to-hw_features.patch | 248 ------------- .../17-cxgb3-Add-RHEL6.2-backports.patch | 77 ---- .../18-cxgb4-Add-phys_id-interface.patch | 35 -- .../19-cxgb4-Revert-netdevice-changes.patch | 195 ---------- .../20-cxgb4-cxgb4_main-and-sge-changes.patch | 183 ---------- .../21-cxgb4-real_num_tx_queues-changes.patch | 48 --- .../22-cxgb4-Fix-packet-counters.patch | 74 ---- .../23-qib_fs_RHEL6.2_backports.patch | 77 ---- .../01-pinned_to_locked_vm_to_3_1.patch | 84 ----- .../02-remove-SKB-paged-frag-API.patch | 123 ------- .../03-remove-attr_is_visible.patch | 14 - ...ersing-convert-to-SKB-paged-frag-API.patch | 148 -------- ...gb4-Add-build-support-for-kernel-3.1.patch | 53 --- .../06-cxgb3-Reversing-do-vlan-cleanup.patch | 212 ----------- .../07-netlink_dump_start_arg.patch | 10 - ...netdev_alloc_page-and-use-__GFP_COLD.patch | 47 --- .../3.0/01-pinned_to_locked_vm_to_3_1.patch | 84 ----- .../3.0/02-remove-SKB-paged-frag-API.patch | 123 ------- backports/3.0/03-remove-attr_is_visible.patch | 14 - ...ersing-convert-to-SKB-paged-frag-API.patch | 148 -------- ...gb4-Add-build-support-for-kernel-3.1.patch | 53 --- .../06-cxgb3-Reversing-do-vlan-cleanup.patch | 212 ----------- .../3.1/01-pinned_to_locked_vm_to_3_1.patch | 84 ----- .../3.1/02-remove-SKB-paged-frag-API.patch | 123 ------- backports/3.1/03-remove-attr_is_visible.patch | 14 - ...ersing-convert-to-SKB-paged-frag-API.patch | 148 -------- ...gb4-Add-build-support-for-kernel-3.1.patch | 53 --- 44 files changed, 4702 deletions(-) delete mode 100644 backports/2.6.32-EL6.2/01-pinned_to_locked_vm_to_3_1.patch delete mode 100644 backports/2.6.32-EL6.2/02-remove-SKB-paged-frag-API.patch delete mode 100644 backports/2.6.32-EL6.2/03-remove-attr_is_visible.patch delete mode 100644 backports/2.6.32-EL6.2/04-ib-core-Add-RHEL6.2-backports.patch delete mode 100644 backports/2.6.32-EL6.2/05-ipoib-Add-RHEL6.2-backports.patch delete mode 100644 backports/2.6.32-EL6.2/06-mlx4_en-Add-RHEL6.2-backports.patch delete mode 100644 backports/2.6.32-EL6.2/07-mlx4_ib-Add-RHEL6.2-backports.patch delete mode 100644 backports/2.6.32-EL6.2/08-rds-Add-RHEL6.2-backports.patch delete mode 100644 backports/2.6.32-EL6.2/09-cxgb4-Reversing-convert-to-SKB-paged-frag-API.patch delete mode 100644 backports/2.6.32-EL6.2/09-nes-RHEL6.2-backports.patch delete mode 100644 backports/2.6.32-EL6.2/09-unwind_netlink_dump_start_arg_change.patch delete mode 100644 backports/2.6.32-EL6.2/10-cxgb4-Add-build-support-for-kernel-3.1.patch delete mode 100644 backports/2.6.32-EL6.2/11-cxgb3-Reversing-do-vlan-cleanup.patch delete mode 100644 backports/2.6.32-EL6.2/12-iw_cxgb3-Add-RHEL6.2-backports.patch delete mode 100644 backports/2.6.32-EL6.2/13-iw_cxgb4-Add-RHEL6.2-backports.patch delete mode 100644 backports/2.6.32-EL6.2/14-iw_cxgb4-Revert-use-the-DMA-state-API-instead-of-the.patch delete mode 100644 backports/2.6.32-EL6.2/15-cxgb3-Revert-implement-set_phys_id.patch delete mode 100644 backports/2.6.32-EL6.2/16-cxgb3-Revert-convert-to-hw_features.patch delete mode 100644 backports/2.6.32-EL6.2/17-cxgb3-Add-RHEL6.2-backports.patch delete mode 100644 backports/2.6.32-EL6.2/18-cxgb4-Add-phys_id-interface.patch delete mode 100644 backports/2.6.32-EL6.2/19-cxgb4-Revert-netdevice-changes.patch delete mode 100644 backports/2.6.32-EL6.2/20-cxgb4-cxgb4_main-and-sge-changes.patch delete mode 100644 backports/2.6.32-EL6.2/21-cxgb4-real_num_tx_queues-changes.patch delete mode 100644 backports/2.6.32-EL6.2/22-cxgb4-Fix-packet-counters.patch delete mode 100644 backports/2.6.32-EL6.2/23-qib_fs_RHEL6.2_backports.patch delete mode 100644 backports/3.0.13_sles11_sp2/01-pinned_to_locked_vm_to_3_1.patch delete mode 100644 backports/3.0.13_sles11_sp2/02-remove-SKB-paged-frag-API.patch delete mode 100644 backports/3.0.13_sles11_sp2/03-remove-attr_is_visible.patch delete mode 100644 backports/3.0.13_sles11_sp2/04-cxgb4-Reversing-convert-to-SKB-paged-frag-API.patch delete mode 100644 backports/3.0.13_sles11_sp2/05-cxgb4-Add-build-support-for-kernel-3.1.patch delete mode 100644 backports/3.0.13_sles11_sp2/06-cxgb3-Reversing-do-vlan-cleanup.patch delete mode 100644 backports/3.0.13_sles11_sp2/07-netlink_dump_start_arg.patch delete mode 100644 backports/3.0.13_sles11_sp2/08-cxgb4-remove-netdev_alloc_page-and-use-__GFP_COLD.patch delete mode 100644 backports/3.0/01-pinned_to_locked_vm_to_3_1.patch delete mode 100644 backports/3.0/02-remove-SKB-paged-frag-API.patch delete mode 100644 backports/3.0/03-remove-attr_is_visible.patch delete mode 100644 backports/3.0/04-cxgb4-Reversing-convert-to-SKB-paged-frag-API.patch delete mode 100644 backports/3.0/05-cxgb4-Add-build-support-for-kernel-3.1.patch delete mode 100644 backports/3.0/06-cxgb3-Reversing-do-vlan-cleanup.patch delete mode 100644 backports/3.1/01-pinned_to_locked_vm_to_3_1.patch delete mode 100644 backports/3.1/02-remove-SKB-paged-frag-API.patch delete mode 100644 backports/3.1/03-remove-attr_is_visible.patch delete mode 100644 backports/3.1/04-cxgb4-Reversing-convert-to-SKB-paged-frag-API.patch delete mode 100644 backports/3.1/05-cxgb4-Add-build-support-for-kernel-3.1.patch 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 index 5875c2b..0000000 --- a/backports/2.6.32-EL6.2/01-pinned_to_locked_vm_to_3_1.patch +++ /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(¤t->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(¤t->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(¤t->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(¤t->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 index 1c44fc4..0000000 --- a/backports/2.6.32-EL6.2/02-remove-SKB-paged-frag-API.patch +++ /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 index c05ace7..0000000 --- a/backports/2.6.32-EL6.2/03-remove-attr_is_visible.patch +++ /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 index 26fa757..0000000 --- a/backports/2.6.32-EL6.2/04-ib-core-Add-RHEL6.2-backports.patch +++ /dev/null @@ -1,332 +0,0 @@ -From 9e60fe057cb38b467dfbac003175644519920cac Mon Sep 17 00:00:00 2001 -From: Vladimir Sokolovsky -Date: Fri, 23 Mar 2012 21:21:06 +0200 -Subject: [PATCH] ib/core: Add RHEL6.2 backports - -Signed-off-by: Vladimir Sokolovsky ---- - 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 - #include - #include -+#include - #include - #include - -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 - #include -@@ -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 index 406e7b8..0000000 --- a/backports/2.6.32-EL6.2/05-ipoib-Add-RHEL6.2-backports.patch +++ /dev/null @@ -1,167 +0,0 @@ -From d351f953e3bc99e834b820702d7e121e153ada70 Mon Sep 17 00:00:00 2001 -From: Vladimir Sokolovsky -Date: Fri, 23 Mar 2012 21:30:36 +0200 -Subject: [PATCH] ipoib: Add RHEL6.2 backports - -Signed-off-by: Vladimir Sokolovsky ---- - 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 index c710ff7..0000000 --- a/backports/2.6.32-EL6.2/06-mlx4_en-Add-RHEL6.2-backports.patch +++ /dev/null @@ -1,172 +0,0 @@ -From ac7e5469789da2ef1aa24cf1f28c23a0d630a294 Mon Sep 17 00:00:00 2001 -From: Vladimir Sokolovsky -Date: Fri, 23 Mar 2012 21:34:13 +0200 -Subject: [PATCH] mlx4_en: Add RHEL6.2 backports - -Signed-off-by: Vladimir Sokolovsky ---- - 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 index c445866..0000000 --- a/backports/2.6.32-EL6.2/07-mlx4_ib-Add-RHEL6.2-backports.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 06357ad55ed41358be53d656451721d7df6eac6e Mon Sep 17 00:00:00 2001 -From: Vladimir Sokolovsky -Date: Fri, 23 Mar 2012 21:34:39 +0200 -Subject: [PATCH] mlx4_ib: Add RHEL6.2 backports - -Signed-off-by: Vladimir Sokolovsky ---- - 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 index cbdc675..0000000 --- a/backports/2.6.32-EL6.2/08-rds-Add-RHEL6.2-backports.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 7fcb2f5260095d495a96f53642e593e023a9a9b6 Mon Sep 17 00:00:00 2001 -From: Vladimir Sokolovsky -Date: Fri, 23 Mar 2012 21:36:27 +0200 -Subject: [PATCH] rds: Add RHEL6.2 backports - -Signed-off-by: Vladimir Sokolovsky ---- - 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 index 119e593..0000000 --- a/backports/2.6.32-EL6.2/09-cxgb4-Reversing-convert-to-SKB-paged-frag-API.patch +++ /dev/null @@ -1,150 +0,0 @@ -From 198ea4dc9d2e1e38995ca5442d71b8bee9247a0c Mon Sep 17 00:00:00 2001 -From: Vipul Pandya -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 ---- - 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 index 44c3b10..0000000 --- a/backports/2.6.32-EL6.2/09-nes-RHEL6.2-backports.patch +++ /dev/null @@ -1,261 +0,0 @@ -From 40c9be2518262d444504619daf15205e211d17d5 Mon Sep 17 00:00:00 2001 -From: Faisal Latif -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 ---- - 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<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 index 092e3e3..0000000 --- a/backports/2.6.32-EL6.2/09-unwind_netlink_dump_start_arg_change.patch +++ /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 index e5d643e..0000000 --- a/backports/2.6.32-EL6.2/10-cxgb4-Add-build-support-for-kernel-3.1.patch +++ /dev/null @@ -1,53 +0,0 @@ -From bca407cec6adad6766870d6c26ff3ffa3b10e529 Mon Sep 17 00:00:00 2001 -From: Vipul Pandya -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 ---- - 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 -@@ -41,7 +44,6 @@ - #include - #include - #include --#include - #include - #include - #include -@@ -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 index 3b8519a..0000000 --- a/backports/2.6.32-EL6.2/11-cxgb3-Reversing-do-vlan-cleanup.patch +++ /dev/null @@ -1,212 +0,0 @@ -From 708ed9efefdc11cf5be0491314befb0fafac1daa Mon Sep 17 00:00:00 2001 -From: Vipul Pandya -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 ---- - 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 - -+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 index bbd3ed4..0000000 --- a/backports/2.6.32-EL6.2/12-iw_cxgb3-Add-RHEL6.2-backports.patch +++ /dev/null @@ -1,66 +0,0 @@ -From 4d79ac47a87ece1a8bae619683a11b264f7db063 Mon Sep 17 00:00:00 2001 -From: Vipul Pandya -Date: Thu, 3 May 2012 14:39:49 +0530 -Subject: [PATCH 04/14] iw_cxgb3: Add RHEL6.2 backports - -Signed-off-by: Vipul Pandya ---- - 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 index f191a41..0000000 --- a/backports/2.6.32-EL6.2/13-iw_cxgb4-Add-RHEL6.2-backports.patch +++ /dev/null @@ -1,75 +0,0 @@ -From d80b776c844c1a35f32a55150021f2e8635b7323 Mon Sep 17 00:00:00 2001 -From: Vipul Pandya -Date: Thu, 10 May 2012 15:39:37 +0530 -Subject: [PATCH 05/14] iw_cxgb4: Add RHEL6.2 backports - -Signed-off-by: Vipul Pandya ---- - 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 index 2be8286..0000000 --- a/backports/2.6.32-EL6.2/14-iw_cxgb4-Revert-use-the-DMA-state-API-instead-of-the.patch +++ /dev/null @@ -1,157 +0,0 @@ -From 8651cf61a4cd6651c6fbd37a3702d6f134cdaaa6 Mon Sep 17 00:00:00 2001 -From: Vipul Pandya -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 ---- - 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 index 8c00dce..0000000 --- a/backports/2.6.32-EL6.2/15-cxgb3-Revert-implement-set_phys_id.patch +++ /dev/null @@ -1,66 +0,0 @@ -From 6ede508ac7b890df01acd9cd219542d36c49b25e Mon Sep 17 00:00:00 2001 -From: Vipul Pandya -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 ---- - 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 index 17fffb0..0000000 --- a/backports/2.6.32-EL6.2/16-cxgb3-Revert-convert-to-hw_features.patch +++ /dev/null @@ -1,248 +0,0 @@ -From 810969f13f370934f20c017cea7ee949db23a002 Mon Sep 17 00:00:00 2001 -From: Vipul Pandya -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 ---- - 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 index eef6afa..0000000 --- a/backports/2.6.32-EL6.2/17-cxgb3-Add-RHEL6.2-backports.patch +++ /dev/null @@ -1,77 +0,0 @@ -From 585e4113fc88b627bbc365f2fc15f11a903906c6 Mon Sep 17 00:00:00 2001 -From: Vipul Pandya -Date: Thu, 10 May 2012 17:12:56 +0530 -Subject: [PATCH 09/14] cxgb3: Add RHEL6.2 backports - -Signed-off-by: Vipul Pandya ---- - 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 index 94a38ce..0000000 --- a/backports/2.6.32-EL6.2/18-cxgb4-Add-phys_id-interface.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 23e76ca8dcd4d2d1ffbf1cde508c81bc14b09bc9 Mon Sep 17 00:00:00 2001 -From: Vipul Pandya -Date: Thu, 10 May 2012 17:33:51 +0530 -Subject: [PATCH 10/14] cxgb4: Add phys_id interface - -Signed-off-by: Vipul Pandya ---- - 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 index 8123815..0000000 --- a/backports/2.6.32-EL6.2/19-cxgb4-Revert-netdevice-changes.patch +++ /dev/null @@ -1,195 +0,0 @@ -From 583857f85aadb5438eeeff7c1f4778f6c11ef9ed Mon Sep 17 00:00:00 2001 -From: Vipul Pandya -Date: Thu, 10 May 2012 17:37:37 +0530 -Subject: [PATCH 11/14] cxgb4: Revert netdevice changes - -Signed-off-by: Vipul Pandya ---- - 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 index 648dae6..0000000 --- a/backports/2.6.32-EL6.2/20-cxgb4-cxgb4_main-and-sge-changes.patch +++ /dev/null @@ -1,183 +0,0 @@ -From 65f230d00b7f0d6558f53a2df049cc7f9fa7f041 Mon Sep 17 00:00:00 2001 -From: Vipul Pandya -Date: Thu, 10 May 2012 17:49:00 +0530 -Subject: [PATCH 12/14] cxgb4: cxgb4_main and sge changes - -Signed-off-by: Vipul Pandya ---- - 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 index 8a0b6cf..0000000 --- a/backports/2.6.32-EL6.2/21-cxgb4-real_num_tx_queues-changes.patch +++ /dev/null @@ -1,48 +0,0 @@ -From ce0bbdee8fe4ac34ad0b695f914c499b5ebeae3f Mon Sep 17 00:00:00 2001 -From: Vipul Pandya -Date: Thu, 10 May 2012 17:51:16 +0530 -Subject: [PATCH 13/14] cxgb4: real_num_tx_queues changes - -Signed-off-by: Vipul Pandya ---- - 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 index d26dea0..0000000 --- a/backports/2.6.32-EL6.2/22-cxgb4-Fix-packet-counters.patch +++ /dev/null @@ -1,74 +0,0 @@ -From 05e7163348fbef11a2307c52259e75ff19d46cf1 Mon Sep 17 00:00:00 2001 -From: Vipul Pandya -Date: Thu, 10 May 2012 17:52:47 +0530 -Subject: [PATCH 14/14] cxgb4: Fix packet counters - -Signed-off-by: Vipul Pandya ---- - 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 index 544a224..0000000 --- a/backports/2.6.32-EL6.2/23-qib_fs_RHEL6.2_backports.patch +++ /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 index 5875c2b..0000000 --- a/backports/3.0.13_sles11_sp2/01-pinned_to_locked_vm_to_3_1.patch +++ /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(¤t->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(¤t->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(¤t->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(¤t->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 index 1c44fc4..0000000 --- a/backports/3.0.13_sles11_sp2/02-remove-SKB-paged-frag-API.patch +++ /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 index c05ace7..0000000 --- a/backports/3.0.13_sles11_sp2/03-remove-attr_is_visible.patch +++ /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 index 11a0fc1..0000000 --- a/backports/3.0.13_sles11_sp2/04-cxgb4-Reversing-convert-to-SKB-paged-frag-API.patch +++ /dev/null @@ -1,148 +0,0 @@ -From 5ea32823a4937cd918a823bd0dfbbb592e8b9e6e Mon Sep 17 00:00:00 2001 -From: Vipul Pandya -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 ---- - 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 index a580f79..0000000 --- a/backports/3.0.13_sles11_sp2/05-cxgb4-Add-build-support-for-kernel-3.1.patch +++ /dev/null @@ -1,53 +0,0 @@ -From e861ec83739c5c981a1ae96edb08062f73d52dc4 Mon Sep 17 00:00:00 2001 -From: Vipul Pandya -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 ---- - 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 -@@ -41,7 +44,6 @@ - #include - #include - #include --#include - #include - #include - #include -@@ -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 index 35251e7..0000000 --- a/backports/3.0.13_sles11_sp2/06-cxgb3-Reversing-do-vlan-cleanup.patch +++ /dev/null @@ -1,212 +0,0 @@ -From d6b1c6b1aaca4eaf89e0e0021bafa29af933063e Mon Sep 17 00:00:00 2001 -From: Vipul Pandya -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 ---- - 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 - -+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 index 442bf41..0000000 --- a/backports/3.0.13_sles11_sp2/07-netlink_dump_start_arg.patch +++ /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 index 0769ce1..0000000 --- a/backports/3.0.13_sles11_sp2/08-cxgb4-remove-netdev_alloc_page-and-use-__GFP_COLD.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 8c4674b2176db67f3a059d9dfb22377caff3a3be Mon Sep 17 00:00:00 2001 -From: Vipul Pandya -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 ---- - 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 index 5875c2b..0000000 --- a/backports/3.0/01-pinned_to_locked_vm_to_3_1.patch +++ /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(¤t->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(¤t->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(¤t->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(¤t->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 index 1c44fc4..0000000 --- a/backports/3.0/02-remove-SKB-paged-frag-API.patch +++ /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 index c05ace7..0000000 --- a/backports/3.0/03-remove-attr_is_visible.patch +++ /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 index 11a0fc1..0000000 --- a/backports/3.0/04-cxgb4-Reversing-convert-to-SKB-paged-frag-API.patch +++ /dev/null @@ -1,148 +0,0 @@ -From 5ea32823a4937cd918a823bd0dfbbb592e8b9e6e Mon Sep 17 00:00:00 2001 -From: Vipul Pandya -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 ---- - 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 index a580f79..0000000 --- a/backports/3.0/05-cxgb4-Add-build-support-for-kernel-3.1.patch +++ /dev/null @@ -1,53 +0,0 @@ -From e861ec83739c5c981a1ae96edb08062f73d52dc4 Mon Sep 17 00:00:00 2001 -From: Vipul Pandya -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 ---- - 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 -@@ -41,7 +44,6 @@ - #include - #include - #include --#include - #include - #include - #include -@@ -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 index 35251e7..0000000 --- a/backports/3.0/06-cxgb3-Reversing-do-vlan-cleanup.patch +++ /dev/null @@ -1,212 +0,0 @@ -From d6b1c6b1aaca4eaf89e0e0021bafa29af933063e Mon Sep 17 00:00:00 2001 -From: Vipul Pandya -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 ---- - 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 - -+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 index 5875c2b..0000000 --- a/backports/3.1/01-pinned_to_locked_vm_to_3_1.patch +++ /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(¤t->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(¤t->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(¤t->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(¤t->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 index 1c44fc4..0000000 --- a/backports/3.1/02-remove-SKB-paged-frag-API.patch +++ /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 index c05ace7..0000000 --- a/backports/3.1/03-remove-attr_is_visible.patch +++ /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 index 11a0fc1..0000000 --- a/backports/3.1/04-cxgb4-Reversing-convert-to-SKB-paged-frag-API.patch +++ /dev/null @@ -1,148 +0,0 @@ -From 5ea32823a4937cd918a823bd0dfbbb592e8b9e6e Mon Sep 17 00:00:00 2001 -From: Vipul Pandya -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 ---- - 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 index a580f79..0000000 --- a/backports/3.1/05-cxgb4-Add-build-support-for-kernel-3.1.patch +++ /dev/null @@ -1,53 +0,0 @@ -From e861ec83739c5c981a1ae96edb08062f73d52dc4 Mon Sep 17 00:00:00 2001 -From: Vipul Pandya -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 ---- - 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 -@@ -41,7 +44,6 @@ - #include - #include - #include --#include - #include - #include - #include -@@ -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 - -- 2.41.0