diff options
-rw-r--r-- | net/bluetooth/l2cap_core.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c index cf48330a7fdc..0272cd1519fa 100644 --- a/net/bluetooth/l2cap_core.c +++ b/net/bluetooth/l2cap_core.c | |||
@@ -60,7 +60,7 @@ int disable_ertm; | |||
60 | int enable_hs; | 60 | int enable_hs; |
61 | 61 | ||
62 | static u32 l2cap_feat_mask = L2CAP_FEAT_FIXED_CHAN; | 62 | static u32 l2cap_feat_mask = L2CAP_FEAT_FIXED_CHAN; |
63 | static u8 l2cap_fixed_chan[8] = { 0x02, }; | 63 | static u8 l2cap_fixed_chan[8] = { L2CAP_FC_L2CAP, }; |
64 | 64 | ||
65 | static LIST_HEAD(chan_list); | 65 | static LIST_HEAD(chan_list); |
66 | static DEFINE_RWLOCK(chan_list_lock); | 66 | static DEFINE_RWLOCK(chan_list_lock); |
@@ -3035,6 +3035,12 @@ static inline int l2cap_information_req(struct l2cap_conn *conn, struct l2cap_cm | |||
3035 | } else if (type == L2CAP_IT_FIXED_CHAN) { | 3035 | } else if (type == L2CAP_IT_FIXED_CHAN) { |
3036 | u8 buf[12]; | 3036 | u8 buf[12]; |
3037 | struct l2cap_info_rsp *rsp = (struct l2cap_info_rsp *) buf; | 3037 | struct l2cap_info_rsp *rsp = (struct l2cap_info_rsp *) buf; |
3038 | |||
3039 | if (enable_hs) | ||
3040 | l2cap_fixed_chan[0] |= L2CAP_FC_A2MP; | ||
3041 | else | ||
3042 | l2cap_fixed_chan[0] &= ~L2CAP_FC_A2MP; | ||
3043 | |||
3038 | rsp->type = cpu_to_le16(L2CAP_IT_FIXED_CHAN); | 3044 | rsp->type = cpu_to_le16(L2CAP_IT_FIXED_CHAN); |
3039 | rsp->result = cpu_to_le16(L2CAP_IR_SUCCESS); | 3045 | rsp->result = cpu_to_le16(L2CAP_IR_SUCCESS); |
3040 | memcpy(rsp->data, l2cap_fixed_chan, sizeof(l2cap_fixed_chan)); | 3046 | memcpy(rsp->data, l2cap_fixed_chan, sizeof(l2cap_fixed_chan)); |