l2cap.h (890ca861f868a10617029ffc87eae7d48ea6876c) l2cap.h (abe84903a8efc6b83fa92161429e0e3a28bde15c)
1/*
2 BlueZ - Bluetooth protocol stack for Linux
3 Copyright (C) 2000-2001 Qualcomm Incorporated
4 Copyright (C) 2009-2010 Gustavo F. Padovan <gustavo@padovan.org>
5 Copyright (C) 2010 Google Inc.
6
7 Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
8

--- 14 unchanged lines hidden (view full) ---

23 COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
24 SOFTWARE IS DISCLAIMED.
25*/
26
27#ifndef __L2CAP_H
28#define __L2CAP_H
29
30#include <asm/unaligned.h>
1/*
2 BlueZ - Bluetooth protocol stack for Linux
3 Copyright (C) 2000-2001 Qualcomm Incorporated
4 Copyright (C) 2009-2010 Gustavo F. Padovan <gustavo@padovan.org>
5 Copyright (C) 2010 Google Inc.
6
7 Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
8

--- 14 unchanged lines hidden (view full) ---

23 COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
24 SOFTWARE IS DISCLAIMED.
25*/
26
27#ifndef __L2CAP_H
28#define __L2CAP_H
29
30#include <asm/unaligned.h>
31#include <linux/atomic.h>
31
32/* L2CAP defaults */
33#define L2CAP_DEFAULT_MTU 672
34#define L2CAP_DEFAULT_MIN_MTU 48
35#define L2CAP_DEFAULT_FLUSH_TO 0xFFFF
36#define L2CAP_EFS_DEFAULT_FLUSH_TO 0xFFFFFFFF
37#define L2CAP_DEFAULT_TX_WINDOW 63
38#define L2CAP_DEFAULT_EXT_WINDOW 0x3FFF

--- 437 unchanged lines hidden (view full) ---

476#define L2CAP_SEQ_LIST_CLEAR 0xFFFF
477#define L2CAP_SEQ_LIST_TAIL 0x8000
478
479struct l2cap_chan {
480 struct l2cap_conn *conn;
481 struct hci_conn *hs_hcon;
482 struct hci_chan *hs_hchan;
483 struct kref kref;
32
33/* L2CAP defaults */
34#define L2CAP_DEFAULT_MTU 672
35#define L2CAP_DEFAULT_MIN_MTU 48
36#define L2CAP_DEFAULT_FLUSH_TO 0xFFFF
37#define L2CAP_EFS_DEFAULT_FLUSH_TO 0xFFFFFFFF
38#define L2CAP_DEFAULT_TX_WINDOW 63
39#define L2CAP_DEFAULT_EXT_WINDOW 0x3FFF

--- 437 unchanged lines hidden (view full) ---

477#define L2CAP_SEQ_LIST_CLEAR 0xFFFF
478#define L2CAP_SEQ_LIST_TAIL 0x8000
479
480struct l2cap_chan {
481 struct l2cap_conn *conn;
482 struct hci_conn *hs_hcon;
483 struct hci_chan *hs_hchan;
484 struct kref kref;
485 atomic_t nesting;
484
485 __u8 state;
486
487 bdaddr_t dst;
488 __u8 dst_type;
489 bdaddr_t src;
490 __u8 src_type;
491 __le16 psm;

--- 216 unchanged lines hidden (view full) ---

708 FLAG_EXT_CTRL,
709 FLAG_EFS_ENABLE,
710 FLAG_DEFER_SETUP,
711 FLAG_LE_CONN_REQ_SENT,
712 FLAG_PENDING_SECURITY,
713 FLAG_HOLD_HCI_CONN,
714};
715
486
487 __u8 state;
488
489 bdaddr_t dst;
490 __u8 dst_type;
491 bdaddr_t src;
492 __u8 src_type;
493 __le16 psm;

--- 216 unchanged lines hidden (view full) ---

710 FLAG_EXT_CTRL,
711 FLAG_EFS_ENABLE,
712 FLAG_DEFER_SETUP,
713 FLAG_LE_CONN_REQ_SENT,
714 FLAG_PENDING_SECURITY,
715 FLAG_HOLD_HCI_CONN,
716};
717
718/* Lock nesting levels for L2CAP channels. We need these because lockdep
719 * otherwise considers all channels equal and will e.g. complain about a
720 * connection oriented channel triggering SMP procedures or a listening
721 * channel creating and locking a child channel.
722 */
716enum {
723enum {
724 L2CAP_NESTING_SMP,
725 L2CAP_NESTING_NORMAL,
726 L2CAP_NESTING_PARENT,
727};
728
729enum {
717 L2CAP_TX_STATE_XMIT,
718 L2CAP_TX_STATE_WAIT_F,
719};
720
721enum {
722 L2CAP_RX_STATE_RECV,
723 L2CAP_RX_STATE_SREJ_SENT,
724 L2CAP_RX_STATE_MOVE,

--- 48 unchanged lines hidden (view full) ---

773 L2CAP_MOVE_WAIT_PREPARE,
774};
775
776void l2cap_chan_hold(struct l2cap_chan *c);
777void l2cap_chan_put(struct l2cap_chan *c);
778
779static inline void l2cap_chan_lock(struct l2cap_chan *chan)
780{
730 L2CAP_TX_STATE_XMIT,
731 L2CAP_TX_STATE_WAIT_F,
732};
733
734enum {
735 L2CAP_RX_STATE_RECV,
736 L2CAP_RX_STATE_SREJ_SENT,
737 L2CAP_RX_STATE_MOVE,

--- 48 unchanged lines hidden (view full) ---

786 L2CAP_MOVE_WAIT_PREPARE,
787};
788
789void l2cap_chan_hold(struct l2cap_chan *c);
790void l2cap_chan_put(struct l2cap_chan *c);
791
792static inline void l2cap_chan_lock(struct l2cap_chan *chan)
793{
781 mutex_lock(&chan->lock);
794 mutex_lock_nested(&chan->lock, atomic_read(&chan->nesting));
782}
783
784static inline void l2cap_chan_unlock(struct l2cap_chan *chan)
785{
786 mutex_unlock(&chan->lock);
787}
788
789static inline void l2cap_set_timer(struct l2cap_chan *chan,

--- 165 unchanged lines hidden ---
795}
796
797static inline void l2cap_chan_unlock(struct l2cap_chan *chan)
798{
799 mutex_unlock(&chan->lock);
800}
801
802static inline void l2cap_set_timer(struct l2cap_chan *chan,

--- 165 unchanged lines hidden ---