Hi Andrei, On Wed, Mar 28, 2012 at 5:56 AM, Andrei Emeltchenko <andrei.emeltchenko.news@xxxxxxxxx> wrote: > Hi Andre, > > On Tue, Mar 27, 2012 at 08:59:36PM -0300, Andre Guedes wrote: >> In order to establish a LE connection we need the address type >> information. User-space already pass this information to kernel >> through struct sockaddr_l2. >> >> This patch adds the dst_type parameter to l2cap_chan_connect so we >> are able to pass the address type info from user-space down to >> hci_conn layer. >> >> Signed-off-by: Andre Guedes <andre.guedes@xxxxxxxxxxxxx> >> --- >> include/net/bluetooth/l2cap.h | 2 +- >> net/bluetooth/l2cap_core.c | 11 ++++++----- >> net/bluetooth/l2cap_sock.c | 2 +- >> 3 files changed, 8 insertions(+), 7 deletions(-) >> >> diff --git a/include/net/bluetooth/l2cap.h b/include/net/bluetooth/l2cap.h >> index d14967e..262628c 100644 >> --- a/include/net/bluetooth/l2cap.h >> +++ b/include/net/bluetooth/l2cap.h >> @@ -911,7 +911,7 @@ struct l2cap_chan *l2cap_chan_create(void); >> void l2cap_chan_close(struct l2cap_chan *chan, int reason); >> void l2cap_chan_destroy(struct l2cap_chan *chan); >> int l2cap_chan_connect(struct l2cap_chan *chan, __le16 psm, u16 cid, >> - bdaddr_t *dst); >> + bdaddr_t *dst, u8 dst_type); >> int l2cap_chan_send(struct l2cap_chan *chan, struct msghdr *msg, size_t len, >> u32 priority); >> void l2cap_chan_busy(struct l2cap_chan *chan, int busy); >> diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c >> index 91b02de..e0dc4ca 100644 >> --- a/net/bluetooth/l2cap_core.c >> +++ b/net/bluetooth/l2cap_core.c >> @@ -1131,7 +1131,8 @@ static struct l2cap_chan *l2cap_global_chan_by_psm(int state, __le16 psm, bdaddr >> return c1; >> } >> >> -int l2cap_chan_connect(struct l2cap_chan *chan, __le16 psm, u16 cid, bdaddr_t *dst) >> +int l2cap_chan_connect(struct l2cap_chan *chan, __le16 psm, u16 cid, >> + bdaddr_t *dst, u8 dst_type) >> { >> struct sock *sk = chan->sk; >> bdaddr_t *src = &bt_sk(sk)->src; >> @@ -1141,8 +1142,8 @@ int l2cap_chan_connect(struct l2cap_chan *chan, __le16 psm, u16 cid, bdaddr_t *d >> __u8 auth_type; >> int err; >> >> - BT_DBG("%s -> %s psm 0x%2.2x", batostr(src), batostr(dst), >> - __le16_to_cpu(chan->psm)); >> + BT_DBG("%s -> %s (type %u) psm 0x%2.2x", batostr(src), batostr(dst), >> + dst_type, __le16_to_cpu(chan->psm)); > > If you change style for other functions you might change it here as well. Sorry, didn't follow you here. >> >> hdev = hci_get_route(dst, src); >> if (!hdev) >> @@ -1216,10 +1217,10 @@ int l2cap_chan_connect(struct l2cap_chan *chan, __le16 psm, u16 cid, bdaddr_t *d >> auth_type = l2cap_get_auth_type(chan); >> >> if (chan->dcid == L2CAP_CID_LE_DATA) >> - hcon = hci_connect(hdev, LE_LINK, dst, MGMT_ADDR_LE_RANDOM, >> + hcon = hci_connect(hdev, LE_LINK, dst, dst_type, >> chan->sec_level, auth_type); >> else >> - hcon = hci_connect(hdev, ACL_LINK, dst, MGMT_ADDR_BREDR, >> + hcon = hci_connect(hdev, ACL_LINK, dst, dst_type, >> chan->sec_level, auth_type); >> >> if (IS_ERR(hcon)) { >> diff --git a/net/bluetooth/l2cap_sock.c b/net/bluetooth/l2cap_sock.c >> index 53e563f..4b38cf8 100644 >> --- a/net/bluetooth/l2cap_sock.c >> +++ b/net/bluetooth/l2cap_sock.c >> @@ -124,7 +124,7 @@ static int l2cap_sock_connect(struct socket *sock, struct sockaddr *addr, int al >> return -EINVAL; >> >> err = l2cap_chan_connect(chan, la.l2_psm, __le16_to_cpu(la.l2_cid), >> - &la.l2_bdaddr); >> + &la.l2_bdaddr, la.l2_bdaddr_type); > > Would it make sense to pass la as a parameter? I guess so. If we all agree this is a valid refactoring, I take care of it in a separated patch. Thanks, Andre -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html