2019-11-18 08:24:33

by Andre Heider

[permalink] [raw]
Subject: "local-[bd|mac]-address" inconsistency?

Hi,

when passing both addresses through device-tree in the same way:
$ hexdump /proc/device-tree/soc/ethernet@5020000/local-mac-address
0000000 0702 3d96 53d4

$ hexdump /proc/device-tree/soc/serial@5000400/bluetooth/local-bd-address
0000000 0703 3d96 53d4

I get this for eth (which is consistent with u-boot):
link/ether 02:07:96:3d:d4:53

But for bt it's in reverse order:
Controller 53:D4:3D:96:07:03

Is this intended? Do I really have to pass the bdaddr from u-boot in
another way?

Regards,
Andre


2019-11-18 20:17:00

by Matthias Kaehlcke

[permalink] [raw]
Subject: Re: "local-[bd|mac]-address" inconsistency?

Hi Andre,

On Mon, Nov 18, 2019 at 09:20:35AM +0100, Andre Heider wrote:
> Hi,
>
> when passing both addresses through device-tree in the same way:
> $ hexdump /proc/device-tree/soc/ethernet@5020000/local-mac-address
> 0000000 0702 3d96 53d4
>
> $ hexdump /proc/device-tree/soc/serial@5000400/bluetooth/local-bd-address
> 0000000 0703 3d96 53d4
>
> I get this for eth (which is consistent with u-boot):
> link/ether 02:07:96:3d:d4:53
>
> But for bt it's in reverse order:
> Controller 53:D4:3D:96:07:03
>
> Is this intended?

Kind of.

In both cases the address is specified in the binary format used by BT/NW
stack.

When BT addresses are printed they are converted from LSB to MSB.

> Do I really have to pass the bdaddr from u-boot in another way?

One could make a case that we don't care what the 'internal' format is and
that the BD_ADDR should be specified in MSB format in the DT, and the kernel
would be in charge of converting it to LSB. However I fear it is too late to
consider a change at this point, since the binding has been in the kernel for
6 months with the current format and existing devices may rely on it.

2019-11-19 04:39:09

by Andre Heider

[permalink] [raw]
Subject: Re: "local-[bd|mac]-address" inconsistency?

On 18/11/2019 21:15, Matthias Kaehlcke wrote:
> Hi Andre,
>
> On Mon, Nov 18, 2019 at 09:20:35AM +0100, Andre Heider wrote:
>> Hi,
>>
>> when passing both addresses through device-tree in the same way:
>> $ hexdump /proc/device-tree/soc/ethernet@5020000/local-mac-address
>> 0000000 0702 3d96 53d4
>>
>> $ hexdump /proc/device-tree/soc/serial@5000400/bluetooth/local-bd-address
>> 0000000 0703 3d96 53d4
>>
>> I get this for eth (which is consistent with u-boot):
>> link/ether 02:07:96:3d:d4:53
>>
>> But for bt it's in reverse order:
>> Controller 53:D4:3D:96:07:03
>>
>> Is this intended?
>
> Kind of.
>
> In both cases the address is specified in the binary format used by BT/NW
> stack.
>
> When BT addresses are printed they are converted from LSB to MSB.
>
>> Do I really have to pass the bdaddr from u-boot in another way?
>
> One could make a case that we don't care what the 'internal' format is and
> that the BD_ADDR should be specified in MSB format in the DT, and the kernel
> would be in charge of converting it to LSB. However I fear it is too late to
> consider a change at this point, since the binding has been in the kernel for
> 6 months with the current format and existing devices may rely on it.
>

Feared as much...

Thanks for your time,
Andre

2019-11-19 05:20:55

by Marcel Holtmann

[permalink] [raw]
Subject: Re: "local-[bd|mac]-address" inconsistency?

Hi Matthias,

>> when passing both addresses through device-tree in the same way:
>> $ hexdump /proc/device-tree/soc/ethernet@5020000/local-mac-address
>> 0000000 0702 3d96 53d4
>>
>> $ hexdump /proc/device-tree/soc/serial@5000400/bluetooth/local-bd-address
>> 0000000 0703 3d96 53d4
>>
>> I get this for eth (which is consistent with u-boot):
>> link/ether 02:07:96:3d:d4:53
>>
>> But for bt it's in reverse order:
>> Controller 53:D4:3D:96:07:03
>>
>> Is this intended?
>
> Kind of.
>
> In both cases the address is specified in the binary format used by BT/NW
> stack.
>
> When BT addresses are printed they are converted from LSB to MSB.
>
>> Do I really have to pass the bdaddr from u-boot in another way?
>
> One could make a case that we don't care what the 'internal' format is and
> that the BD_ADDR should be specified in MSB format in the DT, and the kernel
> would be in charge of converting it to LSB. However I fear it is too late to
> consider a change at this point, since the binding has been in the kernel for
> 6 months with the current format and existing devices may rely on it.

we used a different property name for reason. Even while BD_ADDR is allocated from an OUI space, it has nothing in common with a MAC address.

Regards

Marcel