patch-2.4.6 linux/include/net/bluetooth/l2cap_core.h

Next file: linux/include/net/irda/irdacall.h
Previous file: linux/include/net/bluetooth/l2cap.h
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.5/linux/include/net/bluetooth/l2cap_core.h linux/include/net/bluetooth/l2cap_core.h
@@ -0,0 +1,142 @@
+/* 
+   BlueZ - Bluetooth protocol stack for Linux
+   Copyright (C) 2000-2001 Qualcomm Incorporated
+
+   Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation;
+
+   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+   OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
+   IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
+   CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES 
+   WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 
+   ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 
+   OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+   ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, 
+   COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS 
+   SOFTWARE IS DISCLAIMED.
+*/
+
+/*
+ *  $Id: l2cap_core.h,v 1.1 2001/06/01 08:12:11 davem Exp $
+ */
+
+#ifndef __L2CAP_CORE_H
+#define __L2CAP_CORE_H
+
+#ifdef __KERNEL__
+
+/* ----- L2CAP interface ----- */
+struct l2cap_iff {
+	struct list_head list;
+	struct hci_dev   *hdev;
+	bdaddr_t         *bdaddr;
+	__u16            mtu;
+	spinlock_t       lock;
+	struct list_head conn_list;
+};
+
+static __inline__ void l2cap_iff_lock(struct l2cap_iff *iff)
+{
+	spin_lock(&iff->lock);
+}
+
+static __inline__ void l2cap_iff_unlock(struct l2cap_iff *iff)
+{
+	spin_unlock(&iff->lock);
+}
+
+/* ----- L2CAP connections ----- */
+struct l2cap_chan_list {
+	struct sock	*head;
+	rwlock_t	lock;
+	long		num;
+};
+
+struct l2cap_conn {
+	struct l2cap_iff *iff;
+	struct list_head list;
+
+	struct hci_conn	 *hconn;
+
+	__u16		state;
+	__u8		out;
+	bdaddr_t	src;
+	bdaddr_t	dst;
+
+	spinlock_t	lock;
+	atomic_t	refcnt;
+
+	struct sk_buff *rx_skb;
+	__u32		rx_len;
+	__u8		rx_ident;
+	__u8		tx_ident;
+
+	struct l2cap_chan_list chan_list;
+};
+
+static __inline__ void __l2cap_conn_link(struct l2cap_iff *iff, struct l2cap_conn *c)
+{
+	list_add(&c->list, &iff->conn_list);
+}
+
+static __inline__ void __l2cap_conn_unlink(struct l2cap_iff *iff, struct l2cap_conn *c)
+{
+	list_del(&c->list);
+}
+
+/* ----- L2CAP channel and socket info ----- */
+#define l2cap_pi(sk)   ((struct l2cap_pinfo *) &sk->protinfo)
+
+struct l2cap_accept_q {
+	struct sock 	*head;
+	struct sock 	*tail;
+};
+
+struct l2cap_pinfo {
+	bdaddr_t	src;
+	bdaddr_t	dst;
+	__u16		psm;
+	__u16		dcid;
+	__u16		scid;
+	__u32		flags;
+
+	__u16		imtu;
+	__u16		omtu;
+	__u16		flush_to;
+
+	__u8		conf_state;
+	__u16		conf_mtu;
+
+	__u8		ident;
+
+	struct l2cap_conn 	*conn;
+	struct sock 		*next_c;
+	struct sock 		*prev_c;
+
+	struct sock *parent;
+	struct sock *next_q;
+	struct sock *prev_q;
+
+	struct l2cap_accept_q accept_q;
+};
+
+#define CONF_INPUT  0x01
+#define CONF_OUTPUT 0x02
+#define CONF_DONE	(CONF_INPUT | CONF_OUTPUT)
+
+extern struct bluez_sock_list l2cap_sk_list;
+extern struct list_head  l2cap_iff_list;
+extern rwlock_t l2cap_rt_lock;
+
+extern void l2cap_register_proc(void);
+extern void l2cap_unregister_proc(void);
+
+#endif /* __KERNEL__ */
+
+#endif /* __L2CAP_CORE_H */

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)