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