Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
[linux-2.6] / include / net / irda / af_irda.h
1 /*********************************************************************
2  *                
3  * Filename:      af_irda.h
4  * Version:       1.0
5  * Description:   IrDA sockets declarations
6  * Status:        Stable
7  * Author:        Dag Brattli <dagb@cs.uit.no>
8  * Created at:    Tue Dec  9 21:13:12 1997
9  * Modified at:   Fri Jan 28 13:16:32 2000
10  * Modified by:   Dag Brattli <dagb@cs.uit.no>
11  * 
12  *     Copyright (c) 1998-2000 Dag Brattli, All Rights Reserved.
13  *     Copyright (c) 2000-2002 Jean Tourrilhes <jt@hpl.hp.com>
14  *      
15  *     This program is free software; you can redistribute it and/or 
16  *     modify it under the terms of the GNU General Public License as 
17  *     published by the Free Software Foundation; either version 2 of 
18  *     the License, or (at your option) any later version.
19  *  
20  *     Neither Dag Brattli nor University of Tromsø admit liability nor
21  *     provide warranty for any of this software. This material is 
22  *     provided "AS-IS" and at no charge.
23  *     
24  ********************************************************************/
25
26 #ifndef AF_IRDA_H
27 #define AF_IRDA_H
28
29 #include <linux/irda.h>
30 #include <net/irda/irda.h>
31 #include <net/irda/iriap.h>             /* struct iriap_cb */
32 #include <net/irda/irias_object.h>      /* struct ias_value */
33 #include <net/irda/irlmp.h>             /* struct lsap_cb */
34 #include <net/irda/irttp.h>             /* struct tsap_cb */
35 #include <net/irda/discovery.h>         /* struct discovery_t */
36 #include <net/sock.h>
37
38 /* IrDA Socket */
39 struct irda_sock {
40         /* struct sock has to be the first member of irda_sock */
41         struct sock sk;
42         __u32 saddr;          /* my local address */
43         __u32 daddr;          /* peer address */
44
45         struct lsap_cb *lsap; /* LSAP used by Ultra */
46         __u8  pid;            /* Protocol IP (PID) used by Ultra */
47
48         struct tsap_cb *tsap; /* TSAP used by this connection */
49         __u8 dtsap_sel;       /* remote TSAP address */
50         __u8 stsap_sel;       /* local TSAP address */
51         
52         __u32 max_sdu_size_rx;
53         __u32 max_sdu_size_tx;
54         __u32 max_data_size;
55         __u8  max_header_size;
56         struct qos_info qos_tx;
57
58         __u16_host_order mask;           /* Hint bits mask */
59         __u16_host_order hints;          /* Hint bits */
60
61         void *ckey;           /* IrLMP client handle */
62         void *skey;           /* IrLMP service handle */
63
64         struct ias_object *ias_obj;   /* Our service name + lsap in IAS */
65         struct iriap_cb *iriap;       /* Used to query remote IAS */
66         struct ias_value *ias_result; /* Result of remote IAS query */
67
68         hashbin_t *cachelog;            /* Result of discovery query */
69         __u32 cachedaddr;       /* Result of selective discovery query */
70
71         int nslots;           /* Number of slots to use for discovery */
72
73         int errno;            /* status of the IAS query */
74
75         wait_queue_head_t query_wait;   /* Wait for the answer to a query */
76         struct timer_list watchdog;     /* Timeout for discovery */
77
78         LOCAL_FLOW tx_flow;
79         LOCAL_FLOW rx_flow;
80 };
81
82 static inline struct irda_sock *irda_sk(struct sock *sk)
83 {
84         return (struct irda_sock *)sk;
85 }
86
87 #endif /* AF_IRDA_H */