Message ID | 20230707224318.677205-1-luiz.dentz@gmail.com |
---|---|
State | New |
Headers | show |
Series | [v2,1/2] Bluetooth: MGMT: Fix always using HCI_MAX_AD_LENGTH | expand |
This is automated email and please do not reply to this email! Dear submitter, Thank you for submitting the patches to the linux bluetooth mailing list. This is a CI test results with your patch series: PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=763576 ---Test result--- Test Summary: CheckPatch PASS 1.76 seconds GitLint PASS 0.56 seconds SubjectPrefix PASS 0.18 seconds BuildKernel PASS 34.73 seconds CheckAllWarning PASS 37.00 seconds CheckSparse WARNING 42.19 seconds CheckSmatch WARNING 113.61 seconds BuildKernel32 PASS 33.37 seconds TestRunnerSetup PASS 500.57 seconds TestRunner_l2cap-tester PASS 23.05 seconds TestRunner_iso-tester PASS 41.37 seconds TestRunner_bnep-tester PASS 10.82 seconds TestRunner_mgmt-tester FAIL 217.84 seconds TestRunner_rfcomm-tester PASS 15.73 seconds TestRunner_sco-tester PASS 16.70 seconds TestRunner_ioctl-tester PASS 17.81 seconds TestRunner_mesh-tester PASS 13.42 seconds TestRunner_smp-tester PASS 14.30 seconds TestRunner_userchan-tester PASS 11.15 seconds IncrementalBuild PASS 37.71 seconds Details ############################## Test: CheckSparse - WARNING Desc: Run sparse tool with linux kernel Output: net/bluetooth/hci_event.c: note: in included file (through include/net/bluetooth/hci_core.h): ############################## Test: CheckSmatch - WARNING Desc: Run smatch tool with source Output: net/bluetooth/hci_event.c: note: in included file (through include/net/bluetooth/hci_core.h): ############################## Test: TestRunner_mgmt-tester - FAIL Desc: Run mgmt-tester with test-runner Output: Total: 497, Passed: 492 (99.0%), Failed: 2, Not Run: 3 Failed Test Cases Read Ext Advertising Features - Success 3 (PHY flags) Failed 0.244 seconds Ext Adv MGMT Params - (5.0) Success Failed 0.288 seconds --- Regards, Linux Bluetooth
Hello: This series was applied to bluetooth/bluetooth-next.git (master) by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>: On Fri, 7 Jul 2023 15:43:17 -0700 you wrote: > From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> > > HCI_MAX_AD_LENGTH shall only be used if the controller doesn't support > extended advertising, otherwise HCI_MAX_EXT_AD_LENGTH shall be used > instead. > > Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> > > [...] Here is the summary with links: - [v2,1/2] Bluetooth: MGMT: Fix always using HCI_MAX_AD_LENGTH https://git.kernel.org/bluetooth/bluetooth-next/c/c9a85685d0c1 - [v2,2/2] Bluetooth: hci_sync: Fix using Legacy PDUs with certain advertising (no matching commit) You are awesome, thank you!
diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h index 105c1c394f82..8200a6689b39 100644 --- a/include/net/bluetooth/hci_core.h +++ b/include/net/bluetooth/hci_core.h @@ -1801,6 +1801,10 @@ void hci_conn_del_sysfs(struct hci_conn *conn); /* Extended advertising support */ #define ext_adv_capable(dev) (((dev)->le_features[1] & HCI_LE_EXT_ADV)) +/* Maximum advertising length */ +#define max_adv_len(dev) \ + (ext_adv_capable(dev) ? HCI_MAX_EXT_AD_LENGTH : HCI_MAX_AD_LENGTH) + /* BLUETOOTH CORE SPECIFICATION Version 5.3 | Vol 4, Part E page 1789: * * C24: Mandatory if the LE Controller supports Connection State and either diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c index c29eece88d2c..f1fcece29e7d 100644 --- a/net/bluetooth/hci_event.c +++ b/net/bluetooth/hci_event.c @@ -1747,7 +1747,7 @@ static void store_pending_adv_report(struct hci_dev *hdev, bdaddr_t *bdaddr, { struct discovery_state *d = &hdev->discovery; - if (len > HCI_MAX_AD_LENGTH) + if (len > max_adv_len(hdev)) return; bacpy(&d->last_adv_addr, bdaddr); @@ -6249,8 +6249,9 @@ static void process_adv_report(struct hci_dev *hdev, u8 type, bdaddr_t *bdaddr, return; } - if (!ext_adv && len > HCI_MAX_AD_LENGTH) { - bt_dev_err_ratelimited(hdev, "legacy adv larger than 31 bytes"); + if (len > max_adv_len(hdev)) { + bt_dev_err_ratelimited(hdev, + "adv larger than maximum supported"); return; } @@ -6315,7 +6316,8 @@ static void process_adv_report(struct hci_dev *hdev, u8 type, bdaddr_t *bdaddr, */ conn = check_pending_le_conn(hdev, bdaddr, bdaddr_type, bdaddr_resolved, type); - if (!ext_adv && conn && type == LE_ADV_IND && len <= HCI_MAX_AD_LENGTH) { + if (!ext_adv && conn && type == LE_ADV_IND && + len <= max_adv_len(hdev)) { /* Store report for later inclusion by * mgmt_device_connected */ @@ -6456,7 +6458,7 @@ static void hci_le_adv_report_evt(struct hci_dev *hdev, void *data, info->length + 1)) break; - if (info->length <= HCI_MAX_AD_LENGTH) { + if (info->length <= max_adv_len(hdev)) { rssi = info->data[info->length]; process_adv_report(hdev, info->type, &info->bdaddr, info->bdaddr_type, NULL, 0, rssi, diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c index 3156bc27088e..33c06f7c7641 100644 --- a/net/bluetooth/mgmt.c +++ b/net/bluetooth/mgmt.c @@ -8428,8 +8428,8 @@ static int read_adv_features(struct sock *sk, struct hci_dev *hdev, supported_flags = get_supported_adv_flags(hdev); rp->supported_flags = cpu_to_le32(supported_flags); - rp->max_adv_data_len = HCI_MAX_AD_LENGTH; - rp->max_scan_rsp_len = HCI_MAX_AD_LENGTH; + rp->max_adv_data_len = max_adv_len(hdev); + rp->max_scan_rsp_len = max_adv_len(hdev); rp->max_instances = hdev->le_num_of_adv_sets; rp->num_instances = hdev->adv_instance_cnt; @@ -8465,7 +8465,7 @@ static u8 calculate_name_len(struct hci_dev *hdev) static u8 tlv_data_max_len(struct hci_dev *hdev, u32 adv_flags, bool is_adv_data) { - u8 max_len = HCI_MAX_AD_LENGTH; + u8 max_len = max_adv_len(hdev); if (is_adv_data) { if (adv_flags & (MGMT_ADV_FLAG_DISCOV |