diff options
author | Luiz Augusto von Dentz <luiz.von.dentz@intel.com> | 2020-02-14 21:08:57 +0300 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2020-02-14 21:15:30 +0300 |
commit | eab2404ba798a8efda2a970f44071c3406d94e57 (patch) | |
tree | 577b8b7c2a49eacd4382310c4f77236f301735b3 /net/bluetooth/l2cap_sock.c | |
parent | cee5f20fece32cd1722230cb05333f39db860698 (diff) | |
download | linux-eab2404ba798a8efda2a970f44071c3406d94e57.tar.xz |
Bluetooth: Add BT_PHY socket option
This adds BT_PHY socket option (read-only) which can be used to read
the PHYs in use by the underline connection.
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'net/bluetooth/l2cap_sock.c')
-rw-r--r-- | net/bluetooth/l2cap_sock.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/net/bluetooth/l2cap_sock.c b/net/bluetooth/l2cap_sock.c index 390a9afab647..9fb47b2b13c9 100644 --- a/net/bluetooth/l2cap_sock.c +++ b/net/bluetooth/l2cap_sock.c @@ -499,6 +499,7 @@ static int l2cap_sock_getsockopt(struct socket *sock, int level, int optname, struct l2cap_chan *chan = l2cap_pi(sk)->chan; struct bt_security sec; struct bt_power pwr; + u32 phys; int len, err = 0; BT_DBG("sk %p", sk); @@ -603,6 +604,18 @@ static int l2cap_sock_getsockopt(struct socket *sock, int level, int optname, err = -EFAULT; break; + case BT_PHY: + if (sk->sk_state == BT_CONNECTED) { + err = -ENOTCONN; + break; + } + + phys = hci_conn_get_phy(chan->conn->hcon); + + if (put_user(phys, (u32 __user *) optval)) + err = -EFAULT; + break; + default: err = -ENOPROTOOPT; break; |