This commit was manufactured by cvs2svn to create branch 'vserver'.
[linux-2.6.git] / drivers / s390 / net / qeth_eddp.h
diff --git a/drivers/s390/net/qeth_eddp.h b/drivers/s390/net/qeth_eddp.h
new file mode 100644 (file)
index 0000000..e1b5186
--- /dev/null
@@ -0,0 +1,85 @@
+/*
+ * linux/drivers/s390/net/qeth_eddp.c ($Revision: 1.5 $)
+ *
+ * Header file for qeth enhanced device driver pakcing.
+ *
+ * Copyright 2004 IBM Corporation
+ *
+ *    Author(s): Thomas Spatzier <tspat@de.ibm.com>
+ *
+ *    $Revision: 1.5 $  $Date: 2005/03/24 09:04:18 $
+ *
+ */
+#ifndef __QETH_EDDP_H__
+#define __QETH_EDDP_H__
+
+struct qeth_eddp_element {
+       u32 flags;
+       u32 length;
+       void *addr;
+};
+
+struct qeth_eddp_context {
+       atomic_t refcnt;
+       enum qeth_large_send_types type;
+       int num_pages;                      /* # of allocated pages */
+       u8 **pages;                         /* pointers to pages */
+       int offset;                         /* offset in ctx during creation */
+       int num_elements;                   /* # of required 'SBALEs' */
+       struct qeth_eddp_element *elements; /* array of 'SBALEs' */
+       int elements_per_skb;               /* # of 'SBALEs' per skb **/
+};
+
+struct qeth_eddp_context_reference {
+       struct list_head list;
+       struct qeth_eddp_context *ctx;
+};
+
+extern struct qeth_eddp_context *
+qeth_eddp_create_context(struct qeth_card *,struct sk_buff *,struct qeth_hdr *);
+
+extern void
+qeth_eddp_put_context(struct qeth_eddp_context *);
+
+extern int
+qeth_eddp_fill_buffer(struct qeth_qdio_out_q *,struct qeth_eddp_context *,int);
+
+extern void
+qeth_eddp_buf_release_contexts(struct qeth_qdio_out_buffer *);
+
+extern int
+qeth_eddp_check_buffers_for_context(struct qeth_qdio_out_q *,
+                                   struct qeth_eddp_context *);
+/*
+ * Data used for fragmenting a IP packet.
+ */
+struct qeth_eddp_data {
+       struct qeth_hdr qh;
+       struct ethhdr mac;
+       u16 vlan[2];
+       union {
+               struct {
+                       struct iphdr h;
+                       u8 options[40];
+               } ip4;
+               struct {
+                       struct ipv6hdr h;
+               } ip6;
+       } nh;
+       u8 nhl;
+       void *nh_in_ctx;        /* address of nh within the ctx */
+       union {
+               struct {
+                       struct tcphdr h;
+                       u8 options[40];
+               } tcp;
+       } th;
+       u8 thl;
+       void *th_in_ctx;        /* address of th within the ctx */
+       struct sk_buff *skb;
+       int skb_offset;
+       int frag;
+       int frag_offset;
+} __attribute__ ((packed));
+
+#endif /* __QETH_EDDP_H__ */