fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / include / net / bluetooth / rfcomm.h
index 819b06d..3c563f0 100644 (file)
 
 #define RFCOMM_CONN_TIMEOUT (HZ * 30)
 #define RFCOMM_DISC_TIMEOUT (HZ * 20)
+#define RFCOMM_AUTH_TIMEOUT (HZ * 25)
 
 #define RFCOMM_DEFAULT_MTU     127
 #define RFCOMM_DEFAULT_CREDITS 7
 
-#define RFCOMM_MAX_L2CAP_MTU   1024
+#define RFCOMM_MAX_L2CAP_MTU   1013
 #define RFCOMM_MAX_CREDITS     40
 
 #define RFCOMM_SKB_HEAD_RESERVE        8
@@ -79,9 +80,9 @@
 #define RFCOMM_RPN_STOP_15     1
 
 #define RFCOMM_RPN_PARITY_NONE 0x0
-#define RFCOMM_RPN_PARITY_ODD  0x4
-#define RFCOMM_RPN_PARITY_EVEN 0x5
-#define RFCOMM_RPN_PARITY_MARK 0x6
+#define RFCOMM_RPN_PARITY_ODD  0x1
+#define RFCOMM_RPN_PARITY_EVEN 0x3
+#define RFCOMM_RPN_PARITY_MARK 0x5
 #define RFCOMM_RPN_PARITY_SPACE        0x7
 
 #define RFCOMM_RPN_FLOW_NONE   0x00
@@ -123,7 +124,7 @@ struct rfcomm_pn {
        u8  flow_ctrl;
        u8  priority;
        u8  ack_timer;
-       u16 mtu;
+       __le16 mtu;
        u8  max_retrans;
        u8  credits;
 } __attribute__ ((packed));
