[openib-general] [PATCH] new CM test utility
Sean Hefty
mshefty at ichips.intel.com
Thu Dec 16 11:58:46 PST 2004
This patch adds in a new test utility framework for CM development.
It's currently located in the gen2/utils directory.
I will commit this change unless there are any objections.
- Sean
Index: util/cmpost/Kconfig
===================================================================
--- util/cmpost/Kconfig (revision 0)
+++ util/cmpost/Kconfig (revision 0)
@@ -0,0 +1,6 @@
+config INFINIBAND_CMPOST
+ tristate "Connection manager test utility for InfiniBand"
+ depends on INFINIBAND
+ ---help---
+ Test module for Infiniband connection manager.
+
Index: util/cmpost/cmpost.c
===================================================================
--- util/cmpost/cmpost.c (revision 0)
+++ util/cmpost/cmpost.c (revision 0)
@@ -0,0 +1,100 @@
+/*
+ * 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 at
+ * <http://www.fsf.org/copyleft/gpl.html>, or the OpenIB.org BSD
+ * license, available in the LICENSE.TXT file accompanying this
+ * software. These details are also available at
+ * <http://openib.org/license.html>.
+ *
+ * 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.
+ *
+ * Copyright (c) 2004 Intel Corporation. All rights reserved.
+ *
+ * $Id$
+ */
+
+#include <linux/module.h>
+#include <linux/device.h>
+#include <linux/err.h>
+
+#include <ib_cm.h>
+
+MODULE_AUTHOR("Sean Hefty");
+MODULE_DESCRIPTION("InfiniBand CM test utility");
+MODULE_LICENSE("Dual BSD/GPL");
+
+static void cmpost_remove_one(struct ib_device *device);
+static void cmpost_add_one(struct ib_device *device);
+
+static struct ib_client cmpost_client = {
+ .name = "cmpost",
+ .add = cmpost_add_one,
+ .remove = cmpost_remove_one
+};
+
+struct cmpost_port {
+ struct ib_cm_id *listen_cm_id;
+ struct ib_cm_id *conn_cm_id;
+};
+
+void cm_handler(struct ib_cm_id *cm_id, struct ib_cm_event *event)
+{
+}
+
+static void cmpost_add_one(struct ib_device *device)
+{
+ struct cmpost_port *port;
+ int i;
+
+ port = kmalloc(sizeof *port * device->phys_port_cnt, GFP_KERNEL);
+ if (!port)
+ goto out;
+
+ for (i = 1; i <= device->phys_port_cnt; i++) {
+ port[i].listen_cm_id = ib_create_cm_id(cm_handler, &port[i]);
+ port[i].conn_cm_id = ib_create_cm_id(cm_handler, &port[i]);
+ }
+
+out:
+ ib_set_client_data(device, &cmpost_client, port);
+}
+
+static void cmpost_remove_one(struct ib_device *device)
+{
+ struct cmpost_port *port;
+ int i;
+
+ port = (struct cmpost_port *)
+ ib_get_client_data(device, &cmpost_client);
+ if (!port)
+ return;
+
+ for (i = 1; i <= device->phys_port_cnt; i++) {
+ if (!IS_ERR(port[i].listen_cm_id))
+ ib_destroy_cm_id(port[i].listen_cm_id);
+ if (!IS_ERR(port[i].conn_cm_id))
+ ib_destroy_cm_id(port[i].conn_cm_id);
+ }
+ kfree(port);
+}
+
+static int __init ib_cmpost_init(void)
+{
+ return ib_register_client(&cmpost_client);
+}
+
+static void __exit ib_cmpost_cleanup(void)
+{
+ ib_unregister_client(&cmpost_client);
+}
+
+module_init(ib_cmpost_init);
+module_exit(ib_cmpost_cleanup);
Index: util/cmpost/Makefile
===================================================================
--- util/cmpost/Makefile (revision 0)
+++ util/cmpost/Makefile (revision 0)
@@ -0,0 +1,6 @@
+EXTRA_CFLAGS += -Idrivers/infiniband/include
+
+obj-$(CONFIG_INFINIBAND_CMPOST) += ib_cmpost.o
+
+ib_cmpost-y := cmpost.o \
+
More information about the general
mailing list