• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
12 struct qeth_eddp_element {
13 	u32 flags;
14 	u32 length;
15 	void *addr;
16 };
17 
18 struct 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 
29 struct qeth_eddp_context_reference {
30 	struct list_head list;
31 	struct qeth_eddp_context *ctx;
32 };
33 
34 struct 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 
63 extern struct qeth_eddp_context *qeth_eddp_create_context(struct qeth_card *,
64 		 struct sk_buff *, struct qeth_hdr *, unsigned char);
65 extern void qeth_eddp_put_context(struct qeth_eddp_context *);
66 extern int qeth_eddp_fill_buffer(struct qeth_qdio_out_q *,
67 		struct qeth_eddp_context *, int);
68 extern void qeth_eddp_buf_release_contexts(struct qeth_qdio_out_buffer *);
69 extern int qeth_eddp_check_buffers_for_context(struct qeth_qdio_out_q *,
70 		struct qeth_eddp_context *);
71 
72 void qeth_tso_fill_header(struct qeth_card *, struct qeth_hdr *,
73 		struct sk_buff *);
74 void qeth_tx_csum(struct sk_buff *skb);
75 
76 #endif /* __QETH_CORE_EDDP_H__ */
77