1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33#ifndef IRLAP_FRAME_H
34#define IRLAP_FRAME_H
35
36#include <linux/skbuff.h>
37
38#include <net/irda/irda.h>
39
40
41struct irlap_cb;
42struct discovery_t;
43
44
45#define INVALID 0xff
46
47
48#define SNRM_CMD 0x83
49#define DISC_CMD 0x43
50#define XID_CMD 0x2f
51#define TEST_CMD 0xe3
52
53
54#define RNRM_RSP 0x83
55#define UA_RSP 0x63
56#define FRMR_RSP 0x87
57#define DM_RSP 0x0f
58#define RD_RSP 0x43
59#define XID_RSP 0xaf
60#define TEST_RSP 0xe3
61
62
63#define RR 0x01
64#define REJ 0x09
65#define RNR 0x05
66#define SREJ 0x0d
67
68
69#define I_FRAME 0x00
70#define UI_FRAME 0x03
71
72#define CMD_FRAME 0x01
73#define RSP_FRAME 0x00
74
75#define PF_BIT 0x10
76
77
78
79
80
81
82#define IRLAP_NEGOCIATION_PARAMS_LEN 25
83#define IRLAP_DISCOVERY_INFO_LEN 32
84
85struct disc_frame {
86 __u8 caddr;
87 __u8 control;
88} __packed;
89
90struct xid_frame {
91 __u8 caddr;
92 __u8 control;
93 __u8 ident;
94 __le32 saddr;
95 __le32 daddr;
96 __u8 flags;
97 __u8 slotnr;
98 __u8 version;
99} __packed;
100
101struct test_frame {
102 __u8 caddr;
103 __u8 control;
104 __le32 saddr;
105 __le32 daddr;
106} __packed;
107
108struct ua_frame {
109 __u8 caddr;
110 __u8 control;
111 __le32 saddr;
112 __le32 daddr;
113} __packed;
114
115struct dm_frame {
116 __u8 caddr;
117 __u8 control;
118} __packed;
119
120struct rd_frame {
121 __u8 caddr;
122 __u8 control;
123} __packed;
124
125struct rr_frame {
126 __u8 caddr;
127 __u8 control;
128} __packed;
129
130struct i_frame {
131 __u8 caddr;
132 __u8 control;
133} __packed;
134
135struct snrm_frame {
136 __u8 caddr;
137 __u8 control;
138 __le32 saddr;
139 __le32 daddr;
140 __u8 ncaddr;
141} __packed;
142
143void irlap_queue_xmit(struct irlap_cb *self, struct sk_buff *skb);
144void irlap_send_discovery_xid_frame(struct irlap_cb *, int S, __u8 s,
145 __u8 command,
146 struct discovery_t *discovery);
147void irlap_send_snrm_frame(struct irlap_cb *, struct qos_info *);
148void irlap_send_test_frame(struct irlap_cb *self, __u8 caddr, __u32 daddr,
149 struct sk_buff *cmd);
150void irlap_send_ua_response_frame(struct irlap_cb *, struct qos_info *);
151void irlap_send_dm_frame(struct irlap_cb *self);
152void irlap_send_rd_frame(struct irlap_cb *self);
153void irlap_send_disc_frame(struct irlap_cb *self);
154void irlap_send_rr_frame(struct irlap_cb *self, int command);
155
156void irlap_send_data_primary(struct irlap_cb *, struct sk_buff *);
157void irlap_send_data_primary_poll(struct irlap_cb *, struct sk_buff *);
158void irlap_send_data_secondary(struct irlap_cb *, struct sk_buff *);
159void irlap_send_data_secondary_final(struct irlap_cb *, struct sk_buff *);
160void irlap_resend_rejected_frames(struct irlap_cb *, int command);
161void irlap_resend_rejected_frame(struct irlap_cb *self, int command);
162
163void irlap_send_ui_frame(struct irlap_cb *self, struct sk_buff *skb,
164 __u8 caddr, int command);
165
166extern int irlap_insert_qos_negotiation_params(struct irlap_cb *self,
167 struct sk_buff *skb);
168
169#endif
170