Re: [PATCH] libibnetdisc: fix outstanding SMPs countung

2010-04-16 Thread Sasha Khapyorsky
On 09:52 Wed 14 Apr , Ira Weiny wrote:
 
  But then it blocks process_mads() to loop forever after single
  send_smp() failure (with all empty queues and umad_recv() running
  without timeout).
 
 But moving the cl_qmap_insert below the send call fixes that.   

It doesn't:

int process_mads(smp_engine_t * engine)
{
int rc = 0;
while (engine-num_smps_outstanding  0) {
if ((rc = process_smp_queue(engine)) != 0)
return rc;
while (!cl_is_qmap_empty(engine-smps_on_wire))
if ((rc = process_one_recv(engine)) != 0)
return rc;
}
return 0;
}

After send_smp() failure engine-num_smps_outstanding still be  0 and
will be never decreased (tested).

 However, it does cause a memory leak because the smp is no longer in  
 the smp_queue_head list.

This is correct about leaking.

 It needs to be put back on that list to be  
 retried with a limit on the retries (to prevent what you are saying  
 here.)

We have already retries mechanism implemented in umad_send(), so likely
failed MAD should be just dropped and freed:

diff --git a/infiniband-diags/libibnetdisc/src/query_smp.c 
b/infiniband-diags/libibnetdisc/src/query_smp.c
index 08e3ef7..89c0b05 100644
--- a/infiniband-diags/libibnetdisc/src/query_smp.c
+++ b/infiniband-diags/libibnetdisc/src/query_smp.c
@@ -96,8 +96,10 @@ static int process_smp_queue(smp_engine_t * engine)
if (!smp)
return 0;
 
-   if ((rc = send_smp(smp, engine-ibmad_port)) != 0)
+   if ((rc = send_smp(smp, engine-ibmad_port)) != 0) {
+   free(smp);
return rc;
+   }
engine-num_smps_outstanding++;
cl_qmap_insert(engine-smps_on_wire, (uint32_t) smp-rpc.trid,
   (cl_map_item_t *) smp);


 Are you seeing a hang?

I'm seeing endless loop.

 I have seen a hang when running iblinkinfo -S guid.

What do you mean hang? Endless loop?

 However, the  
 problem is not with send_smp.  I am seeing the mad going on the wire  
 and returning (according to madeye) but I am not receiving it from  
 umad_recv.  I don't know why.  If I run with 1 outstanding mad it  
 works???

Do you see this with current master (for me 'iblinkinfo -S' works fine,
but I have only two switches).

Sasha
--
To unsubscribe from this list: send the line unsubscribe linux-rdma in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] rdma/cm: Randomize local port allocation.

2010-04-16 Thread Tetsuo Handa
Cong Wang wrote:
 Sean Hefty wrote:
  I like this version, thanks!  I'm not sure which tree to merge it through.
  Are you needing this for 2.6.34, or is 2.6.35 okay?
  
 
 As soon as possible, so 2.6.34. :)
 
Cong, merge window for 2.6.34 was already closed.
You need to make your patchset towards 2.6.35 (using net-next-2.6 tree)
rather than 2.6.34 (using linux-2.6 tree). Therefore, this patch being
queued for 2.6.35 (through net-next-2.6 tree) should be okay for you.
--
To unsubscribe from this list: send the line unsubscribe linux-rdma in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] opensm/osm_dump.c: dump SL2VL tables

2010-04-16 Thread Jim Schutt
Hi Yevgeny,

If this patch is included on top of my torus-2QoS
patchset, you might want the addition below.

This is because my patchset causes SL2VL maps to
always be set when a routing engine registers its
intent to do so by providing an update_sl2vl() function,
without requiring opensm to be invoked with -Q.

So we want to dump SL2VL tables also in that case.

On Thu, 2010-03-25 at 09:56 -0600, Yevgeny Kliteynik wrote:
 Hi Sasha,
 
 Dumping SL2VL tables in ROUTING verbosity level when QoS is on.
 This is needed for SL2VL tables analysis in general, and for
 routing engines that are using IB VLs in particular, such as
 torus-2QoS.
 
 Signed-off-by: Yevgeny Kliteynik klit...@dev.mellanox.co.il
 ---
  opensm/opensm/osm_dump.c |   61 
 +-
  1 files changed, 60 insertions(+), 1 deletions(-)

[snip]

 @@ -630,6 +684,11 @@ void osm_dump_all(osm_opensm_t * osm)
   osm_dump_qmap_to_file(osm, opensm.mcfdbs,
 osm-subn.sw_guid_tbl,
 dump_mcast_routes, osm);
 + /* SL2VL tables */
 + if (osm-subn.opt.qos)

-   if (osm-subn.opt.qos)
+   if (osm-subn.opt.qos ||
+   (osm-routing_engine_used 
+osm-routing_engine_used-update_sl2vl))

 + osm_dump_qmap_to_file(osm, opensm-sl2vl.dump,
 +   osm-subn.port_guid_tbl,
 +   dump_sl2vl_tbl, osm);
   }
   osm_dump_qmap_to_file(osm, opensm-subnet.lst,
 osm-subn.node_guid_tbl, dump_topology_node,

Sorry for the delay in noticing this.

-- Jim



--
To unsubscribe from this list: send the line unsubscribe linux-rdma in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH v3 00/10] iw_cxgb4 driver submission

2010-04-16 Thread Steve Wise
Changes since version 2 of this series:

- termination fixes

- peer2peer fixes

--

The following series adds the iw_cxgb4 rdma driver for Chelsio's new
1G and 10G T4 adapters.   Please review and provide comments, and
I'll repost an updated patch series as I incorporate your feedback.

This series depends on the cxgb4 driver recently merged into:

git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6.git

You can find the final cxgb4 patch submission at:

http://www.spinics.net/lists/netdev/msg125898.html

The iw_cxgb4 patches are against the above net-2.6 tree as of cf16d7d.
You can also pull these from:

