|
@@ -440,7 +440,7 @@ static void hci_cc_host_buffer_size(struct hci_dev *hdev, struct sk_buff *skb)
|
|
|
static void hci_cc_write_ssp_mode(struct hci_dev *hdev, struct sk_buff *skb)
|
|
|
{
|
|
|
__u8 status = *((__u8 *) skb->data);
|
|
|
- void *sent;
|
|
|
+ struct hci_cp_write_ssp_mode *sent;
|
|
|
|
|
|
BT_DBG("%s status 0x%2.2x", hdev->name, status);
|
|
|
|
|
@@ -448,10 +448,17 @@ static void hci_cc_write_ssp_mode(struct hci_dev *hdev, struct sk_buff *skb)
|
|
|
if (!sent)
|
|
|
return;
|
|
|
|
|
|
+ if (!status) {
|
|
|
+ if (sent->mode)
|
|
|
+ hdev->host_features[0] |= LMP_HOST_SSP;
|
|
|
+ else
|
|
|
+ hdev->host_features[0] &= ~LMP_HOST_SSP;
|
|
|
+ }
|
|
|
+
|
|
|
if (test_bit(HCI_MGMT, &hdev->dev_flags))
|
|
|
- mgmt_ssp_enable_complete(hdev, *((u8 *) sent), status);
|
|
|
+ mgmt_ssp_enable_complete(hdev, sent->mode, status);
|
|
|
else if (!status) {
|
|
|
- if (*((u8 *) sent))
|
|
|
+ if (sent->mode)
|
|
|
set_bit(HCI_SSP_ENABLED, &hdev->dev_flags);
|
|
|
else
|
|
|
clear_bit(HCI_SSP_ENABLED, &hdev->dev_flags);
|