PERFORCE change 118860 for review

Kip Macy kmacy at FreeBSD.org
Fri Apr 27 06:44:21 UTC 2007


http://perforce.freebsd.org/chv.cgi?CH=118860

Change 118860 by kmacy at kmacy_vt-x:opentoe_init on 2007/04/27 06:43:52

	switch to todev definition in toecore

Affected files ...

.. //depot/projects/opentoe/sys/dev/cxgb/cxgb_adapter.h#14 edit
.. //depot/projects/opentoe/sys/dev/cxgb/cxgb_l2t.h#5 edit
.. //depot/projects/opentoe/sys/dev/cxgb/cxgb_main.c#8 edit
.. //depot/projects/opentoe/sys/dev/cxgb/cxgb_offload.h#8 edit
.. //depot/projects/opentoe/sys/dev/cxgb/cxgb_toedev.h#7 delete
.. //depot/projects/opentoe/sys/dev/cxgb/ulp/toecore/toedev.h#2 edit

Differences ...

==== //depot/projects/opentoe/sys/dev/cxgb/cxgb_adapter.h#14 (text+ko) ====

@@ -59,7 +59,7 @@
 #include <dev/pci/pcireg.h>
 #include <dev/pci/pcivar.h>
 
-#include <dev/cxgb/cxgb_toedev.h>
+#include <dev/cxgb/ulp/toecore/toedev.h>
 struct adapter;
 struct sge_qset;
 extern int cxgb_debug;

==== //depot/projects/opentoe/sys/dev/cxgb/cxgb_l2t.h#5 (text+ko) ====

@@ -1,7 +1,7 @@
 #ifndef _CHELSIO_L2T_H
 #define _CHELSIO_L2T_H
 