git://www.openfabrics.org/~swise/cxgb4.git iw_cxgb4

 drivers/infiniband/Kconfig|1 
 drivers/infiniband/Makefile   |1 
 drivers/infiniband/hw/cxgb4/Kconfig   |   19 
 drivers/infiniband/hw/cxgb4/Makefile  |5 
 drivers/infiniband/hw/cxgb4/cm.c  | 2348 +
 drivers/infiniband/hw/cxgb4/cq.c  |  882 +++
 drivers/infiniband/hw/cxgb4/device.c  |  520 ++
 drivers/infiniband/hw/cxgb4/ev.c  |  193 ++
 drivers/infiniband/hw/cxgb4/iw_cxgb4.h|  743 +
 drivers/infiniband/hw/cxgb4/mem.c |  811 ++
 drivers/infiniband/hw/cxgb4/provider.c|  518 ++
 drivers/infiniband/hw/cxgb4/qp.c  | 1575 +++
 drivers/infiniband/hw/cxgb4/resource.c|  417 +
 drivers/infiniband/hw/cxgb4/t4.h  |  536 +++
 drivers/infiniband/hw/cxgb4/t4fw_ri_api.h |  829 ++
 drivers/infiniband/hw/cxgb4/user.h|   66 +
 16 files changed, 9464 insertions(+), 0 deletions(-)
 create mode 100644 drivers/infiniband/hw/cxgb4/Kconfig
 create mode 100644 drivers/infiniband/hw/cxgb4/Makefile
 create mode 100644 drivers/infiniband/hw/cxgb4/cm.c
 create mode 100644 drivers/infiniband/hw/cxgb4/cq.c
 create mode 100644 drivers/infiniband/hw/cxgb4/device.c
 create mode 100644 drivers/infiniband/hw/cxgb4/ev.c
 create mode 100644 drivers/infiniband/hw/cxgb4/iw_cxgb4.h
 create mode 100644 drivers/infiniband/hw/cxgb4/mem.c
 create mode 100644 drivers/infiniband/hw/cxgb4/provider.c
 create mode 100644 drivers/infiniband/hw/cxgb4/qp.c
 create mode 100644 drivers/infiniband/hw/cxgb4/resource.c
 create mode 100644 drivers/infiniband/hw/cxgb4/t4.h
 create mode 100644 drivers/infiniband/hw/cxgb4/t4fw_ri_api.h
 create mode 100644 drivers/infiniband/hw/cxgb4/user.h

--
To unsubscribe from this list: send the line unsubscribe linux-rdma in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH v3 01/10] iw_cxgb4: Makefile and Kconfig files and changes.

2010-04-16 Thread Steve Wise
Signed-off-by: Steve Wise sw...@opengridcomputing.com
---

 drivers/infiniband/Kconfig   |1 +
 drivers/infiniband/Makefile  |1 +
 drivers/infiniband/hw/cxgb4/Kconfig  |   19 +++
 drivers/infiniband/hw/cxgb4/Makefile |5 +
 4 files changed, 26 insertions(+), 0 deletions(-)
 create mode 100644 drivers/infiniband/hw/cxgb4/Kconfig
 create mode 100644 drivers/infiniband/hw/cxgb4/Makefile

diff --git a/drivers/infiniband/Kconfig b/drivers/infiniband/Kconfig
index 975adce..330d2a4 100644
--- a/drivers/infiniband/Kconfig
+++ b/drivers/infiniband/Kconfig
@@ -46,6 +46,7 @@ source drivers/infiniband/hw/ipath/Kconfig
 source drivers/infiniband/hw/ehca/Kconfig
 source drivers/infiniband/hw/amso1100/Kconfig
 source drivers/infiniband/hw/cxgb3/Kconfig
+source drivers/infiniband/hw/cxgb4/Kconfig
 source drivers/infiniband/hw/mlx4/Kconfig
 source drivers/infiniband/hw/nes/Kconfig
 
diff --git a/drivers/infiniband/Makefile b/drivers/infiniband/Makefile
index ed35e44..0c4e589 100644
--- a/drivers/infiniband/Makefile
+++ b/drivers/infiniband/Makefile
@@ -4,6 +4,7 @@ obj-$(CONFIG_INFINIBAND_IPATH)  += hw/ipath/
 obj-$(CONFIG_INFINIBAND_EHCA)  += hw/ehca/
 obj-$(CONFIG_INFINIBAND_AMSO1100)  += hw/amso1100/
 obj-$(CONFIG_INFINIBAND_CXGB3) += hw/cxgb3/
+obj-$(CONFIG_INFINIBAND_CXGB4) += hw/cxgb4/
 obj-$(CONFIG_MLX4_INFINIBAND)  += hw/mlx4/
 obj-$(CONFIG_INFINIBAND_NES)   += hw/nes/
 obj-$(CONFIG_INFINIBAND_IPOIB) += ulp/ipoib/
diff --git a/drivers/infiniband/hw/cxgb4/Kconfig 
b/drivers/infiniband/hw/cxgb4/Kconfig
new file mode 100644
index 000..0f285af
--- /dev/null
+++ b/drivers/infiniband/hw/cxgb4/Kconfig
@@ -0,0 +1,19 @@
+config INFINIBAND_CXGB4
+   tristate Chelsio T4 RDMA Driver
+   depends on CHELSIO_T4  INET
+   select GENERIC_ALLOCATOR
+   ---help---
+ This is an iWARP/RDMA driver for the Chelsio T4 1GbE and
+ 10GbE adapters.
+
+ For general information about Chelsio and our products, visit
+ our website at http://www.chelsio.com.
+
+ For customer support, please visit our customer support page at
+ http://www.chelsio.com/support.htm.
+
+ Please send feedback to linux-b...@chelsio.com.
+
+ To compile this driver as a module, choose M here: the module
+ will be called iw_cxgb4.
+
diff --git a/drivers/infiniband/hw/cxgb4/Makefile 
b/drivers/infiniband/hw/cxgb4/Makefile
new file mode 100644
index 000..e31a499
--- /dev/null
+++ b/drivers/infiniband/hw/cxgb4/Makefile
@@ -0,0 +1,5 @@
+EXTRA_CFLAGS += -Idrivers/net/cxgb4
+
+obj-$(CONFIG_INFINIBAND_CXGB4) += iw_cxgb4.o
+
+iw_cxgb4-y :=  device.o cm.o provider.o mem.o cq.o qp.o resource.o ev.o

