Skip to content

Commit

Permalink
Bluetooth: Save remote L2CAP fixed channel mask
Browse files Browse the repository at this point in the history
Fixed channel mask needs to be stored to decide whether to
use A2MP for example. So far save only one relevant byte which
keeps all information we need.

Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
  • Loading branch information
Andrei Emeltchenko authored and Johan Hedberg committed Feb 29, 2012
1 parent 89bb46d commit 978c93b
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 2 deletions.
1 change: 1 addition & 0 deletions include/net/bluetooth/l2cap.h
Original file line number Diff line number Diff line change
Expand Up @@ -522,6 +522,7 @@ struct l2cap_conn {
unsigned int mtu;

__u32 feat_mask;
__u8 fixed_chan_mask;

__u8 info_state;
__u8 info_ident;
Expand Down
9 changes: 7 additions & 2 deletions net/bluetooth/l2cap_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -3209,7 +3209,8 @@ static inline int l2cap_information_rsp(struct l2cap_conn *conn, struct l2cap_cm
return 0;
}

if (type == L2CAP_IT_FEAT_MASK) {
switch (type) {
case L2CAP_IT_FEAT_MASK:
conn->feat_mask = get_unaligned_le32(rsp->data);

if (conn->feat_mask & L2CAP_FEAT_FIXED_CHAN) {
Expand All @@ -3226,11 +3227,15 @@ static inline int l2cap_information_rsp(struct l2cap_conn *conn, struct l2cap_cm

l2cap_conn_start(conn);
}
} else if (type == L2CAP_IT_FIXED_CHAN) {
break;

case L2CAP_IT_FIXED_CHAN:
conn->fixed_chan_mask = rsp->data[0];
conn->info_state |= L2CAP_INFO_FEAT_MASK_REQ_DONE;
conn->info_ident = 0;

l2cap_conn_start(conn);
break;
}

return 0;
Expand Down

0 comments on commit 978c93b

Please sign in to comment.