From: Anderson Briglia <anderson.briglia@xxxxxxxxxxxxx> This patch implements Disable RSSI Monitor command. It is used to remove elements from RSSI monitor list. Signed-off-by: Anderson Briglia <anderson.briglia@xxxxxxxxxxxxx> --- net/bluetooth/mgmt.c | 24 +++++++++++++++++++++++- 1 files changed, 23 insertions(+), 1 deletions(-) diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c index 410f614..a4a2927 100644 --- a/net/bluetooth/mgmt.c +++ b/net/bluetooth/mgmt.c @@ -1957,6 +1957,20 @@ static int rssi_monitor_add(u16 index, bdaddr_t *bdaddr, s8 low_trigger, return 0; } +static int rssi_monitor_remove(u16 index, bdaddr_t *bdaddr) +{ + struct rssi_monitor *rm; + + rm = rssi_monitor_find(index, bdaddr); + if (!rm) + return -EINVAL; + + list_del(&rm->list); + kfree(rm); + + return 0; +} + static int enable_rssi_monitor(struct sock *sk, u16 index, unsigned char *data, u16 len) { @@ -1977,9 +1991,17 @@ static int enable_rssi_monitor(struct sock *sk, u16 index, static int disable_rssi_monitor(struct sock *sk, u16 index, unsigned char *data, u16 len) { + struct mgmt_cp_disable_rssi_monitor *cp; + BT_DBG("hci%u", index); - return -ENOSYS; + cp = (void *) data; + + if (len != sizeof(*cp)) + return cmd_status(sk, index, + MGMT_OP_DISABLE_RSSI_MONITOR, EINVAL); + + return rssi_monitor_remove(index, &cp->bdaddr); } int mgmt_control(struct sock *sk, struct msghdr *msg, size_t msglen) -- 1.7.4.1 -- 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