Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1/*
2 * drivers/s390/net/qeth_core_offl.h
3 *
4 * Copyright IBM Corp. 2007
5 * Author(s): Thomas Spatzier <tspat@de.ibm.com>,
6 * Frank Blaschka <frank.blaschka@de.ibm.com>
7 */
8
9#ifndef __QETH_CORE_OFFL_H__
10#define __QETH_CORE_OFFL_H__
11
12struct qeth_eddp_element {
13 u32 flags;
14 u32 length;
15 void *addr;
16};
17
18struct qeth_eddp_context {
19 atomic_t refcnt;
20 enum qeth_large_send_types type;
21 int num_pages; /* # of allocated pages */
22 u8 **pages; /* pointers to pages */
23 int offset; /* offset in ctx during creation */
24 int num_elements; /* # of required 'SBALEs' */
25 struct qeth_eddp_element *elements; /* array of 'SBALEs' */
26 int elements_per_skb; /* # of 'SBALEs' per skb **/
27};
28
29struct qeth_eddp_context_reference {
30 struct list_head list;
31 struct qeth_eddp_context *ctx;
32};
33
34struct qeth_eddp_data {
35 struct qeth_hdr qh;
36 struct ethhdr mac;
37 __be16 vlan[2];
38 union {
39 struct {
40 struct iphdr h;
41 u8 options[40];
42 } ip4;
43 struct {
44 struct ipv6hdr h;
45 } ip6;
46 } nh;
47 u8 nhl;
48 void *nh_in_ctx; /* address of nh within the ctx */
49 union {
50 struct {
51 struct tcphdr h;
52 u8 options[40];
53 } tcp;
54 } th;
55 u8 thl;
56 void *th_in_ctx; /* address of th within the ctx */
57 struct sk_buff *skb;
58 int skb_offset;
59 int frag;
60 int frag_offset;
61} __attribute__ ((packed));
62
63extern struct qeth_eddp_context *qeth_eddp_create_context(struct qeth_card *,
64 struct sk_buff *, struct qeth_hdr *, unsigned char);
65extern void qeth_eddp_put_context(struct qeth_eddp_context *);
66extern int qeth_eddp_fill_buffer(struct qeth_qdio_out_q *,
67 struct qeth_eddp_context *, int);
68extern void qeth_eddp_buf_release_contexts(struct qeth_qdio_out_buffer *);
69extern int qeth_eddp_check_buffers_for_context(struct qeth_qdio_out_q *,
70 struct qeth_eddp_context *);
71
72void qeth_tso_fill_header(struct qeth_card *, struct qeth_hdr *,
73 struct sk_buff *);
74void qeth_tx_csum(struct sk_buff *skb);
75
76#endif /* __QETH_CORE_EDDP_H__ */