Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cacaf52f authored by Johan Hedberg's avatar Johan Hedberg
Browse files

Bluetooth: mgmt: Clear EIR data when disabling SSP



EIR shouldn't be enabled if SSP isn't enabled. This patch adds the
clearing of EIR data when disabling SSP and restores the data when SSP
is re-enabled.

Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
Acked-by: default avatarMarcel Holtmann <marcel@holtmann.org>
parent 1e163574
Loading
Loading
Loading
Loading
+19 −1
Original line number Diff line number Diff line
@@ -3250,6 +3250,18 @@ int mgmt_auth_enable_complete(struct hci_dev *hdev, u8 status)
	return err;
}

static int clear_eir(struct hci_dev *hdev)
{
	struct hci_cp_write_eir cp;

	if (!(hdev->features[6] & LMP_EXT_INQ))
		return 0;

	memset(&cp, 0, sizeof(cp));

	return hci_send_cmd(hdev, HCI_OP_WRITE_EIR, sizeof(cp), &cp);
}

int mgmt_ssp_enable_complete(struct hci_dev *hdev, u8 status)
{
	struct cmd_lookup match = { NULL, hdev };
@@ -3268,9 +3280,15 @@ int mgmt_ssp_enable_complete(struct hci_dev *hdev, u8 status)
	ev = cpu_to_le32(get_current_settings(hdev));
	err = mgmt_event(MGMT_EV_NEW_SETTINGS, hdev, &ev, sizeof(ev), match.sk);

	if (match.sk)
	if (match.sk) {
		sock_put(match.sk);

		if (test_bit(HCI_SSP_ENABLED, &hdev->dev_flags))
			update_eir(hdev);
		else
			clear_eir(hdev);
	}

	return err;
}