00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef IRLAP_FRAME_H
00033 #define IRLAP_FRAME_H
00034
00035 #include <linux/skbuff.h>
00036
00037 #include <net/irda/irda.h>
00038 #include <net/irda/irlap.h>
00039 #include <net/irda/qos.h>
00040
00041
00042 #define INVALID 0xff
00043
00044
00045 #define SNRM_CMD 0x83
00046 #define DISC_CMD 0x43
00047 #define XID_CMD 0x2f
00048 #define TEST_CMD 0xe3
00049
00050
00051 #define RNRM_RSP 0x83
00052 #define UA_RSP 0x63
00053 #define FRMR_RSP 0x87
00054 #define DM_RSP 0x0f
00055 #define RD_RSP 0x43
00056 #define XID_RSP 0xaf
00057 #define TEST_RSP 0xe3
00058
00059
00060 #define RR 0x01
00061 #define REJ 0x09
00062 #define RNR 0x05
00063 #define SREJ 0x0d
00064
00065
00066 #define I_FRAME 0x00
00067 #define UI_FRAME 0x03
00068
00069 #define CMD_FRAME 0x01
00070 #define RSP_FRAME 0x00
00071
00072 #define PF_BIT 0x10
00073
00074 struct xid_frame {
00075 __u8 caddr;
00076 __u8 control;
00077 __u8 ident;
00078 __u32 saddr;
00079 __u32 daddr;
00080 __u8 flags;
00081 __u8 slotnr;
00082 __u8 version;
00083 } PACK;
00084
00085 struct test_frame {
00086 __u8 caddr;
00087 __u8 control;
00088 __u32 saddr;
00089 __u32 daddr;
00090 } PACK;
00091
00092 struct ua_frame {
00093 __u8 caddr;
00094 __u8 control;
00095
00096 __u32 saddr;
00097 __u32 daddr;
00098 } PACK;
00099
00100 struct i_frame {
00101 __u8 caddr;
00102 __u8 control;
00103 } PACK;
00104
00105 struct snrm_frame {
00106 __u8 caddr;
00107 __u8 control;
00108 __u32 saddr;
00109 __u32 daddr;
00110 __u8 ncaddr;
00111 } PACK;
00112
00113 void irlap_send_discovery_xid_frame(struct irlap_cb *, int S, __u8 s,
00114 __u8 command, discovery_t *discovery);
00115 void irlap_send_snrm_frame(struct irlap_cb *, struct qos_info *);
00116 void irlap_send_test_frame(struct irlap_cb *self, __u8 caddr, __u32 daddr,
00117 struct sk_buff *cmd);
00118 void irlap_send_ua_response_frame(struct irlap_cb *, struct qos_info *);
00119 void irlap_send_dm_frame(struct irlap_cb *self);
00120 void irlap_send_rd_frame(struct irlap_cb *self);
00121 void irlap_send_disc_frame(struct irlap_cb *self);
00122 void irlap_send_rr_frame(struct irlap_cb *self, int command);
00123
00124 void irlap_send_data_primary(struct irlap_cb *, struct sk_buff *);
00125 void irlap_send_data_primary_poll(struct irlap_cb *, struct sk_buff *);
00126 void irlap_send_data_secondary(struct irlap_cb *, struct sk_buff *);
00127 void irlap_send_data_secondary_final(struct irlap_cb *, struct sk_buff *);
00128 void irlap_resend_rejected_frames(struct irlap_cb *, int command);
00129 void irlap_resend_rejected_frame(struct irlap_cb *self, int command);
00130
00131 void irlap_send_i_frame(struct irlap_cb *, struct sk_buff *, int command);
00132 void irlap_send_ui_frame(struct irlap_cb *self, struct sk_buff *skb,
00133 __u8 caddr, int command);
00134
00135 extern int irlap_insert_qos_negotiation_params(struct irlap_cb *self,
00136 struct sk_buff *skb);
00137
00138 #endif