[openib-general] [PATCH v2 14/14] CXGB3 Low Level Driver ULP Interface

Steve Wise swise at opengridcomputing.com
Fri Jun 23 07:30:36 PDT 2006


This is all I'm submitting from the LLD/NETDEV driver. These headers
define the interface used by the other modules to discover devices and
communicate with the device.

The entire LLD driver can be found in
gen2/branches/iwarp/src/linux-kernel/net/cxgb3
---

 drivers/net/cxgb3/t3_core.h |   45 ++++++++++++++++++++++++++++
 drivers/net/cxgb3/t3cdev.h  |   69 +++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 114 insertions(+), 0 deletions(-)

diff --git a/drivers/net/cxgb3/t3_core.h b/drivers/net/cxgb3/t3_core.h
new file mode 100644
index 0000000..1ce076a
--- /dev/null
+++ b/drivers/net/cxgb3/t3_core.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2003-2006 Chelsio Communications.  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.
+ */
+#ifndef _T3_CORE_H_
+#define _T3_CORE_H_
+#include <linux/skbuff.h>
+
+struct t3cdev;
+struct t3_core {
+	void	(*add) (struct t3cdev *);
+        void	(*remove) (struct t3cdev *);
+};
+
+extern struct t3_core *t3_core;
+void t3_register_core(struct t3_core *core);
+void t3_unregister_core(struct t3_core *core);
+#endif
diff --git a/drivers/net/cxgb3/t3cdev.h b/drivers/net/cxgb3/t3cdev.h
new file mode 100644
index 0000000..7bc2df6
--- /dev/null
+++ b/drivers/net/cxgb3/t3cdev.h
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2003-2006 Chelsio Communications.  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.
+ */
+#ifndef _T3CDEV_H_
+#define _T3CDEV_H_
+
+#include <linux/list.h>
+#include <asm/atomic.h>
+#include <asm/semaphore.h>
+#include <linux/netdevice.h>
+#include <linux/proc_fs.h>
+#include <linux/skbuff.h>
+#include <net/neighbour.h>
+#include <net/sock.h>
+
+#define T3CNAMSIZ 16
+
+#define NETIF_F_TCPIP_OFFLOAD (1 << 16)
+
+/* Get the t3cdev associated with a net_device */
+#define T3CDEV(netdev) (*(struct t3cdev **)&(netdev)->ec_ptr)
+
+struct t3cdev {
+	char name[T3CNAMSIZ];               /* T3C device name */
+	struct list_head t3c_list;          /* for list linking */
+	struct net_device *lldev;   /* LL dev associated with T3C messages */
+	struct proc_dir_entry *proc_dir;    /* root of proc dir for this T3C */
+	int (*open)(struct t3cdev *dev);
+	int (*close)(struct t3cdev *dev);
+	int (*send)(struct t3cdev *dev, struct sk_buff *skb);
+	int (*recv)(struct t3cdev *dev, struct sk_buff **skb, int n);
+	int (*ctl)(struct t3cdev *dev, unsigned int req, void *data);
+	void (*neigh_update)(struct t3cdev *dev, struct neighbour *neigh, 
+			     int fl, struct net_device *lldev);
+	void *priv;                         /* driver private data */
+	void *l2opt;                        /* optional layer 2 data */
+	void *l3opt;                        /* optional layer 3 data */
+	void *l4opt;                        /* optional layer 4 data */
+	void *ulp;			    /* ulp stuff */
+};
+#endif /* _T3CDEV_H_ */




More information about the general mailing list