--
To unsubscribe from this list: send the line unsubscribe linux-rdma in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH v3 03/10] iw_cxgb4: Add module and low level device interface functions.

2010-04-16 Thread Steve Wise
Signed-off-by: Steve Wise sw...@opengridcomputing.com
---

 drivers/infiniband/hw/cxgb4/device.c |  520 ++
 1 files changed, 520 insertions(+), 0 deletions(-)
 create mode 100644 drivers/infiniband/hw/cxgb4/device.c

diff --git a/drivers/infiniband/hw/cxgb4/device.c 
b/drivers/infiniband/hw/cxgb4/device.c
new file mode 100644
index 000..be23b5e
--- /dev/null
+++ b/drivers/infiniband/hw/cxgb4/device.c
@@ -0,0 +1,520 @@
+/*
+ * Copyright (c) 2009-2010 Chelsio, Inc. All rights reserved.
+ *
+ * This software is available to you under a choice of one of two
+ * licenses.  You may choose to be licensed under the terms of the GNU
+ * General Public License (GPL) Version 2, available from the file
+ * COPYING in the main directory of this source tree, or the
+ * OpenIB.org BSD license below:
+ *
+ * Redistribution and use in source and binary forms, with or
+ * without modification, are permitted provided that the following
+ * conditions are met:
+ *
+ *  - Redistributions of source code must retain the above
+ *   copyright notice, this list of conditions and the following
+ *   disclaimer.
+ *
+ *  - Redistributions in binary form must reproduce the above
+ *   copyright notice, this list of conditions and the following
+ *   disclaimer in the documentation and/or other materials
+ *   provided with the distribution.
+ *
+ * THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+#include linux/module.h
+#include linux/moduleparam.h
+#include linux/debugfs.h
+
+#include rdma/ib_verbs.h
+
+#include iw_cxgb4.h
+
+#define DRV_VERSION 0.1
+
+MODULE_AUTHOR(Steve Wise);
+MODULE_DESCRIPTION(Chelsio T4 RDMA Driver);
+MODULE_LICENSE(Dual BSD/GPL);
+MODULE_VERSION(DRV_VERSION);
+
+static LIST_HEAD(dev_list);
+static DEFINE_MUTEX(dev_mutex);
+
+static struct dentry *c4iw_debugfs_root;
+
+struct debugfs_qp_data {
+   struct c4iw_dev *devp;
+   char *buf;
+   int bufsize;
+   int pos;
+};
+
+static int count_qps(int id, void *p, void *data)
+{
+   struct c4iw_qp *qp = p;
+   int *countp = data;
+
+   if (id != qp-wq.sq.qid)
+   return 0;
+
+   *countp = *countp + 1;
+   return 0;
+}
+
+static int dump_qps(int id, void *p, void *data)
+{
+   struct c4iw_qp *qp = p;
+   struct debugfs_qp_data *qpd = data;
+   int space;
+   int cc;
+
+   if (id != qp-wq.sq.qid)
+   return 0;
+
+   space = qpd-bufsize - qpd-pos - 1;
+   if (space == 0)
+   return 1;
+
+   if (qp-ep)
+   cc = snprintf(qpd-buf + qpd-pos, space, qp id %u state %u 
+ep tid %u state %u %pI4:%u-%pI4:%u\n,
+qp-wq.sq.qid, (int)qp-attr.state,
+qp-ep-hwtid, (int)qp-ep-com.state,
+qp-ep-com.local_addr.sin_addr.s_addr,
+ntohs(qp-ep-com.local_addr.sin_port),
+qp-ep-com.remote_addr.sin_addr.s_addr,
+ntohs(qp-ep-com.remote_addr.sin_port));
+   else
+   cc = snprintf(qpd-buf + qpd-pos, space, qp id %u state %u\n,
+ qp-wq.sq.qid, (int)qp-attr.state);
+   if (cc  space)
+   qpd-pos += cc;
+   return 0;
+}
+
+static int qp_release(struct inode *inode, struct file *file)
+{
+   struct debugfs_qp_data *qpd = file-private_data;
+   if (!qpd) {
+   printk(KERN_INFO %s null qpd?\n, __func__);
+   return 0;
+   }
+   kfree(qpd-buf);
+   kfree(qpd);
+   return 0;
+}
+
+static int qp_open(struct inode *inode, struct file *file)
+{
+   struct debugfs_qp_data *qpd;
+   int ret = 0;
+   int count = 1;
+
+   qpd = kmalloc(sizeof *qpd, GFP_KERNEL);
+   if (!qpd) {
+   ret = -ENOMEM;
+   goto out;
+   }
+   qpd-devp = inode-i_private;
+   qpd-pos = 0;
+
+   spin_lock_irq(qpd-devp-lock);
+   idr_for_each(qpd-devp-qpidr, count_qps, count);
+   spin_unlock_irq(qpd-devp-lock);
+
+   qpd-bufsize = count * 128;
+   qpd-buf = kmalloc(qpd-bufsize, GFP_KERNEL);
+   if (!qpd-buf) {
+   ret = -ENOMEM;
+   goto err1;
+   }
+
+   spin_lock_irq(qpd-devp-lock);
+   idr_for_each(qpd-devp-qpidr, dump_qps, qpd);
+   spin_unlock_irq(qpd-devp-lock);
+
+   qpd-buf[qpd-pos++] = 0;
+   file-private_data = qpd;
+   goto out;
+err1:
+   kfree(qpd);
+out:
+   

[PATCH v3 04/10] iw_cxgb4: Add rdma provider interface functions.

2010-04-16 Thread Steve Wise
Signed-off-by: Steve Wise sw...@opengridcomputing.com
---

 drivers/infiniband/hw/cxgb4/provider.c |  518 
 1 files changed, 518 insertions(+), 0 deletions(-)
 create mode 100644 drivers/infiniband/hw/cxgb4/provider.c

diff --git a/drivers/infiniband/hw/cxgb4/provider.c 
b/drivers/infiniband/hw/cxgb4/provider.c
new file mode 100644
index 000..3cb50af
--- /dev/null
+++ b/drivers/infiniband/hw/cxgb4/provider.c
@@ -0,0 +1,518 @@
+/*
+ * Copyright (c) 2009-2010 Chelsio, Inc. All rights reserved.
+ *
+ * This software is available to you under a choice of one of two
+ * licenses.  You may choose to be licensed under the terms of the GNU
+ * General Public License (GPL) Version 2, available from the file
+ * COPYING in the main directory of this source tree, or the
+ * OpenIB.org BSD license below:
+ *
+ * Redistribution and use in source and binary forms, with or
+ * without modification, are permitted provided that the following
+ * conditions are met:
+ *
+ *  - Redistributions of source code must retain the above
+ *copyright notice, this list of conditions and the following
+ *disclaimer.
+ *
+ *  - Redistributions in binary form must reproduce the above
+ *copyright notice, this list of conditions and the following
+ *disclaimer in the documentation and/or other materials
+ *provided with the distribution.
+ *
+ * THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+#include linux/module.h
+#include linux/moduleparam.h
+#include linux/device.h
+#include linux/netdevice.h
+#include linux/etherdevice.h
+#include linux/delay.h
+#include linux/errno.h
+#include linux/list.h
+#include linux/spinlock.h
+#include linux/ethtool.h
+#include linux/rtnetlink.h
+#include linux/inetdevice.h
+#include linux/io.h
+
+#include asm/irq.h
+#include asm/byteorder.h
+
+#include rdma/iw_cm.h
+#include rdma/ib_verbs.h
+#include rdma/ib_smi.h
+#include rdma/ib_umem.h
+#include rdma/ib_user_verbs.h
+
+#include iw_cxgb4.h
+
+static int fastreg_support;
+module_param(fastreg_support, int, 0644);
+MODULE_PARM_DESC(fastreg_support, Advertise fastreg support (default=0));
+
+static int c4iw_modify_port(struct ib_device *ibdev,
+   u8 port, int port_modify_mask,
+   struct ib_port_modify *props)
+{
+   return -ENOSYS;
+}
+
+static struct ib_ah *c4iw_ah_create(struct ib_pd *pd,
+   struct ib_ah_attr *ah_attr)
+{
+   return ERR_PTR(-ENOSYS);
+}
+
+static int c4iw_ah_destroy(struct ib_ah *ah)
+{
+   return -ENOSYS;
+}
+
+static int c4iw_multicast_attach(struct ib_qp *ibqp, union ib_gid *gid, u16 
lid)
+{
+   return -ENOSYS;
+}
+
+static int c4iw_multicast_detach(struct ib_qp *ibqp, union ib_gid *gid, u16 
lid)
+{
+   return -ENOSYS;
+}
+
+static int c4iw_process_mad(struct ib_device *ibdev, int mad_flags,
+   u8 port_num, struct ib_wc *in_wc,
+   struct ib_grh *in_grh, struct ib_mad *in_mad,
+   struct ib_mad *out_mad)
+{
+   return -ENOSYS;
+}
+
+static int c4iw_dealloc_ucontext(struct ib_ucontext *context)
+{
+   struct c4iw_dev *rhp = to_c4iw_dev(context-device);
+   struct c4iw_ucontext *ucontext = to_c4iw_ucontext(context);
+   struct c4iw_mm_entry *mm, *tmp;
+
+   PDBG(%s context %p\n, __func__, context);
+   list_for_each_entry_safe(mm, tmp, ucontext-mmaps, entry)
+   kfree(mm);
+   c4iw_release_dev_ucontext(rhp-rdev, ucontext-uctx);
+   kfree(ucontext);
+   return 0;
+}
+
+static struct ib_ucontext *c4iw_alloc_ucontext(struct ib_device *ibdev,
+  struct ib_udata *udata)
+{
+   struct c4iw_ucontext *context;
+   struct c4iw_dev *rhp = to_c4iw_dev(ibdev);
+
+   PDBG(%s ibdev %p\n, __func__, ibdev);
+   context = kzalloc(sizeof(*context), GFP_KERNEL);
+   if (!context)
+   return ERR_PTR(-ENOMEM);
+   c4iw_init_dev_ucontext(rhp-rdev, context-uctx);
+   INIT_LIST_HEAD(context-mmaps);
+   spin_lock_init(context-mmap_lock);
+   return context-ibucontext;
+}
+
+static int c4iw_mmap(struct ib_ucontext *context, struct vm_area_struct *vma)
+{
+   int len = vma-vm_end - vma-vm_start;
+   u32 key = vma-vm_pgoff  PAGE_SHIFT;
+   struct c4iw_rdev *rdev;
+   int ret = 0;
+   struct c4iw_mm_entry *mm;
+   struct c4iw_ucontext *ucontext;
+   u64 addr;
+
+   PDBG(%s pgoff 0x%lx key 

[PATCH v3 07/10] iw_cxgb4: Add CQ management functions.

2010-04-16 Thread Steve Wise
Signed-off-by: Steve Wise sw...@opengridcomputing.com
---

 drivers/infiniband/hw/cxgb4/cq.c |  882 ++
 1 files changed, 882 insertions(+), 0 deletions(-)
 create mode 100644 drivers/infiniband/hw/cxgb4/cq.c

diff --git a/drivers/infiniband/hw/cxgb4/cq.c b/drivers/infiniband/hw/cxgb4/cq.c
new file mode 100644
index 000..6b4b6f0
--- /dev/null
+++ b/drivers/infiniband/hw/cxgb4/cq.c
@@ -0,0 +1,882 @@
+/*
+ * Copyright (c) 2009-2010 Chelsio, Inc. All rights reserved.
+ *
+ * This software is available to you under a choice of one of two
+ * licenses.  You may choose to be licensed under the terms of the GNU
+ * General Public License (GPL) Version 2, available from the file
+ * COPYING in the main directory of this source tree, or the
+ * OpenIB.org BSD license below:
+ *
+ * Redistribution and use in source and binary forms, with or
+ * without modification, are permitted provided that the following
+ * conditions are met:
+ *
+ *  - Redistributions of source code must retain the above
+ *   copyright notice, this list of conditions and the following
+ *   disclaimer.
+ *
+ *  - Redistributions in binary form must reproduce the above
+ *   copyright notice, this list of conditions and the following
+ *   disclaimer in the documentation and/or other materials
+ *   provided with the distribution.
+ *
+ * THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#include iw_cxgb4.h
+
+static int destroy_cq(struct c4iw_rdev *rdev, struct t4_cq *cq,
+ struct c4iw_dev_ucontext *uctx)
+{
+   struct fw_ri_res_wr *res_wr;
+   struct fw_ri_res *res;
+   int wr_len;
+   struct c4iw_wr_wait wr_wait;
+   struct sk_buff *skb;
+   int ret;
+
+   wr_len = sizeof *res_wr + sizeof *res;
+   skb = alloc_skb(wr_len, GFP_KERNEL | __GFP_NOFAIL);
+   if (!skb)
+   return -ENOMEM;
+   set_wr_txq(skb, CPL_PRIORITY_CONTROL, 0);
+
+   res_wr = (struct fw_ri_res_wr *)__skb_put(skb, wr_len);
+   memset(res_wr, 0, wr_len);
+   res_wr-op_nres = cpu_to_be32(
+   FW_WR_OP(FW_RI_RES_WR) |
+   V_FW_RI_RES_WR_NRES(1) |
+   FW_WR_COMPL(1));
+   res_wr-len16_pkd = cpu_to_be32(DIV_ROUND_UP(wr_len, 16));
+   res_wr-cookie = (u64)wr_wait;
+   res = res_wr-res;
+   res-u.cq.restype = FW_RI_RES_TYPE_CQ;
+   res-u.cq.op = FW_RI_RES_OP_RESET;
+   res-u.cq.iqid = cpu_to_be32(cq-cqid);
+
+   c4iw_init_wr_wait(wr_wait);
+   ret = c4iw_ofld_send(rdev, skb);
+   if (!ret) {
+   wait_event_timeout(wr_wait.wait, wr_wait.done, C4IW_WR_TO);
+   if (!wr_wait.done) {
+   printk(KERN_ERR MOD Device %s not responding!\n,
+  pci_name(rdev-lldi.pdev));
+   rdev-flags = T4_FATAL_ERROR;
+   ret = -EIO;
+   } else
+   ret = wr_wait.ret;
+   }
+
+   kfree(cq-sw_queue);
+   dma_free_coherent((rdev-lldi.pdev-dev),
+ cq-memsize, cq-queue,
+ pci_unmap_addr(cq, mapping));
+   c4iw_put_cqid(rdev, cq-cqid, uctx);
+   return ret;
+}
+
+static int create_cq(struct c4iw_rdev *rdev, struct t4_cq *cq,
+struct c4iw_dev_ucontext *uctx)
+{
+   struct fw_ri_res_wr *res_wr;
+   struct fw_ri_res *res;
+   int wr_len;
+   int user = (uctx != rdev-uctx);
+   struct c4iw_wr_wait wr_wait;
+   int ret;
+   struct sk_buff *skb;
+
+   cq-cqid = c4iw_get_cqid(rdev, uctx);
+   if (!cq-cqid) {
+   ret = -ENOMEM;
+   goto err1;
+   }
+
+   if (!user) {
+   cq-sw_queue = kzalloc(cq-memsize, GFP_KERNEL);
+   if (!cq-sw_queue) {
+   ret = -ENOMEM;
+   goto err2;
+   }
+   }
+   cq-queue = dma_alloc_coherent(rdev-lldi.pdev-dev, cq-memsize,
+  cq-dma_addr, GFP_KERNEL);
+   if (!cq-queue) {
+   ret = -ENOMEM;
+   goto err3;
+   }
+   pci_unmap_addr_set(cq, mapping, cq-dma_addr);
+   memset(cq-queue, 0, cq-memsize);
+
+   /* build fw_ri_res_wr */
+   wr_len = sizeof *res_wr + sizeof *res;
+
+   skb = alloc_skb(wr_len, GFP_KERNEL | __GFP_NOFAIL);
+   if (!skb) {
+   ret = -ENOMEM;
+   goto err4;
+   }
+   set_wr_txq(skb, 

[PATCH v3 08/10] iw_cxgb4: Add QP management functions.

2010-04-16 Thread Steve Wise
Signed-off-by: Steve Wise sw...@opengridcomputing.com
---

 drivers/infiniband/hw/cxgb4/qp.c | 1575 ++
 1 files changed, 1575 insertions(+), 0 deletions(-)
 create mode 100644 drivers/infiniband/hw/cxgb4/qp.c

diff --git a/drivers/infiniband/hw/cxgb4/qp.c b/drivers/infiniband/hw/cxgb4/qp.c
new file mode 100644
index 000..999734b
--- /dev/null
+++ b/drivers/infiniband/hw/cxgb4/qp.c
@@ -0,0 +1,1575 @@
+/*
+ * Copyright (c) 2009-2010 Chelsio, Inc. All rights reserved.
+ *
+ * This software is available to you under a choice of one of two
+ * licenses.  You may choose to be licensed under the terms of the GNU
+ * General Public License (GPL) Version 2, available from the file
+ * COPYING in the main directory of this source tree, or the
+ * OpenIB.org BSD license below:
+ *
+ * Redistribution and use in source and binary forms, with or
+ * without modification, are permitted provided that the following
+ * conditions are met:
+ *
+ *  - Redistributions of source code must retain the above
+ *copyright notice, this list of conditions and the following
+ *disclaimer.
+ *
+ *  - Redistributions in binary form must reproduce the above
+ *copyright notice, this list of conditions and the following
+ *disclaimer in the documentation and/or other materials
+ *provided with the distribution.
+ *
+ * THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+#include iw_cxgb4.h
+
+static int destroy_qp(struct c4iw_rdev *rdev, struct t4_wq *wq,
+ struct c4iw_dev_ucontext *uctx)
+{
+   /*
+* uP clears EQ contexts when the connection exits rdma mode,
+* so no need to post a RESET WR for these EQs.
+*/
+   dma_free_coherent((rdev-lldi.pdev-dev),
+ wq-rq.memsize, wq-rq.queue,
+ pci_unmap_addr(wq-rq, mapping));
+   dma_free_coherent((rdev-lldi.pdev-dev),
+ wq-sq.memsize, wq-sq.queue,
+ pci_unmap_addr(wq-sq, mapping));
+   c4iw_rqtpool_free(rdev, wq-rq.rqt_hwaddr, wq-rq.rqt_size);
+   kfree(wq-rq.sw_rq);
+   kfree(wq-sq.sw_sq);
+   c4iw_put_qpid(rdev, wq-rq.qid, uctx);
+   c4iw_put_qpid(rdev, wq-sq.qid, uctx);
+   return 0;
+}
+
+static int create_qp(struct c4iw_rdev *rdev, struct t4_wq *wq,
+struct t4_cq *rcq, struct t4_cq *scq,
+struct c4iw_dev_ucontext *uctx)
+{
+   int user = (uctx != rdev-uctx);
+   struct fw_ri_res_wr *res_wr;
+   struct fw_ri_res *res;
+   int wr_len;
+   struct c4iw_wr_wait wr_wait;
+   struct sk_buff *skb;
+   int ret;
+   int eqsize;
+
+   wq-sq.qid = c4iw_get_qpid(rdev, uctx);
+   if (!wq-sq.qid)
+   return -ENOMEM;
+
+   wq-rq.qid = c4iw_get_qpid(rdev, uctx);
+   if (!wq-rq.qid)
+   goto err1;
+
+   if (!user) {
+   wq-sq.sw_sq = kzalloc(wq-sq.size * sizeof *wq-sq.sw_sq,
+GFP_KERNEL);
+   if (!wq-sq.sw_sq)
+   goto err2;
+
+   wq-rq.sw_rq = kzalloc(wq-rq.size * sizeof *wq-rq.sw_rq,
+GFP_KERNEL);
+   if (!wq-rq.sw_rq)
+   goto err3;
+   }
+
+   /*
+* RQT must be a power of 2.
+*/
+   wq-rq.rqt_size = roundup_pow_of_two(wq-rq.size);
+   wq-rq.rqt_hwaddr = c4iw_rqtpool_alloc(rdev, wq-rq.rqt_size);
+   if (!wq-rq.rqt_hwaddr)
+   goto err4;
+
+   wq-sq.queue = dma_alloc_coherent((rdev-lldi.pdev-dev),
+ wq-sq.memsize, (wq-sq.dma_addr),
+ GFP_KERNEL);
+   if (!wq-sq.queue)
+   goto err5;
+   memset(wq-sq.queue, 0, wq-sq.memsize);
+   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),
+ GFP_KERNEL);
+   if (!wq-rq.queue)
+   goto err6;
+   PDBG(%s sq base va 0x%p pa 0x%llx rq base va 0x%p pa 0x%llx\n,
+   __func__, wq-sq.queue, virt_to_phys(wq-sq.queue),
+   wq-rq.queue, virt_to_phys(wq-rq.queue));
+   memset(wq-rq.queue, 0, wq-rq.memsize);
+   pci_unmap_addr_set(wq-rq, mapping, wq-rq.dma_addr);
+
+   wq-db = rdev-lldi.db_reg;
+   wq-gts = 

