Thread (1 message) 1 message, 1 author, 2018-08-17

RE: Re: Re: Not able to set Default PHY configuration

From: Anupam Roy <hidden>
Date: 2018-08-17 16:31:29

Hi Jaganath,
--------- Original Message ---------
Sender : Jaganath K [off-list ref]
Date   : 2018-08-17 15:16 (GMT+9)
Title  : Re: Re: Not able to set Default PHY configuration

Hi Anupam,

On Thu, Aug 16, 2018, 8:55 PM Anupam Roy [off-list ref] wrote:
Hi Jaganath,

quoted
--------- Original Message ---------
quoted
Sender : Jaganath K [off-list ref]
quoted
Date   : 2018-08-11 17:50 (GMT+9)
quoted
Title  : Re: Not able to set Default PHY configuration
quoted
quoted
Hi Anupam,
quoted
quoted
quoted
On Fri, Aug 10, 2018, 8:26 PM Anupam Roy [off-list ref] wrote:
quoted
quoted
Hello list,
quoted
quoted
quoted
quoted
Regarding the Set PHY configuration management command, I have a following observation during my test with a BT 5.0 LE Only controller
quoted
quoted
quoted
quoted
I am encountering error on SET PHY (2MTX) MGMT command from btmgmt.
quoted
quoted
quoted
quoted
quoted
quoted
[hci1]# phy
quoted
quoted
quoted
quoted
Supported phys: [0x7e00] [1MTX 1MRX 2MTX 2MRX CODEDTX CODEDRX ]
quoted
quoted
quoted
quoted
Configurable phys: [0x7800] [2MTX 2MRX CODEDTX CODEDRX ]
quoted
quoted
quoted
quoted
Selected phys: [0x600] [1MTX 1MRX ]
quoted
quoted
quoted
quoted
quoted
quoted
@ MGMT Command: Get PHY Configuration (0x0044) plen 0    
quoted
quoted
quoted
quoted
@ MGMT Event: Command Complete (0x0001) plen 15  
quoted
quoted
quoted
quoted
     Get PHY Configuration (0x0044) plen 12
quoted
quoted
quoted
quoted
       Status: Success (0x00)
quoted
quoted
quoted
quoted
       Supported PHYs: 0x7e00
quoted
quoted
quoted
quoted
         LE 1M TX
quoted
quoted
quoted
quoted
         LE 1M RX
quoted
quoted
quoted
quoted
         LE 2M TX
quoted
quoted
quoted
quoted
         LE 2M RX
quoted
quoted
quoted
quoted
         LE CODED TX
quoted
quoted
quoted
quoted
         LE CODED RX
quoted
quoted
quoted
quoted
       Configurable PHYs: 0x7800
quoted
quoted
quoted
quoted
         LE 2M TX
quoted
quoted
quoted
quoted
         LE 2M RX
quoted
quoted
quoted
quoted
         LE CODED TX
quoted
quoted
quoted
quoted
         LE CODED RX
quoted
quoted
quoted
quoted
       Selected PHYs: 0x0600
quoted
quoted
quoted
quoted
         LE 1M TX
quoted
quoted
quoted
quoted
         LE 1M RX
quoted
quoted
quoted
quoted
quoted
quoted
quoted
quoted
[hci1]# phy 2MTX
quoted
quoted
quoted
quoted
Could not set PHY Configuration with status 0x0d (Invalid Parameters)
quoted
quoted
quoted
quoted
quoted
quoted
MGMT Command: Set PHY Configuration (0x0045) plen 4 
quoted
quoted
quoted
quoted
       Selected PHYs: 0x0800
quoted
quoted
quoted
quoted
         LE 2M TX
quoted
quoted
quoted
quoted
@ MGMT Event: Command Status (0x0002) plen 3 
quoted
quoted
quoted
quoted
     Set PHY Configuration (0x0045)
quoted
quoted
quoted
quoted
       Status: Invalid Parameters (0x0d)
quoted
quoted
quoted
quoted
quoted
quoted
quoted
quoted
As per https://kernel.googlesource.com/pub/scm/linux/kernel/git/bluetooth/bluetooth-next/+/master/net/bluetooth/mgmt.c#3412
quoted
quoted
quoted
quoted
quoted
quoted
if ((selected_phys & unconfigure_phys) != unconfigure_phys)
quoted
quoted
quoted
quoted
       return mgmt_cmd_status(INVALID_PARAMS)
quoted
quoted
quoted
quoted
quoted
quoted
In my case, unconfigurable PHY is 0x600(1MTX and 1MRX) [supported_phys(0x7e00) &  ~configure_phys (0x7FF) = 0x600]
quoted
quoted
quoted
quoted
If from btmgmt, user wants to select 2MTX (0x800), then the above condition returns error to user, 
quoted
quoted
quoted
quoted
whereas I think, out intention here is to allow kernel to set preference of 2MTX to controller, as 2MTX is a configurable PHY? Am I missing something here?
quoted
quoted
quoted
quoted
quoted
quoted
Actually, I am not sure if unconfigure_phys logic is added to prevent user to select one of the unconfigureable PHY's.
quoted
quoted
quoted
quoted
If above is the case, then will not be the following logic correct?
quoted
quoted
quoted
quoted
quoted
quoted
quoted
quoted
  + if (selected_phys & unconfigure_phys)
quoted
quoted
quoted
quoted
  +            return ERROR
quoted
quoted
quoted
quoted
  + else
quoted
quoted
quoted
quoted
  +            proceed
quoted
quoted
quoted
quoted
quoted
quoted
which will basically mean if any of the bits in the user's selected bit field matches with that of the unconfigurable PHY's bits, then we may return error to user, otherwise proceed normally?
quoted
quoted
quoted
quoted
Please share your opinion. Thank you very much!
quoted
quoted
quoted
quoted
quoted
quoted
BR,
quoted
quoted
quoted
quoted
-Anupam Roy
quoted
quoted
Currently LE 1M TX and LE 1M RX is unconfigurable meaning it shall not be deselected.

Ok, got it, Much thanks for the clarification!

quoted
quoted
So if you want to select 2M TX, then the command should be
quoted
phy LE_1M_TX LE_2M_TX LE_1M_RX

Although, btmgmt is currently not supported to accept more than one PHY as input option, I enabled it for my test and managed to verify the Default PHY Set command. 

Further to this, I will raise changes for btmgmt to accept more than one PHY option.

quoted
quoted
Thanks,
quoted
Jaganath
quoted
quoted
quoted
BR,
quoted
quoted
-Anupam Roy

Are you sure that you are testing with latest upstream because it was working for me.
Below is the output of 'phy' commands from btmgmt of latest upstream.

pi@raspberrypi:~/bluez/tools $ sudo ./btmgmt -i 1
[hci1]# phy
Supported phys: 
Selected phys: 
[hci1]# phy 1MTX 1MRX 2MTX
Too many arguments: 3 > 1

In case of 'phy' command, Supported phys and Selected phys are blank outputs, because, considering latest kernel patches, macro values of PHY MGMT defines are mismatched in bluez lib/mgmt.h.
Above is fixed with https://marc.info/?l=linux-bluetooth&m=153443599303477&w=4

In case of 'phy 1MTX 1MRX 2MTX' command, my intention here is to set 2MTX as default PHY. However, btmgmt reports error, as a reason of which I had sent https://marc.info/?l=linux-bluetooth&m=153443619303530&w=2.
Please let me know if I am missing something? Thanks!
Thanks,
Jaganath
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help