-#include <dev/cxgb/cxgb_toedev.h>
+#include <dev/cxgb/ulp/toecore/toedev.h>
 #include <sys/rwlock.h>
 
 enum {

==== //depot/projects/opentoe/sys/dev/cxgb/cxgb_main.c#8 (text+ko) ====

@@ -188,10 +188,6 @@
 SYSCTL_NODE(_hw, OID_AUTO, cxgb, CTLFLAG_RD, 0, "CXGB driver parameters");
 SYSCTL_UINT(_hw_cxgb, OID_AUTO, msi_allowed, CTLFLAG_RDTUN, &msi_allowed, 0,
     "MSI-X, MSI, INTx selector");
-/*
- * Multiple queues need further tuning
- */
-static int singleq = 1;
 
 /*
  * The driver enables offload as a default.
@@ -206,7 +202,7 @@
  * The driver uses an auto-queue algorithm by default.
  * To disable it and force a single queue-set per port, use singleq = 1.
  */
-static int singleq = 0;
+static int singleq = 1;
 TUNABLE_INT("hw.cxgb.singleq", &singleq);
 SYSCTL_UINT(_hw_cxgb, OID_AUTO, singleq, CTLFLAG_RDTUN, &singleq, 0,
     "use a single queue-set per port");

==== //depot/projects/opentoe/sys/dev/cxgb/cxgb_offload.h#8 (text+ko) ====

@@ -41,7 +41,7 @@
 #include <dev/cxgb/common/cxgb_tcb.h>
 #include <dev/cxgb/cxgb_l2t.h>
 
-#include <dev/cxgb/cxgb_toedev.h>
+#include <dev/cxgb/ulp/toecore/toedev.h>
 #include <dev/cxgb/common/cxgb_t3_cpl.h>
 
 struct adapter;

==== //depot/projects/opentoe/sys/dev/cxgb/ulp/toecore/toedev.h#2 (text+ko) ====

@@ -1,29 +1,41 @@
-/*
- * Network offload device definitions.
- *
- * Copyright (C) 2003-2006 Chelsio Communications.  All rights reserved.
- *
- * Written by Dimitris Michailidis (dm at chelsio.com)
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 59
- * Temple Place - Suite 330, Boston, MA  02111-1307, USA.
- */
+
+/**************************************************************************
+
+Copyright (c) 2007, Chelsio Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+    this list of conditions and the following disclaimer.
+
+ 2. 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.
+
+ 3. Neither the name of the Chelsio Corporation nor the names of its
+    contributors may be used to endorse or promote products derived from
+    this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+$FreeBSD$
 
+***************************************************************************/
 #ifndef _OFFLOAD_DEV_H_
 #define _OFFLOAD_DEV_H_
 
-struct neighbour;
 
 /* Parameter values for offload_get_phys_egress() */
 enum {
@@ -40,16 +52,14 @@
 	TOE_RELEASE_ALL,
 };
 
-#if defined(CONFIG_TCP_OFFLOAD) || defined(CONFIG_TCP_OFFLOAD_MODULE)
-#include <linux/list.h>
 
 #define TOENAMSIZ 16
 
 /* belongs in linux/netdevice.h */
 #define NETIF_F_TCPIP_OFFLOAD (1 << 15)
 
-/* Get the toedev associated with a net_device */
-#define TOEDEV(netdev) (*(struct toedev **)&(netdev)->ec_ptr)
+/* Get the toedev associated with a ifnet */
+#define TOEDEV(netdev) (*(struct toedev **)&(netdev)->if_softc)
 
 /* offload type ids */
 enum {
@@ -65,33 +75,41 @@
 	unsigned long data;
 };
 
-struct net_device;
+struct ifnet;
+struct rt_entry;
 struct tom_info;
-struct proc_dir_entry;
-struct sock;
-struct sk_buff;
+struct sysctl_oid;
+struct socket;
+struct mbuf;
+
+enum toetype {
+        T3A = 0,
+        T3B
+};
 
 struct toedev {
 	char name[TOENAMSIZ];       /* TOE device name */
-	struct list_head toe_list;  /* for list linking */
+	enum toetype type;
+	struct adapter *adapter;
 	unsigned int ttid;          /* TOE type id */
 	unsigned long flags;        /* device flags */
 	unsigned int mtu;           /* max size of TX offloaded data */
 	unsigned int nconn;         /* max # of offloaded connections */
-	struct net_device *lldev;   /* LL device associated with TOE messages */
+	struct ifnet *lldev;   /* LL device associated with TOE messages */
 	const struct tom_info *offload_mod; /* attached TCP offload module */
-	struct proc_dir_entry *proc_dir;    /* root of proc dir for this TOE */
+	struct sysctl_oid *sysctl_root;    /* root of proc dir for this TOE */
+	TAILQ_ENTRY(toedev) ofld_entry;  /* for list linking */
 	int (*open)(struct toedev *dev);
 	int (*close)(struct toedev *dev);
-	int (*can_offload)(struct toedev *dev, struct sock *sk);
-	int (*connect)(struct toedev *dev, struct sock *sk,
-		       struct net_device *egress_dev);
-	int (*send)(struct toedev *dev, struct sk_buff *skb);
-	int (*recv)(struct toedev *dev, struct sk_buff **skb, int n);
+	int (*can_offload)(struct toedev *dev, struct socket *so);
+	int (*connect)(struct toedev *dev, struct socket *so,
+		       struct ifnet *egress_dev);
+	int (*send)(struct toedev *dev, struct mbuf *skb);
+	int (*recv)(struct toedev *dev, struct mbuf **skb, int n);
 	int (*ctl)(struct toedev *dev, unsigned int req, void *data);
-	void (*neigh_update)(struct toedev *dev, struct neighbour *neigh);
-	void (*failover)(struct toedev *dev, struct net_device *bond_dev,
-			 struct net_device *ndev, int event);
+	void (*neigh_update)(struct toedev *dev, struct rtentry *neigh);
+	void (*failover)(struct toedev *dev, struct ifnet *bond_dev,
+			 struct ifnet *ndev, int event);
 	void *priv;                 /* driver private data */
 	void *l2opt;                /* optional layer 2 data */
 	void *l3opt;                /* optional layer 3 data */
@@ -104,12 +122,12 @@
 	int (*detach)(struct toedev *dev);
 	const char *name;
 	const struct offload_id *id_table;
-	struct list_head list_node;
+	TAILQ_ENTRY(tom_info) entry;
 };
 
 static inline void init_offload_dev(struct toedev *dev)
 {
-	INIT_LIST_HEAD(&dev->toe_list);
+
 }
 
 extern int register_tom(struct tom_info *t);
@@ -117,14 +135,13 @@
 extern int register_toedev(struct toedev *dev, const char *name);
 extern int unregister_toedev(struct toedev *dev);
 extern int activate_offload(struct toedev *dev);
-extern int toe_send(struct toedev *dev, struct sk_buff *skb);
-extern struct net_device *offload_get_phys_egress(struct net_device *dev,
-						  struct sock *sk,
+extern int toe_send(struct toedev *dev, struct mbuf *skb);
+extern struct ifnet *offload_get_phys_egress(struct ifnet *dev,
+						  struct socket *so,
 						  int context);
-#endif
 
 #if defined(CONFIG_TCP_OFFLOAD_MODULE)
-static inline int toe_receive_skb(struct toedev *dev, struct sk_buff **skb,
+static inline int toe_receive_skb(struct toedev *dev, struct mbuf **skb,
 				  int n)
 {
 	return dev->recv(dev, skb, n);
@@ -133,23 +150,23 @@
 extern int  prepare_tcp_for_offload(void);
 extern void restore_tcp_to_nonoffload(void);
 #elif defined(CONFIG_TCP_OFFLOAD)
-extern int toe_receive_skb(struct toedev *dev, struct sk_buff **skb, int n);
+extern int toe_receive_skb(struct toedev *dev, struct mbuf **skb, int n);
 #endif
 
 #if defined(CONFIG_TCP_OFFLOAD) || \
     (defined(CONFIG_TCP_OFFLOAD_MODULE) && defined(MODULE))
-extern void toe_neigh_update(struct neighbour *neigh);
-extern void toe_failover(struct net_device *bond_dev,
-			 struct net_device *fail_dev, int event);
-extern int toe_enslave(struct net_device *bond_dev,
-		       struct net_device *slave_dev);
+extern void toe_neigh_update(struct rtentry *neigh);
+extern void toe_failover(struct ifnet *bond_dev,
+			 struct ifnet *fail_dev, int event);
+extern int toe_enslave(struct ifnet *bond_dev,
+		       struct ifnet *slave_dev);
 #else
-static inline void toe_neigh_update(struct neighbour *neigh) {}
-static inline void toe_failover(struct net_device *bond_dev,
-				struct net_device *fail_dev, int event)
+static inline void toe_neigh_update(struct ifnet *neigh) {}
+static inline void toe_failover(struct ifnet *bond_dev,
+				struct ifnet *fail_dev, int event)
 {}
-static inline int toe_enslave(struct net_device *bond_dev,
-			      struct net_device *slave_dev)
+static inline int toe_enslave(struct ifnet *bond_dev,
+			      struct ifnet *slave_dev)
 {
 	return 0;
 }


More information about the p4-projects mailing list