[PATCH v3 09/10] iw_cxgb4: Add event management functions.

2010-04-16 Thread Steve Wise
Signed-off-by: Steve Wise sw...@opengridcomputing.com
---

 drivers/infiniband/hw/cxgb4/ev.c |  193 ++
 1 files changed, 193 insertions(+), 0 deletions(-)
 create mode 100644 drivers/infiniband/hw/cxgb4/ev.c

diff --git a/drivers/infiniband/hw/cxgb4/ev.c b/drivers/infiniband/hw/cxgb4/ev.c
new file mode 100644
index 000..1bd6a3e
--- /dev/null
+++ b/drivers/infiniband/hw/cxgb4/ev.c
@@ -0,0 +1,193 @@
+/*
+ * Copyright (c) 2009-2010 Chelsio, Inc. All rights reserved.
+ *
+ * This software is available to you under a choice of one of two
+ * licenses.  You may choose to be licensed under the terms of the GNU
+ * General Public License (GPL) Version 2, available from the file
+ * COPYING in the main directory of this source tree, or the
+ * OpenIB.org BSD license below:
+ *
+ * Redistribution and use in source and binary forms, with or
+ * without modification, are permitted provided that the following
+ * conditions are met:
+ *
+ *  - Redistributions of source code must retain the above
+ *copyright notice, this list of conditions and the following
+ *disclaimer.
+ *
+ *  - Redistributions in binary form must reproduce the above
+ *copyright notice, this list of conditions and the following
+ *disclaimer in the documentation and/or other materials
+ *provided with the distribution.
+ *
+ * THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+#include linux/slab.h
+#include linux/mman.h
+#include net/sock.h
+
+#include iw_cxgb4.h
+
+static void post_qp_event(struct c4iw_dev *dev, struct c4iw_cq *chp,
+ struct c4iw_qp *qhp,
+ struct t4_cqe *err_cqe,
+ enum ib_event_type ib_event)
+{
+   struct ib_event event;
+   struct c4iw_qp_attributes attrs;
+
+   if ((qhp-attr.state == C4IW_QP_STATE_ERROR) ||
+   (qhp-attr.state == C4IW_QP_STATE_TERMINATE)) {
+   PDBG(%s AE received after RTS - 
+qp state %d qpid 0x%x status 0x%x\n, __func__,
+qhp-attr.state, qhp-wq.sq.qid, CQE_STATUS(err_cqe));
+   return;
+   }
+
+   printk(KERN_ERR %s - AE qpid 0x%x opcode %d status 0x%x 
+  type %d wrid.hi 0x%x wrid.lo 0x%x\n, __func__,
+  CQE_QPID(err_cqe), CQE_OPCODE(err_cqe),
+  CQE_STATUS(err_cqe), CQE_TYPE(err_cqe),
+  CQE_WRID_HI(err_cqe), CQE_WRID_LOW(err_cqe));
+
+   if (qhp-attr.state == C4IW_QP_STATE_RTS) {
+   attrs.next_state = C4IW_QP_STATE_TERMINATE;
+   c4iw_modify_qp(qhp-rhp, qhp, C4IW_QP_ATTR_NEXT_STATE,
+  attrs, 0);
+   }
+
+   event.event = ib_event;
+   event.device = chp-ibcq.device;
+   if (ib_event == IB_EVENT_CQ_ERR)
+   event.element.cq = chp-ibcq;
+   else
+   event.element.qp = qhp-ibqp;
+   if (qhp-ibqp.event_handler)
+   (*qhp-ibqp.event_handler)(event, qhp-ibqp.qp_context);
+
+   (*chp-ibcq.comp_handler)(chp-ibcq, chp-ibcq.cq_context);
+}
+
+void c4iw_ev_dispatch(struct c4iw_dev *dev, struct t4_cqe *err_cqe)
+{
+   struct c4iw_cq *chp;
+   struct c4iw_qp *qhp;
+   u32 cqid;
+
+   spin_lock(dev-lock);
+   qhp = get_qhp(dev, CQE_QPID(err_cqe));
+   if (!qhp) {
+   printk(KERN_ERR MOD BAD AE qpid 0x%x opcode %d 
+  status 0x%x type %d wrid.hi 0x%x wrid.lo 0x%x\n,
+  CQE_QPID(err_cqe),
+  CQE_OPCODE(err_cqe), CQE_STATUS(err_cqe),
+  CQE_TYPE(err_cqe), CQE_WRID_HI(err_cqe),
+  CQE_WRID_LOW(err_cqe));
+   spin_unlock(dev-lock);
+   goto out;
+   }
+
+   if (SQ_TYPE(err_cqe))
+   cqid = qhp-attr.scq;
+   else
+   cqid = qhp-attr.rcq;
+   chp = get_chp(dev, cqid);
+   if (!chp) {
+   printk(KERN_ERR MOD BAD AE cqid 0x%x qpid 0x%x opcode %d 
+  status 0x%x type %d wrid.hi 0x%x wrid.lo 0x%x\n,
+  cqid, CQE_QPID(err_cqe),
+  CQE_OPCODE(err_cqe), CQE_STATUS(err_cqe),
+  CQE_TYPE(err_cqe), CQE_WRID_HI(err_cqe),
+  CQE_WRID_LOW(err_cqe));
+   spin_unlock(dev-lock);
+   goto out;
+   }
+
+   c4iw_qp_add_ref(qhp-ibqp);
+   atomic_inc(chp-refcnt);
+   spin_unlock(dev-lock);
+
+   /* Bad incoming write */
+   

