diff options
author | David S. Miller <davem@davemloft.net> | 2016-02-01 18:44:07 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-02-01 18:44:07 -0800 |
commit | b45efa30a626e915192a6c548cd8642379cd47cc (patch) | |
tree | 90d8b43ebceb850b0e7852d75283aebbd2abbc00 /net/bluetooth/l2cap_core.c | |
parent | 7a26019fdecdb45ff784ae4e3b7e0cc9045100ca (diff) | |
parent | 34229b277480f46c1e9a19f027f30b074512e68b (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Diffstat (limited to 'net/bluetooth/l2cap_core.c')
-rw-r--r-- | net/bluetooth/l2cap_core.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c index 39a5149f3010..eb4f5f24cbe3 100644 --- a/net/bluetooth/l2cap_core.c +++ b/net/bluetooth/l2cap_core.c @@ -197,10 +197,20 @@ int l2cap_add_psm(struct l2cap_chan *chan, bdaddr_t *src, __le16 psm) chan->sport = psm; err = 0; } else { - u16 p; + u16 p, start, end, incr; + + if (chan->src_type == BDADDR_BREDR) { + start = L2CAP_PSM_DYN_START; + end = L2CAP_PSM_AUTO_END; + incr = 2; + } else { + start = L2CAP_PSM_LE_DYN_START; + end = L2CAP_PSM_LE_DYN_END; + incr = 1; + } err = -EINVAL; - for (p = 0x1001; p < 0x1100; p += 2) + for (p = start; p <= end; p += incr) if (!__l2cap_global_chan_by_addr(cpu_to_le16(p), src)) { chan->psm = cpu_to_le16(p); chan->sport = cpu_to_le16(p); |