@@ -135,7 +136,7 @@ struct rfcomm_rpn {
        u8  flow_ctrl;
        u8  xon_char;
        u8  xoff_char;
-       u16 param_mask;
+       __le16 param_mask;
 } __attribute__ ((packed));
 
 struct rfcomm_rls {
@@ -181,6 +182,8 @@ struct rfcomm_dlc {
        u8            v24_sig;
        u8            mscex;
 
+       u32           link_mode;
+
        uint          mtu;
        uint          cfc;
        uint          rx_credits;
@@ -196,14 +199,18 @@ struct rfcomm_dlc {
 /* DLC and session flags */
 #define RFCOMM_RX_THROTTLED 0
 #define RFCOMM_TX_THROTTLED 1
-#define RFCOMM_MSC_PENDING  2
-#define RFCOMM_TIMED_OUT    3
+#define RFCOMM_TIMED_OUT    2
+#define RFCOMM_MSC_PENDING  3 
+#define RFCOMM_AUTH_PENDING 4
+#define RFCOMM_AUTH_ACCEPT  5
+#define RFCOMM_AUTH_REJECT  6
 
 /* Scheduling flags and events */
 #define RFCOMM_SCHED_STATE  0
 #define RFCOMM_SCHED_RX     1
 #define RFCOMM_SCHED_TX     2
 #define RFCOMM_SCHED_TIMEO  3
+#define RFCOMM_SCHED_AUTH   4
 #define RFCOMM_SCHED_WAKEUP 31
 
 /* MSC exchange flags */
@@ -216,24 +223,14 @@ struct rfcomm_dlc {
 #define RFCOMM_CFC_DISABLED 0
 #define RFCOMM_CFC_ENABLED  RFCOMM_MAX_CREDITS
 
-extern struct task_struct *rfcomm_thread;
-extern unsigned long rfcomm_event;
-
-static inline void rfcomm_schedule(uint event)
-{
-       if (!rfcomm_thread)
-               return;
-       //set_bit(event, &rfcomm_event);
-       set_bit(RFCOMM_SCHED_WAKEUP, &rfcomm_event);
-       wake_up_process(rfcomm_thread);
-}
-
-extern struct semaphore rfcomm_sem;
-#define rfcomm_lock()  down(&rfcomm_sem);
-#define rfcomm_unlock()        up(&rfcomm_sem);
+/* ---- RFCOMM SEND RPN ---- */
+int rfcomm_send_rpn(struct rfcomm_session *s, int cr, u8 dlci,
+                       u8 bit_rate, u8 data_bits, u8 stop_bits,
+                       u8 parity, u8 flow_ctrl_settings, 
+                       u8 xon_char, u8 xoff_char, u16 param_mask);
 
 /* ---- RFCOMM DLCs (channels) ---- */
-struct rfcomm_dlc *rfcomm_dlc_alloc(int prio);
+struct rfcomm_dlc *rfcomm_dlc_alloc(gfp_t prio);
 void rfcomm_dlc_free(struct rfcomm_dlc *d);
 int  rfcomm_dlc_open(struct rfcomm_dlc *d, bdaddr_t *src, bdaddr_t *dst, u8 channel);
 int  rfcomm_dlc_close(struct rfcomm_dlc *d, int reason);
@@ -271,11 +268,6 @@ static inline void rfcomm_dlc_unthrottle(struct rfcomm_dlc *d)
 }
 
 /* ---- RFCOMM sessions ---- */
-struct rfcomm_session *rfcomm_session_add(struct socket *sock, int state);
-struct rfcomm_session *rfcomm_session_get(bdaddr_t *src, bdaddr_t *dst);
-struct rfcomm_session *rfcomm_session_create(bdaddr_t *src, bdaddr_t *dst, int *err);
-void   rfcomm_session_del(struct rfcomm_session *s);
-void   rfcomm_session_close(struct rfcomm_session *s, int err);
 void   rfcomm_session_getaddr(struct rfcomm_session *s, bdaddr_t *src, bdaddr_t *dst);
 
 static inline void rfcomm_session_hold(struct rfcomm_session *s)
@@ -283,27 +275,34 @@ static inline void rfcomm_session_hold(struct rfcomm_session *s)
        atomic_inc(&s->refcnt);
 }
 
-static inline void rfcomm_session_put(struct rfcomm_session *s)
-{
-       if (atomic_dec_and_test(&s->refcnt))
-               rfcomm_session_del(s);
-}
-
-/* ---- RFCOMM chechsum ---- */
-extern u8 rfcomm_crc_table[];
-
 /* ---- RFCOMM sockets ---- */
 struct sockaddr_rc {
-       sa_family_t rc_family;
-       bdaddr_t    rc_bdaddr;
-       u8          rc_channel;
+       sa_family_t     rc_family;
+       bdaddr_t        rc_bdaddr;
+       u8              rc_channel;
+};
+
+#define RFCOMM_CONNINFO        0x02
+struct rfcomm_conninfo {
+       __u16 hci_handle;
+       __u8  dev_class[3];
 };
 
-#define rfcomm_pi(sk)   ((struct rfcomm_pinfo *)sk->sk_protinfo)
+#define RFCOMM_LM      0x03
+#define RFCOMM_LM_MASTER       0x0001
+#define RFCOMM_LM_AUTH         0x0002
+#define RFCOMM_LM_ENCRYPT      0x0004
+#define RFCOMM_LM_TRUSTED      0x0008
+#define RFCOMM_LM_RELIABLE     0x0010
+#define RFCOMM_LM_SECURE       0x0020
+
+#define rfcomm_pi(sk) ((struct rfcomm_pinfo *) sk)
 
 struct rfcomm_pinfo {
+       struct bt_sock bt;
        struct rfcomm_dlc   *dlc;
        u8     channel;
+       u32    link_mode;
 };
 
 int  rfcomm_init_sockets(void);
@@ -352,6 +351,4 @@ int  rfcomm_dev_ioctl(struct sock *sk, unsigned int cmd, void __user *arg);
 int  rfcomm_init_ttys(void);
 void rfcomm_cleanup_ttys(void);
 
-extern struct proc_dir_entry *proc_bt_rfcomm;
-
 #endif /* __RFCOMM_H */