Bluetooth: Remove duplicated code in l2cap conn req
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>
This commit is contained in:
parent
5b4cedaa14
commit
9b27f35068
1 changed files with 19 additions and 30 deletions
|
@ -667,6 +667,21 @@ static inline int __l2cap_no_conn_pending(struct l2cap_chan *chan)
|
||||||
return !test_bit(CONF_CONNECT_PEND, &chan->conf_state);
|
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)
|
static void l2cap_do_start(struct l2cap_chan *chan)
|
||||||
{
|
{
|
||||||
struct l2cap_conn *conn = chan->conn;
|
struct l2cap_conn *conn = chan->conn;
|
||||||
|
@ -676,17 +691,8 @@ static void l2cap_do_start(struct l2cap_chan *chan)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (l2cap_chan_check_security(chan) &&
|
if (l2cap_chan_check_security(chan) &&
|
||||||
__l2cap_no_conn_pending(chan)) {
|
__l2cap_no_conn_pending(chan))
|
||||||
struct l2cap_conn_req req;
|
l2cap_send_conn_req(chan);
|
||||||
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);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
struct l2cap_info_req req;
|
struct l2cap_info_req req;
|
||||||
req.type = cpu_to_le16(L2CAP_IT_FEAT_MASK);
|
req.type = cpu_to_le16(L2CAP_IT_FEAT_MASK);
|
||||||
|
@ -763,8 +769,6 @@ static void l2cap_conn_start(struct l2cap_conn *conn)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chan->state == BT_CONNECT) {
|
if (chan->state == BT_CONNECT) {
|
||||||
struct l2cap_conn_req req;
|
|
||||||
|
|
||||||
if (!l2cap_chan_check_security(chan) ||
|
if (!l2cap_chan_check_security(chan) ||
|
||||||
!__l2cap_no_conn_pending(chan)) {
|
!__l2cap_no_conn_pending(chan)) {
|
||||||
l2cap_chan_unlock(chan);
|
l2cap_chan_unlock(chan);
|
||||||
|
@ -779,14 +783,7 @@ static void l2cap_conn_start(struct l2cap_conn *conn)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
req.scid = cpu_to_le16(chan->scid);
|
l2cap_send_conn_req(chan);
|
||||||
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);
|
|
||||||
|
|
||||||
} else if (chan->state == BT_CONNECT2) {
|
} else if (chan->state == BT_CONNECT2) {
|
||||||
struct l2cap_conn_rsp rsp;
|
struct l2cap_conn_rsp rsp;
|
||||||
|
@ -4593,15 +4590,7 @@ int l2cap_security_cfm(struct hci_conn *hcon, u8 status, u8 encrypt)
|
||||||
|
|
||||||
if (chan->state == BT_CONNECT) {
|
if (chan->state == BT_CONNECT) {
|
||||||
if (!status) {
|
if (!status) {
|
||||||
struct l2cap_conn_req req;
|
l2cap_send_conn_req(chan);
|
||||||
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);
|
|
||||||
} else {
|
} else {
|
||||||
__clear_chan_timer(chan);
|
__clear_chan_timer(chan);
|
||||||
__set_chan_timer(chan,
|
__set_chan_timer(chan,
|
||||||
|
|
Loading…
Add table
Reference in a new issue