/* If we created new params, or existing params were marked as disabled,
         * mark them to be used just once to connect.
         */
-       if (params->auto_connect == HCI_AUTO_CONN_DISABLED) {
-               params->auto_connect = HCI_AUTO_CONN_EXPLICIT;
+       if (params->auto_connect == HCI_AUTO_CONN_DISABLED ||
+           params->auto_connect == HCI_AUTO_CONN_REPORT) {
                list_del_init(¶ms->action);
                list_add(¶ms->action, &hdev->pend_le_conns);
        }
 
                        return param;
        }
 
-       list_for_each_entry(param, &hdev->pend_le_reports, action) {
-               if (bacmp(¶m->addr, addr) == 0 &&
-                   param->addr_type == addr_type &&
-                   param->explicit_connect)
-                       return param;
-       }
-
        return NULL;
 }
 
 
        /* If we're not connectable only connect devices that we have in
         * our pend_le_conns list.
         */
-       params = hci_explicit_connect_lookup(hdev, addr, addr_type);
-
+       params = hci_pend_le_action_lookup(&hdev->pend_le_conns, addr,
+                                          addr_type);
        if (!params)
                return NULL;
 
 
                __hci_update_background_scan(req);
                break;
        case HCI_AUTO_CONN_REPORT:
-               list_add(¶ms->action, &hdev->pend_le_reports);
+               if (params->explicit_connect)
+                       list_add(¶ms->action, &hdev->pend_le_conns);
+               else
+                       list_add(¶ms->action, &hdev->pend_le_reports);
                __hci_update_background_scan(req);
                break;
        case HCI_AUTO_CONN_DIRECT: