memset(hdev->scan_rsp_data, 0, sizeof(hdev->scan_rsp_data));
        hdev->scan_rsp_data_len = 0;
 
+       hdev->le_scan_type = LE_SCAN_PASSIVE;
+
        hdev->ssp_debug_mode = 0;
 }
 
        hci_dev_unlock(hdev);
 }
 
+static void hci_cc_le_set_scan_param(struct hci_dev *hdev, struct sk_buff *skb)
+{
+       struct hci_cp_le_set_scan_param *cp;
+       __u8 status = *((__u8 *) skb->data);
+
+       BT_DBG("%s status 0x%2.2x", hdev->name, status);
+
+       cp = hci_sent_cmd_data(hdev, HCI_OP_LE_SET_SCAN_PARAM);
+       if (!cp)
+               return;
+
+       hci_dev_lock(hdev);
+
+       if (!status)
+               hdev->le_scan_type = cp->type;
+
+       hci_dev_unlock(hdev);
+}
+
 static void hci_cc_le_set_scan_enable(struct hci_dev *hdev,
                                      struct sk_buff *skb)
 {
                hci_cc_le_set_adv_enable(hdev, skb);
                break;
 
+       case HCI_OP_LE_SET_SCAN_PARAM:
+               hci_cc_le_set_scan_param(hdev, skb);
+               break;
+
        case HCI_OP_LE_SET_SCAN_ENABLE:
                hci_cc_le_set_scan_enable(hdev, skb);
                break;