2022-12-19 22:04:53

by Luiz Augusto von Dentz

[permalink] [raw]
Subject: [RESEND 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 0dd30a3beb77..dad6fd9abe95 100644
--- a/net/bluetooth/mgmt.c
+++ b/net/bluetooth/mgmt.c
@@ -4022,8 +4022,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;
@@ -4031,8 +4031,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;
@@ -4051,14 +4051,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);

@@ -4067,13 +4066,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.3


2022-12-19 22:56:38

by bluez.test.bot

[permalink] [raw]
Subject: RE: [RESEND,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=705741

---Test result---

Test Summary:
CheckPatch PASS 1.88 seconds
GitLint PASS 0.59 seconds
SubjectPrefix PASS 0.21 seconds
BuildKernel PASS 32.55 seconds
CheckAllWarning PASS 35.03 seconds
CheckSparse PASS 40.20 seconds
BuildKernel32 PASS 30.04 seconds
TestRunnerSetup PASS 444.98 seconds
TestRunner_l2cap-tester PASS 16.75 seconds
TestRunner_iso-tester PASS 17.06 seconds
TestRunner_bnep-tester PASS 5.81 seconds
TestRunner_mgmt-tester FAIL 114.16 seconds
TestRunner_rfcomm-tester PASS 9.12 seconds
TestRunner_sco-tester PASS 8.40 seconds
TestRunner_ioctl-tester PASS 9.90 seconds
TestRunner_mesh-tester PASS 7.18 seconds
TestRunner_smp-tester PASS 8.36 seconds
TestRunner_userchan-tester PASS 5.99 seconds
IncrementalBuild PASS 56.30 seconds

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

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


---
Regards,
Linux Bluetooth