2022-09-07 23:34:23

by Luiz Augusto von Dentz

[permalink] [raw]
Subject: [PATCH v2 1/2] Bluetooth: MGMT: Fix Set PHY Configuration command

From: Luiz Augusto von Dentz <[email protected]>

The command shall accept any subset that is considered configurable but
instead it was only accepting the exact match causing errors such as:

[mgmt]# phy
Supported phys: BR1M1SLOT BR1M3SLOT BR1M5SLOT EDR2M1SLOT EDR2M3SLOT
EDR2M5SLOT EDR3M1SLOT EDR3M3SLOT EDR3M5SLOT LE1MTX LE1MRX LE2MTX
LE2MRX LECODEDTX LECODEDRX
Configurable phys: BR1M3SLOT BR1M5SLOT EDR2M1SLOT EDR2M3SLOT EDR2M5SLOT
EDR3M1SLOT EDR3M3SLOT EDR3M5SLOT LE2MTX LE2MRX LECODEDTX LECODEDRX
Selected phys: BR1M1SLOT BR1M3SLOT BR1M5SLOT EDR2M1SLOT EDR2M3SLOT
EDR2M5SLOT EDR3M1SLOT EDR3M3SLOT EDR3M5SLOT LE1MTX LE1MRX
[mgmt]# phy BR1M3SLOT BR1M5SLOT EDR2M1SLOT EDR2M3SLOT EDR2M5SLOT
EDR3M1SLOT EDR3M3SLOT EDR3M5SLOT LE2MTX LE2MRX
Could not set PHY Configuration with status 0x0d (Invalid Parameters)

Fixes: 0314f2867fa0 ("Bluetooth: Implement Set PHY Confguration command")
Signed-off-by: Luiz Augusto von Dentz <[email protected]>
---
net/bluetooth/mgmt.c | 18 +++++-------------
1 file changed, 5 insertions(+), 13 deletions(-)

diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
index 4c421ebac669..34443db21e44 100644
--- a/net/bluetooth/mgmt.c
+++ b/net/bluetooth/mgmt.c
@@ -4020,8 +4020,8 @@ static int set_default_phy_sync(struct hci_dev *hdev, void *data)
if (!(selected_phys & MGMT_PHY_LE_RX_MASK))
cp_phy.all_phys |= 0x02;

- if (selected_phys & MGMT_PHY_LE_1M_TX)
- cp_phy.tx_phys |= HCI_LE_SET_PHY_1M;
+ /* 1M PHY shall always be supported */
+ cp_phy.tx_phys |= HCI_LE_SET_PHY_1M;

if (selected_phys & MGMT_PHY_LE_2M_TX)
cp_phy.tx_phys |= HCI_LE_SET_PHY_2M;
@@ -4029,8 +4029,8 @@ static int set_default_phy_sync(struct hci_dev *hdev, void *data)
if (selected_phys & MGMT_PHY_LE_CODED_TX)
cp_phy.tx_phys |= HCI_LE_SET_PHY_CODED;

- if (selected_phys & MGMT_PHY_LE_1M_RX)
- cp_phy.rx_phys |= HCI_LE_SET_PHY_1M;
+ /* 1M PHY shall always be supported */
+ cp_phy.rx_phys |= HCI_LE_SET_PHY_1M;

if (selected_phys & MGMT_PHY_LE_2M_RX)
cp_phy.rx_phys |= HCI_LE_SET_PHY_2M;
@@ -4049,14 +4049,13 @@ static int set_phy_configuration(struct sock *sk, struct hci_dev *hdev,
{
struct mgmt_cp_set_phy_configuration *cp = data;
struct mgmt_pending_cmd *cmd;
- u32 selected_phys, configurable_phys, supported_phys, unconfigure_phys;
+ u32 selected_phys, supported_phys;
u16 pkt_type = (HCI_DH1 | HCI_DM1);
bool changed = false;
int err;

bt_dev_dbg(hdev, "sock %p", sk);

- configurable_phys = get_configurable_phys(hdev);
supported_phys = get_supported_phys(hdev);
selected_phys = __le32_to_cpu(cp->selected_phys);

@@ -4065,13 +4064,6 @@ static int set_phy_configuration(struct sock *sk, struct hci_dev *hdev,
MGMT_OP_SET_PHY_CONFIGURATION,
MGMT_STATUS_INVALID_PARAMS);

- unconfigure_phys = supported_phys & ~configurable_phys;
-
- if ((selected_phys & unconfigure_phys) != unconfigure_phys)
- return mgmt_cmd_status(sk, hdev->id,
- MGMT_OP_SET_PHY_CONFIGURATION,
- MGMT_STATUS_INVALID_PARAMS);
-
if (selected_phys == get_selected_phys(hdev))
return mgmt_cmd_complete(sk, hdev->id,
MGMT_OP_SET_PHY_CONFIGURATION,
--
2.37.2


2022-09-08 00:21:41

by bluez.test.bot

[permalink] [raw]
Subject: RE: [v2,1/2] Bluetooth: MGMT: Fix Set PHY Configuration command

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=675023

---Test result---

Test Summary:
CheckPatch PASS 3.90 seconds
GitLint PASS 1.73 seconds
SubjectPrefix PASS 1.33 seconds
BuildKernel PASS 48.30 seconds
BuildKernel32 PASS 43.32 seconds
Incremental Build with patchesPASS 103.45 seconds
TestRunner: Setup PASS 716.81 seconds
TestRunner: l2cap-tester PASS 21.36 seconds
TestRunner: iso-tester PASS 22.48 seconds
TestRunner: bnep-tester PASS 8.75 seconds
TestRunner: mgmt-tester FAIL 140.53 seconds
TestRunner: rfcomm-tester PASS 13.52 seconds
TestRunner: sco-tester PASS 12.75 seconds
TestRunner: smp-tester PASS 12.71 seconds
TestRunner: userchan-tester PASS 9.03 seconds

Details
##############################
Test: TestRunner: mgmt-tester - FAIL - 140.53 seconds
Run test-runner with mgmt-tester
Total: 494, Passed: 491 (99.4%), Failed: 3, Not Run: 0

Failed Test Cases
Get PHY Success Failed 0.164 seconds
Set PHY 1m 2m coded Succcess Timed out 2.716 seconds
Start Discovery LE - (Ext Scan Param) Failed 0.188 seconds



---
Regards,
Linux Bluetooth