s390: Use ccw_device_get_id() in qeth/claw drivers
[safe/jmp/linux-2.6] / drivers / s390 / net / qeth_eddp.h
1 /*
2  * linux/drivers/s390/net/qeth_eddp.h
3  *
4  * Header file for qeth enhanced device driver packing.
5  *
6  * Copyright 2004 IBM Corporation
7  *
8  *    Author(s): Thomas Spatzier <tspat@de.ibm.com>
9  *
10  */
11 #ifndef __QETH_EDDP_H__
12 #define __QETH_EDDP_H__
13
14 struct qeth_eddp_element {
15         u32 flags;
16         u32 length;
17         void *addr;
18 };
19
20 struct qeth_eddp_context {
21         atomic_t refcnt;
22         enum qeth_large_send_types type;
23         int num_pages;                      /* # of allocated pages */
24         u8 **pages;                         /* pointers to pages */
25         int offset;                         /* offset in ctx during creation */
26         int num_elements;                   /* # of required 'SBALEs' */
27         struct qeth_eddp_element *elements; /* array of 'SBALEs' */
28         int elements_per_skb;               /* # of 'SBALEs' per skb **/
29 };
30
31 struct qeth_eddp_context_reference {
32         struct list_head list;
33         struct qeth_eddp_context *ctx;
34 };
35
36 extern struct qeth_eddp_context *
37 qeth_eddp_create_context(struct qeth_card *,struct sk_buff *,
38                          struct qeth_hdr *, unsigned char);
39
40 extern void
41 qeth_eddp_put_context(struct qeth_eddp_context *);
42
43 extern int
44 qeth_eddp_fill_buffer(struct qeth_qdio_out_q *,struct qeth_eddp_context *,int);
45
46 extern void
47 qeth_eddp_buf_release_contexts(struct qeth_qdio_out_buffer *);
48
49 extern int
50 qeth_eddp_check_buffers_for_context(struct qeth_qdio_out_q *,
51                                     struct qeth_eddp_context *);
52 /*
53  * Data used for fragmenting a IP packet.
54  */
55 struct qeth_eddp_data {
56         struct qeth_hdr qh;
57         struct ethhdr mac;
58         __be16 vlan[2];
59         union {
60                 struct {
61                         struct iphdr h;
62                         u8 options[40];
63                 } ip4;
64                 struct {
65                         struct ipv6hdr h;
66                 } ip6;
67         } nh;
68         u8 nhl;
69         void *nh_in_ctx;        /* address of nh within the ctx */
70         union {
71                 struct {
72                         struct tcphdr h;
73                         u8 options[40];
74                 } tcp;
75         } th;
76         u8 thl;
77         void *th_in_ctx;        /* address of th within the ctx */
78         struct sk_buff *skb;
79         int skb_offset;
80         int frag;
81         int frag_offset;
82 } __attribute__ ((packed));
83
84 #endif /* __QETH_EDDP_H__ */