[PATCH v3 10/10] iw_cxgb4: Add id and hw resource management functions.

2010-04-16 Thread Steve Wise
Signed-off-by: Steve Wise sw...@opengridcomputing.com
---

 drivers/infiniband/hw/cxgb4/resource.c |  417 
 1 files changed, 417 insertions(+), 0 deletions(-)
 create mode 100644 drivers/infiniband/hw/cxgb4/resource.c

diff --git a/drivers/infiniband/hw/cxgb4/resource.c 
b/drivers/infiniband/hw/cxgb4/resource.c
new file mode 100644
index 000..fb195d1
--- /dev/null
+++ b/drivers/infiniband/hw/cxgb4/resource.c
@@ -0,0 +1,417 @@
+/*
+ * Copyright (c) 2009-2010 Chelsio, Inc. All rights reserved.
+ *
+ * This software is available to you under a choice of one of two
+ * licenses.  You may choose to be licensed under the terms of the GNU
+ * General Public License (GPL) Version 2, available from the file
+ * COPYING in the main directory of this source tree, or the
+ * OpenIB.org BSD license below:
+ *
+ * Redistribution and use in source and binary forms, with or
+ * without modification, are permitted provided that the following
+ * conditions are met:
+ *
+ *  - Redistributions of source code must retain the above
+ *copyright notice, this list of conditions and the following
+ *disclaimer.
+ *
+ *  - Redistributions in binary form must reproduce the above
+ *copyright notice, this list of conditions and the following
+ *disclaimer in the documentation and/or other materials
+ *provided with the distribution.
+ *
+ * THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+/* Crude resource management */
+#include linux/kernel.h
+#include linux/random.h
+#include linux/slab.h
+#include linux/kfifo.h
+#include linux/spinlock.h
+#include linux/errno.h
+#include linux/genalloc.h
+#include iw_cxgb4.h
+
+#define RANDOM_SIZE 16
+
+static int __c4iw_init_resource_fifo(struct kfifo *fifo,
+  spinlock_t *fifo_lock,
+  u32 nr, u32 skip_low,
+  u32 skip_high,
+  int random)
+{
+   u32 i, j, entry = 0, idx;
+   u32 random_bytes;
+   u32 rarray[16];
+   spin_lock_init(fifo_lock);
+
+   if (kfifo_alloc(fifo, nr * sizeof(u32), GFP_KERNEL))
+   return -ENOMEM;
+
+   for (i = 0; i  skip_low + skip_high; i++)
+   kfifo_in(fifo, (unsigned char *) entry, sizeof(u32));
+   if (random) {
+   j = 0;
+   random_bytes = random32();
+   for (i = 0; i  RANDOM_SIZE; i++)
+   rarray[i] = i + skip_low;
+   for (i = skip_low + RANDOM_SIZE; i  nr - skip_high; i++) {
+   if (j = RANDOM_SIZE) {
+   j = 0;
+   random_bytes = random32();
+   }
+   idx = (random_bytes  (j * 2))  0xF;
+   kfifo_in(fifo,
+   (unsigned char *) rarray[idx],
+   sizeof(u32));
+   rarray[idx] = i;
+   j++;
+   }
+   for (i = 0; i  RANDOM_SIZE; i++)
+   kfifo_in(fifo,
+   (unsigned char *) rarray[i],
+   sizeof(u32));
+   } else
+   for (i = skip_low; i  nr - skip_high; i++)
+   kfifo_in(fifo, (unsigned char *) i, sizeof(u32));
+
+   for (i = 0; i  skip_low + skip_high; i++)
+   if (kfifo_out_locked(fifo, (unsigned char *) entry,
+sizeof(u32), fifo_lock))
+   break;
+   return 0;
+}
+
+static int c4iw_init_resource_fifo(struct kfifo *fifo, spinlock_t * fifo_lock,
+  u32 nr, u32 skip_low, u32 skip_high)
+{
+   return __c4iw_init_resource_fifo(fifo, fifo_lock, nr, skip_low,
+ skip_high, 0);
+}
+
+static int c4iw_init_resource_fifo_random(struct kfifo *fifo,
+  spinlock_t *fifo_lock,
+  u32 nr, u32 skip_low, u32 skip_high)
+{
+   return __c4iw_init_resource_fifo(fifo, fifo_lock, nr, skip_low,
+ skip_high, 1);
+}
+
+static int c4iw_init_qid_fifo(struct c4iw_rdev *rdev)
+{
+   u32 i;
+
+   spin_lock_init(rdev-resource.qid_fifo_lock);
+
+   if (kfifo_alloc(rdev-resource.qid_fifo, T4_MAX_QIDS * sizeof(u32),
+   GFP_KERNEL))
+   return -ENOMEM;
+
+ 

Re: [PATCH v3 00/10] iw_cxgb4 driver submission

2010-04-16 Thread Steve Wise

Hey Roland,

I'll be off line next week, returning on 4/26.  I'll address any 
comments/issues when I return.


Thanks!


Steve.


Steve Wise wrote:

Changes since version 2 of this series:

- termination fixes

- peer2peer fixes

--

The following series adds the iw_cxgb4 rdma driver for Chelsio's new
1G and 10G T4 adapters.   Please review and provide comments, and
I'll repost an updated patch series as I incorporate your feedback.

This series depends on the cxgb4 driver recently merged into:

git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6.git

You can find the final cxgb4 patch submission at:

http://www.spinics.net/lists/netdev/msg125898.html

The iw_cxgb4 patches are against the above net-2.6 tree as of cf16d7d.
You can also pull these from:

git://www.openfabrics.org/~swise/cxgb4.git iw_cxgb4

 drivers/infiniband/Kconfig|1 
 drivers/infiniband/Makefile   |1 
 drivers/infiniband/hw/cxgb4/Kconfig   |   19 
 drivers/infiniband/hw/cxgb4/Makefile  |5 
 drivers/infiniband/hw/cxgb4/cm.c  | 2348 +

 drivers/infiniband/hw/cxgb4/cq.c  |  882 +++
 drivers/infiniband/hw/cxgb4/device.c  |  520 ++
 drivers/infiniband/hw/cxgb4/ev.c  |  193 ++
 drivers/infiniband/hw/cxgb4/iw_cxgb4.h|  743 +
 drivers/infiniband/hw/cxgb4/mem.c |  811 ++
 drivers/infiniband/hw/cxgb4/provider.c|  518 ++
 drivers/infiniband/hw/cxgb4/qp.c  | 1575 +++
 drivers/infiniband/hw/cxgb4/resource.c|  417 +
 drivers/infiniband/hw/cxgb4/t4.h  |  536 +++
 drivers/infiniband/hw/cxgb4/t4fw_ri_api.h |  829 ++
 drivers/infiniband/hw/cxgb4/user.h|   66 +
 16 files changed, 9464 insertions(+), 0 deletions(-)
 create mode 100644 drivers/infiniband/hw/cxgb4/Kconfig
 create mode 100644 drivers/infiniband/hw/cxgb4/Makefile
 create mode 100644 drivers/infiniband/hw/cxgb4/cm.c
 create mode 100644 drivers/infiniband/hw/cxgb4/cq.c
 create mode 100644 drivers/infiniband/hw/cxgb4/device.c
 create mode 100644 drivers/infiniband/hw/cxgb4/ev.c
 create mode 100644 drivers/infiniband/hw/cxgb4/iw_cxgb4.h
 create mode 100644 drivers/infiniband/hw/cxgb4/mem.c
 create mode 100644 drivers/infiniband/hw/cxgb4/provider.c
 create mode 100644 drivers/infiniband/hw/cxgb4/qp.c
 create mode 100644 drivers/infiniband/hw/cxgb4/resource.c
 create mode 100644 drivers/infiniband/hw/cxgb4/t4.h
 create mode 100644 drivers/infiniband/hw/cxgb4/t4fw_ri_api.h
 create mode 100644 drivers/infiniband/hw/cxgb4/user.h

--
To unsubscribe from this list: send the line unsubscribe linux-rdma in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
  


--
To unsubscribe from this list: send the line unsubscribe linux-rdma in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] rdma/cm: Randomize local port allocation.

2010-04-16 Thread David Miller
From: Tetsuo Handa penguin-ker...@i-love.sakura.ne.jp
Date: Fri, 16 Apr 2010 22:54:22 +0900

 Cong Wang wrote:
 Sean Hefty wrote:
  I like this version, thanks!  I'm not sure which tree to merge it through.
  Are you needing this for 2.6.34, or is 2.6.35 okay?
  
 
 As soon as possible, so 2.6.34. :)
 
 Cong, merge window for 2.6.34 was already closed.
 You need to make your patchset towards 2.6.35 (using net-next-2.6 tree)
 rather than 2.6.34 (using linux-2.6 tree). Therefore, this patch being
 queued for 2.6.35 (through net-next-2.6 tree) should be okay for you.

I don't take RDMA patches into net-next-2.6, the less I touch this
stack avoiding stuff the better and Roland has been taking this stuff
into his own tree for some time now.
--
To unsubscribe from this list: send the line unsubscribe linux-rdma in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html