2005-04-16 15:20:36 -07:00
|
|
|
/*
|
2006-02-01 04:06:31 -07:00
|
|
|
* linux/drivers/s390/net/qeth_eddp.h
|
2005-04-16 15:20:36 -07:00
|
|
|
*
|
2006-02-01 04:06:31 -07:00
|
|
|
* Header file for qeth enhanced device driver packing.
|
2005-04-16 15:20:36 -07:00
|
|
|
*
|
|
|
|
* Copyright 2004 IBM Corporation
|
|
|
|
*
|
|
|
|
* Author(s): Thomas Spatzier <tspat@de.ibm.com>
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
#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 *
|
2007-05-02 06:17:11 -07:00
|
|
|
qeth_eddp_create_context(struct qeth_card *,struct sk_buff *,
|
|
|
|
struct qeth_hdr *, unsigned char);
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
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;
|
2006-11-14 22:43:44 -07:00
|
|
|
__be16 vlan[2];
|
2005-04-16 15:20:36 -07:00
|
|
|
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__ */
|