- 25 1月, 2021 3 次提交
-
-
由 Archie Pusaka 提交于
Implements the monitor removal functionality for advertising monitor offloading to MSFT controllers. Supply handle = 0 to remove all monitors. Signed-off-by: NArchie Pusaka <apusaka@chromium.org> Reviewed-by: NMiao-chen Chou <mcchou@chromium.org> Reviewed-by: NYun-Hao Chung <howardchung@google.com> Reported-by: Nkernel test robot <lkp@intel.com> Reported-by: NDan Carpenter <dan.carpenter@oracle.com> Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
-
由 Archie Pusaka 提交于
Enables advertising monitor offloading to the controller, if MSFT extension is supported. The kernel won't adjust the monitor parameters to match what the controller supports - that is the user space's responsibility. This patch only manages the addition of monitors. Monitor removal is going to be handled by another patch. Signed-off-by: NArchie Pusaka <apusaka@chromium.org> Reviewed-by: NManish Mandlik <mmandlik@chromium.org> Reviewed-by: NMiao-chen Chou <mcchou@chromium.org> Reviewed-by: NYun-Hao Chung <howardchung@google.com> Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
-
由 Archie Pusaka 提交于
MSFT needs rssi parameter for monitoring advertisement packet, therefore we should supply them from mgmt. This adds a new opcode to add advertisement monitor with rssi parameters. Signed-off-by: NArchie Pusaka <apusaka@chromium.org> Reviewed-by: NManish Mandlik <mmandlik@chromium.org> Reviewed-by: NMiao-chen Chou <mcchou@chromium.org> Reviewed-by: NYun-Hao Chung <howardchung@google.com> Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
-
- 07 12月, 2020 6 次提交
-
-
由 Daniel Winkler 提交于
Queries tx power via HCI_LE_Read_Transmit_Power command when the hci device is initialized, and stores resulting min/max LE power in hdev struct. If command isn't available (< BT5 support), min/max values both default to HCI_TX_POWER_INVALID. This patch is manually verified by ensuring BT5 devices correctly query and receive controller tx power range. Reviewed-by: NSonny Sasaka <sonnysasaka@chromium.org> Signed-off-by: NDaniel Winkler <danielwinkler@google.com> Signed-off-by: NMarcel Holtmann <marcel@holtmann.org> Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
-
由 Daniel Winkler 提交于
This patch takes the min/max intervals and tx power optionally provided in mgmt interface, stores them in the advertisement struct, and uses them when configuring the hci requests. While tx power is not used if extended advertising is unavailable, software rotation will use the min and max advertising intervals specified by the client. This change is validated manually by ensuring the min/max intervals are propagated to the controller on both hatch (extended advertising) and kukui (no extended advertising) chromebooks, and that tx power is propagated correctly on hatch. These tests are performed with multiple advertisements simultaneously. Reviewed-by: NSonny Sasaka <sonnysasaka@chromium.org> Signed-off-by: NDaniel Winkler <danielwinkler@google.com> Signed-off-by: NMarcel Holtmann <marcel@holtmann.org> Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
-
由 Daniel Winkler 提交于
This patch adds support for the new advertising add interface, with the first command setting advertising parameters and the second to set advertising data. The set parameters command allows the caller to leave some fields "unset", with a params bitfield defining which params were purposefully set. Unset parameters will be given defaults when calling hci_add_adv_instance. The data passed to the param mgmt command is allowed to be flexible, so in the future if bluetoothd passes a larger structure with new params, the mgmt command will ignore the unknown members at the end. This change has been validated on both hatch (extended advertising) and kukui (no extended advertising) chromebooks running bluetoothd that support this new interface. I ran the following manual tests: - Set several (3) advertisements using modified test_advertisement.py - For each, validate correct data and parameters in btmon trace - Verified both for software rotation and extended adv Automatic test suite also run, testing many (25) scenarios of single and multi-advertising for data/parameter correctness. Reviewed-by: NSonny Sasaka <sonnysasaka@chromium.org> Signed-off-by: NDaniel Winkler <danielwinkler@google.com> Signed-off-by: NMarcel Holtmann <marcel@holtmann.org> Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
-
由 Daniel Winkler 提交于
We wish to handle advertising data separately from advertising parameters in our new MGMT requests. This change adds a helper that allows the advertising data and scan response to be updated for an existing advertising instance. Reviewed-by: NSonny Sasaka <sonnysasaka@chromium.org> Signed-off-by: NDaniel Winkler <danielwinkler@google.com> Signed-off-by: NMarcel Holtmann <marcel@holtmann.org> Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
-
由 Howard Chung 提交于
This patch add a configurable parameter to switch off the interleave scan feature. Signed-off-by: NHoward Chung <howardchung@google.com> Reviewed-by: NAlain Michaud <alainm@chromium.org> Signed-off-by: NMarcel Holtmann <marcel@holtmann.org> Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
-
由 Howard Chung 提交于
This patch implements the interleaving between allowlist scan and no-filter scan. It'll be used to save power when at least one monitor is registered and at least one pending connection or one device to be scanned for. The durations of the allowlist scan and the no-filter scan are controlled by MGMT command: Set Default System Configuration. The default values are set randomly for now. Signed-off-by: NHoward Chung <howardchung@google.com> Reviewed-by: NAlain Michaud <alainm@chromium.org> Reviewed-by: NManish Mandlik <mmandlik@chromium.org> Signed-off-by: NMarcel Holtmann <marcel@holtmann.org> Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
-
- 13 9月, 2020 2 次提交
-
-
由 Abhishek Pandit-Subedi 提交于
Emit controller suspend and resume events when we are ready for suspend and we've resumed from suspend. The controller suspend event will report whatever suspend state was successfully entered. The controller resume event will check the first HCI event that was received after we finished preparing for suspend and, if it was a connection event, store the address of the peer that caused the event. If it was not a connection event, we mark the wake reason as an unexpected event. Here is a sample btmon trace with these events: @ MGMT Event: Controller Suspended (0x002d) plen 1 Suspend state: Page scanning and/or passive scanning (2) @ MGMT Event: Controller Resumed (0x002e) plen 8 Wake reason: Remote wake due to peer device connection (2) LE Address: CD:F3:CD:13:C5:9A (OUI CD-F3-CD) Signed-off-by: NAbhishek Pandit-Subedi <abhishekpandit@chromium.org> Reviewed-by: NMiao-chen Chou <mcchou@chromium.org> Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
-
由 Abhishek Pandit-Subedi 提交于
Add the controller suspend and resume events, which will signal when Bluetooth has completed preparing for suspend and when it's ready for resume. Signed-off-by: NAbhishek Pandit-Subedi <abhishekpandit@chromium.org> Reviewed-by: NMiao-chen Chou <mcchou@chromium.org> Reviewed-by: NSonny Sasaka <sonnysasaka@chromium.org> Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
-
- 30 7月, 2020 1 次提交
-
-
由 Marcel Holtmann 提交于
When the LL Privacy support is available, then as part of enabling or disabling passive background scanning, it is required to set up the controller based address resolution as well. Since only passive background scanning is utilizing the whitelist, the address resolution is now bound to the whitelist and passive background scanning. All other resolution can be easily done by the host stack. Signed-off-by: NMarcel Holtmann <marcel@holtmann.org> Signed-off-by: NSathish Narsimman <sathish.narasimman@intel.com> Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
-
- 16 7月, 2020 1 次提交
-
-
由 Patrick Steinhardt 提交于
Starting with the upgrade to v5.8-rc3, I've noticed I wasn't able to connect to my Bluetooth headset properly anymore. While connecting to the device would eventually succeed, bluetoothd seemed to be confused about the current connection state where the state was flapping hence and forth. Bisecting this issue led to commit 3ca44c16 (Bluetooth: Consolidate encryption handling in hci_encrypt_cfm, 2020-05-19), which refactored `hci_encrypt_cfm` to also handle updating the connection state. The commit in question changed the code to call `hci_connect_cfm` inside `hci_encrypt_cfm` and to change the connection state. But with the conversion, we now only update the connection state if a status was set already. In fact, the reverse should be true: the status should be updated if no status is yet set. So let's fix the isuse by reversing the condition. Fixes: 3ca44c16 ("Bluetooth: Consolidate encryption handling in hci_encrypt_cfm") Signed-off-by: NPatrick Steinhardt <ps@pks.im> Acked-by: NLuiz Augusto von Dentz <luiz.von.dentz@intel.com> Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
-
- 07 7月, 2020 1 次提交
-
-
由 Alain Michaud 提交于
This patch adds a configurable LE autoconnect timeout. Signed-off-by: NAlain Michaud <alainm@chromium.org> Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
-
- 23 6月, 2020 1 次提交
-
-
由 Luiz Augusto von Dentz 提交于
E0 is not allowed with Level 4: BLUETOOTH CORE SPECIFICATION Version 5.2 | Vol 3, Part C page 1319: '128-bit equivalent strength for link and encryption keys required using FIPS approved algorithms (E0 not allowed, SAFER+ not allowed, and P-192 not allowed; encryption key not shortened' SC enabled: > HCI Event: Read Remote Extended Features (0x23) plen 13 Status: Success (0x00) Handle: 256 Page: 1/2 Features: 0x0b 0x00 0x00 0x00 0x00 0x00 0x00 0x00 Secure Simple Pairing (Host Support) LE Supported (Host) Secure Connections (Host Support) > HCI Event: Encryption Change (0x08) plen 4 Status: Success (0x00) Handle: 256 Encryption: Enabled with AES-CCM (0x02) SC disabled: > HCI Event: Read Remote Extended Features (0x23) plen 13 Status: Success (0x00) Handle: 256 Page: 1/2 Features: 0x03 0x00 0x00 0x00 0x00 0x00 0x00 0x00 Secure Simple Pairing (Host Support) LE Supported (Host) > HCI Event: Encryption Change (0x08) plen 4 Status: Success (0x00) Handle: 256 Encryption: Enabled with E0 (0x01) [May 8 20:23] Bluetooth: hci0: Invalid security: expect AES but E0 was used < HCI Command: Disconnect (0x01|0x0006) plen 3 Handle: 256 Reason: Authentication Failure (0x05) Signed-off-by: NLuiz Augusto von Dentz <luiz.von.dentz@intel.com> Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
-
- 18 6月, 2020 8 次提交
-
-
由 Manish Mandlik 提交于
If user decides to cancel the ongoing pairing process (e.g. by clicking the cancel button on pairing/passkey window), abort any ongoing pairing and then terminate the link if it was created because of the pair device action. Signed-off-by: NManish Mandlik <mmandlik@google.com> Signed-off-by: NMarcel Holtmann <marcel@holtmann.org> Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
-
由 Miao-chen Chou 提交于
This calls hci_update_background_scan() when there is any update on the advertisement monitors. If there is at least one advertisement monitor, the filtering policy of scan parameters should be 0x00. This also reports device found mgmt events if there is at least one monitor. The following cases were tested with btmgmt advmon-* commands. (1) add a ADV monitor and observe that the passive scanning is triggered. (2) remove the last ADV monitor and observe that the passive scanning is terminated. (3) with a LE peripheral paired, repeat (1) and observe the passive scanning continues. (4) with a LE peripheral paired, repeat (2) and observe the passive scanning continues. (5) with a ADV monitor, suspend/resume the host and observe the passive scanning continues. Signed-off-by: NMiao-chen Chou <mcchou@chromium.org> Signed-off-by: NMarcel Holtmann <marcel@holtmann.org> Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
-
由 Miao-chen Chou 提交于
This adds the request handler of MGMT_OP_REMOVE_ADV_MONITOR command. Note that the controller-based monitoring is not yet in place. This removes the internal monitor(s) without sending HCI traffic, so the request returns immediately. The following test was performed. - Issue btmgmt advmon-remove with valid and invalid handles. Signed-off-by: NMiao-chen Chou <mcchou@chromium.org> Signed-off-by: NMarcel Holtmann <marcel@holtmann.org> Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
-
由 Miao-chen Chou 提交于
This adds the request handler of MGMT_OP_ADD_ADV_PATTERNS_MONITOR command. Note that the controller-based monitoring is not yet in place. This tracks the content of the monitor without sending HCI traffic, so the request returns immediately. The following manual test was performed. - Issue btmgmt advmon-add with valid and invalid inputs. - Issue btmgmt advmon-add more the allowed number of monitors. Signed-off-by: NMiao-chen Chou <mcchou@chromium.org> Signed-off-by: NMarcel Holtmann <marcel@holtmann.org> Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
-
由 Miao-chen Chou 提交于
This adds the request handler of MGMT_OP_READ_ADV_MONITOR_FEATURES command. Since the controller-based monitoring is not yet in place, this report only the supported features but not the enabled features. The following test was performed. - Issuing btmgmt advmon-features. Signed-off-by: NMiao-chen Chou <mcchou@chromium.org> Signed-off-by: NMarcel Holtmann <marcel@holtmann.org> Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
-
由 Abhishek Pandit-Subedi 提交于
Replace the wakeable boolean with flags in hci_conn_params and all users of this boolean. This will be used by the get/set device flags mgmt op. Signed-off-by: NAbhishek Pandit-Subedi <abhishekpandit@chromium.org> Reviewed-by: NAlain Michaud <alainm@chromium.org> Signed-off-by: NMarcel Holtmann <marcel@holtmann.org> Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
-
由 Abhishek Pandit-Subedi 提交于
Since the classic device list now supports flags, convert the wakeable list into a flag on the existing device list. Signed-off-by: NAbhishek Pandit-Subedi <abhishekpandit@chromium.org> Reviewed-by: NAlain Michaud <alainm@chromium.org> Signed-off-by: NMarcel Holtmann <marcel@holtmann.org> Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
-
由 Abhishek Pandit-Subedi 提交于
In order to more easily add device flags to classic devices, create a new type of bdaddr_list that supports setting flags. Signed-off-by: NAbhishek Pandit-Subedi <abhishekpandit@chromium.org> Reviewed-by: NAlain Michaud <alainm@chromium.org> Signed-off-by: NMarcel Holtmann <marcel@holtmann.org> Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
-
- 12 6月, 2020 1 次提交
-
-
由 Alain Michaud 提交于
This patch centralized the initialization of default parameters. This is required to allow clients to more easily customize the default system parameters. Signed-off-by: NAlain Michaud <alainm@chromium.org> Reviewed-by: NAbhishek Pandit-Subedi <abhishekpandit@chromium.org> Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
-
- 20 5月, 2020 1 次提交
-
-
由 Luiz Augusto von Dentz 提交于
This makes hci_encrypt_cfm calls hci_connect_cfm in case the connection state is BT_CONFIG so callers don't have to check the state. Signed-off-by: NLuiz Augusto von Dentz <luiz.von.dentz@intel.com> Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
-
- 13 5月, 2020 2 次提交
-
-
由 Abhishek Pandit-Subedi 提交于
Let drivers have a hook to disable configuring scanning during suspend. Drivers should use the device_may_wakeup function call to determine whether hci should be configured for wakeup. For example, an implementation for btusb may look like the following: bool btusb_prevent_wake(struct hci_dev *hdev) { struct btusb_data *data = hci_get_drvdata(hdev); return !device_may_wakeup(&data->udev->dev); } Signed-off-by: NAbhishek Pandit-Subedi <abhishekpandit@chromium.org> Reviewed-by: NAlain Michaud <alainm@chromium.org> Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
-
由 Abhishek Pandit-Subedi 提交于
Renamed BT_SUSPEND_COMPLETE to BT_SUSPEND_CONFIGURE_WAKE since it sets up the event filter and whitelist for wake-up. Signed-off-by: NAbhishek Pandit-Subedi <abhishekpandit@chromium.org> Reviewed-by: NAlain Michaud <alainm@chromium.org> Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
-
- 11 5月, 2020 1 次提交
-
-
由 Marcel Holtmann 提交于
When setting HCI_MGMT_HDEV_OPTIONAL it is possible to target a specific conntroller or a global interface. Signed-off-by: NMarcel Holtmann <marcel@holtmann.org> Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
-
- 15 4月, 2020 1 次提交
-
-
由 Marcel Holtmann 提交于
When the controller is being reset or power cycled, then the flag HCI_LL_RPA_RESOLUTION which indicates if controller based address resolution is active needs to be also reset. Signed-off-by: NMarcel Holtmann <marcel@holtmann.org> Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
-
- 05 4月, 2020 2 次提交
-
-
由 Marcel Holtmann 提交于
With the Read Local Simple Pairing Options command it is possible to retrieve the support for max encryption key size supported by the controller and also if the controller correctly verifies the ECDH public key during pairing. Signed-off-by: NMarcel Holtmann <marcel@holtmann.org> Reviewed-by: NAlain Michaud <alainm@chromium.org> Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
-
由 Miao-chen Chou 提交于
Micrsoft defined a set for HCI vendor extensions. Check the following link for details: https://docs.microsoft.com/en-us/windows-hardware/drivers/bluetooth/microsoft-defined-bluetooth-hci-commands-and-events This provides the basic framework to enable the extension and read its supported features. Drivers still have to declare support for this extension before it can be utilized by the host stack. Signed-off-by: NMiao-chen Chou <mcchou@chromium.org> Signed-off-by: NMarcel Holtmann <marcel@holtmann.org> Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
-
- 12 3月, 2020 4 次提交
-
-
由 Abhishek Pandit-Subedi 提交于
To prevent spurious wake ups, we disable any discovery or advertising when we enter suspend and restore it when we exit suspend. While paused, we disable any management requests to modify discovery or advertising. Signed-off-by: NAbhishek Pandit-Subedi <abhishekpandit@chromium.org> Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
-
由 Abhishek Pandit-Subedi 提交于
To handle LE devices, we must first disable passive scanning and disconnect all connected devices. Once that is complete, we update the whitelist and re-enable scanning Signed-off-by: NAbhishek Pandit-Subedi <abhishekpandit@chromium.org> Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
-
由 Abhishek Pandit-Subedi 提交于
To handle BR/EDR devices, we first disable page scan and disconnect all connected devices. Once that is complete, we add event filters (for devices that can wake the system) and re-enable page scan. Signed-off-by: NAbhishek Pandit-Subedi <abhishekpandit@chromium.org> Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
-
由 Abhishek Pandit-Subedi 提交于
Register for PM_SUSPEND_PREPARE and PM_POST_SUSPEND to make sure the Bluetooth controller is prepared correctly for suspend/resume. Implement the registration, scheduling and task handling portions only in this patch. Signed-off-by: NAbhishek Pandit-Subedi <abhishekpandit@chromium.org> Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
-
- 08 3月, 2020 1 次提交
-
-
由 Alain Michaud 提交于
This change introduces a wide band speech setting which allows higher level clients to query the local controller support for wide band speech as well as set the setting state when the radio is powered off. Internally, this setting controls if erroneous data reporting is enabled on the controller. Signed-off-by: NAlain Michaud <alainm@chromium.org> Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
-
- 15 2月, 2020 1 次提交
-
-
由 Luiz Augusto von Dentz 提交于
This adds BT_PHY socket option (read-only) which can be used to read the PHYs in use by the underline connection. Signed-off-by: NLuiz Augusto von Dentz <luiz.von.dentz@intel.com> Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
-
- 16 1月, 2020 1 次提交
-
-
由 Alain Michaud 提交于
MGMT command is added to receive the list of blocked keys from user-space. The list is used to: 1) Block keys from being distributed by the device during the ke distribution phase of SMP. 2) Filter out any keys that were previously saved so they are no longer used. Signed-off-by: NAlain Michaud <alainm@chromium.org> Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
-
- 04 1月, 2020 1 次提交
-
-
由 Luiz Augusto von Dentz 提交于
This handles LE PHY Update Complete event and store both tx_phy and rx_phy into hci_conn. Signed-off-by: NLuiz Augusto von Dentz <luiz.von.dentz@intel.com> Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
-
- 05 9月, 2019 1 次提交
-
-
Changes made to add support for fast advertising interval as per core 4.1 specification, section 9.3.11.2. A peripheral device entering any of the following GAP modes and sending either non-connectable advertising events or scannable undirected advertising events should use adv_fast_interval2 (100ms - 150ms) for adv_fast_period(30s). - Non-Discoverable Mode - Non-Connectable Mode - Limited Discoverable Mode - General Discoverable Mode Signed-off-by: NSpoorthi Ravishankar Koppad <spoorthix.k@intel.com> Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
-