diff options
Diffstat (limited to 'net/bluetooth/hci_core.c')
| -rw-r--r-- | net/bluetooth/hci_core.c | 15 | 
1 files changed, 10 insertions, 5 deletions
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c index d817c932d634..ace5e55fe5a3 100644 --- a/net/bluetooth/hci_core.c +++ b/net/bluetooth/hci_core.c @@ -341,7 +341,6 @@ static void hci_init1_req(struct hci_request *req, unsigned long opt)  static void bredr_setup(struct hci_request *req)  { -	struct hci_cp_delete_stored_link_key cp;  	__le16 param;  	__u8 flt_type; @@ -365,10 +364,6 @@ static void bredr_setup(struct hci_request *req)  	param = __constant_cpu_to_le16(0x7d00);  	hci_req_add(req, HCI_OP_WRITE_CA_TIMEOUT, 2, ¶m); -	bacpy(&cp.bdaddr, BDADDR_ANY); -	cp.delete_all = 0x01; -	hci_req_add(req, HCI_OP_DELETE_STORED_LINK_KEY, sizeof(cp), &cp); -  	/* Read page scan parameters */  	if (req->hdev->hci_ver > BLUETOOTH_VER_1_1) {  		hci_req_add(req, HCI_OP_READ_PAGE_SCAN_ACTIVITY, 0, NULL); @@ -602,6 +597,16 @@ static void hci_init3_req(struct hci_request *req, unsigned long opt)  	struct hci_dev *hdev = req->hdev;  	u8 p; +	/* Only send HCI_Delete_Stored_Link_Key if it is supported */ +	if (hdev->commands[6] & 0x80) { +		struct hci_cp_delete_stored_link_key cp; + +		bacpy(&cp.bdaddr, BDADDR_ANY); +		cp.delete_all = 0x01; +		hci_req_add(req, HCI_OP_DELETE_STORED_LINK_KEY, +			    sizeof(cp), &cp); +	} +  	if (hdev->commands[5] & 0x10)  		hci_setup_link_policy(req);  |