Skip to content

Commit

Permalink
Bluetooth: Remove duplicated code in l2cap conn req
Browse files Browse the repository at this point in the history
The same sequence sending L2CAP Connection Request was used in several
places. Using subroutine makes those places easy to read.

Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
Reviewed-by: Ulisses Furquim <ulisses@profusion.mobi>
Acked-by: Gustavo F. Padovan <padovan@profusion.mobi>
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
  • Loading branch information
Andrei Emeltchenko authored and Johan Hedberg committed Feb 24, 2012
1 parent 5b4ceda commit 9b27f35
Showing 1 changed file with 19 additions and 30 deletions.
49 changes: 19 additions & 30 deletions net/bluetooth/l2cap_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -667,6 +667,21 @@ static inline int __l2cap_no_conn_pending(struct l2cap_chan *chan)
return !test_bit(CONF_CONNECT_PEND, &chan->conf_state);
}

static void l2cap_send_conn_req(struct l2cap_chan *chan)
{
struct l2cap_conn *conn = chan->conn;
struct l2cap_conn_req req;

req.scid = cpu_to_le16(chan->scid);
req.psm = chan->psm;

chan->ident = l2cap_get_ident(conn);

set_bit(CONF_CONNECT_PEND, &chan->conf_state);

l2cap_send_cmd(conn, chan->ident, L2CAP_CONN_REQ, sizeof(req), &req);
}

static void l2cap_do_start(struct l2cap_chan *chan)
{
struct l2cap_conn *conn = chan->conn;
Expand All @@ -676,17 +691,8 @@ static void l2cap_do_start(struct l2cap_chan *chan)
return;

if (l2cap_chan_check_security(chan) &&
__l2cap_no_conn_pending(chan)) {
struct l2cap_conn_req req;
req.scid = cpu_to_le16(chan->scid);
req.psm = chan->psm;

chan->ident = l2cap_get_ident(conn);
set_bit(CONF_CONNECT_PEND, &chan->conf_state);

l2cap_send_cmd(conn, chan->ident, L2CAP_CONN_REQ,
sizeof(req), &req);
}
__l2cap_no_conn_pending(chan))
l2cap_send_conn_req(chan);
} else {
struct l2cap_info_req req;
req.type = cpu_to_le16(L2CAP_IT_FEAT_MASK);
Expand Down Expand Up @@ -763,8 +769,6 @@ static void l2cap_conn_start(struct l2cap_conn *conn)
}

if (chan->state == BT_CONNECT) {
struct l2cap_conn_req req;

if (!l2cap_chan_check_security(chan) ||
!__l2cap_no_conn_pending(chan)) {
l2cap_chan_unlock(chan);
Expand All @@ -779,14 +783,7 @@ static void l2cap_conn_start(struct l2cap_conn *conn)
continue;
}

req.scid = cpu_to_le16(chan->scid);
req.psm = chan->psm;

chan->ident = l2cap_get_ident(conn);
set_bit(CONF_CONNECT_PEND, &chan->conf_state);

l2cap_send_cmd(conn, chan->ident, L2CAP_CONN_REQ,
sizeof(req), &req);
l2cap_send_conn_req(chan);

} else if (chan->state == BT_CONNECT2) {
struct l2cap_conn_rsp rsp;
Expand Down Expand Up @@ -4593,15 +4590,7 @@ int l2cap_security_cfm(struct hci_conn *hcon, u8 status, u8 encrypt)

if (chan->state == BT_CONNECT) {
if (!status) {
struct l2cap_conn_req req;
req.scid = cpu_to_le16(chan->scid);
req.psm = chan->psm;

chan->ident = l2cap_get_ident(conn);
set_bit(CONF_CONNECT_PEND, &chan->conf_state);

l2cap_send_cmd(conn, chan->ident,
L2CAP_CONN_REQ, sizeof(req), &req);
l2cap_send_conn_req(chan);
} else {
__clear_chan_timer(chan);
__set_chan_timer(chan,
Expand Down

0 comments on commit 9b27f35

Please sign in to comment.