Bluetooth: Move parts of fixed channel initialization to l2cap_add_scid
authorJohan Hedberg <johan.hedberg@intel.com>
Thu, 7 Aug 2014 19:56:50 +0000 (22:56 +0300)
committerMarcel Holtmann <marcel@holtmann.org>
Thu, 14 Aug 2014 06:49:15 +0000 (08:49 +0200)
The l2cap_add_scid function is used for registering a fixed L2CAP
channel. Instead of having separate initialization of the channel type
and outgoing MTU in l2cap_sock.c it's more intuitive to do these things
in the l2cap_add_scid function itself (and thereby make the
functionality available to other users besides l2cap_sock.c).

Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
net/bluetooth/l2cap_core.c
net/bluetooth/l2cap_sock.c

index 09eb4e3..344a29c 100644 (file)
@@ -210,6 +210,10 @@ int l2cap_add_scid(struct l2cap_chan *chan,  __u16 scid)
 {
        write_lock(&chan_list_lock);
 
+       /* Override the defaults (which are for conn-oriented) */
+       chan->omtu = L2CAP_DEFAULT_MTU;
+       chan->chan_type = L2CAP_CHAN_FIXED;
+
        chan->scid = scid;
 
        write_unlock(&chan_list_lock);
index 5a42f6a..ed06f88 100644 (file)
@@ -99,15 +99,6 @@ static int l2cap_sock_bind(struct socket *sock, struct sockaddr *addr, int alen)
        if (!bdaddr_type_is_valid(la.l2_bdaddr_type))
                return -EINVAL;
 
-       if (la.l2_cid) {
-               /* When the socket gets created it defaults to
-                * CHAN_CONN_ORIENTED, so we need to overwrite the
-                * default here.
-                */
-               chan->chan_type = L2CAP_CHAN_FIXED;
-               chan->omtu = L2CAP_DEFAULT_MTU;
-       }
-
        if (bdaddr_type_is_le(la.l2_bdaddr_type)) {
                /* We only allow ATT user space socket */
                if (la.l2_cid &&