2015-12-01 21:59:56

by Anatol Pomozov

[permalink] [raw]
Subject: MAC address randomization support

Hi

At ChromeOS we are looking at utilizing MAC address randomization.
There are some ChromeOS use-cases where it can be useful. I checked
upstream kernel and Android source code to understand the current
state of this feature.

This feature is supported in Android and a few products use it already
for Preferred Network Offload scan. There is a HAL method that allows
to set MAC OUI [1] that makes 3 first octets predefined and the rest
of MAC address is randomized. Kernel passes this OUI value to firmware
where the randomization is implemented.

I checked current upstream kernel and did not find any API for
enabling/dealing with MAC address randomization. If a firmware devs
want to add the feature easily then there should be some standard API
for enabling/configuring MAC randomization.

In fact there is one mention of the feature in upstream source tree -
macaddr_* fields in "struct iwl_tof_range_req_cmd" of iwlwifi driver.
It allows to enable/disable randomization for 11MC measurement.

The MAC randomization could be used by other drivers for many
use-cases and I think it worth making it a part of standard cfg80211
API. Is it something maintainers are interested in? Does anybody work
on it already?

[1] https://android.googlesource.com/platform/hardware/libhardware_legacy/+/master/include/hardware_legacy/wifi_hal.h


2015-12-01 22:05:42

by Johannes Berg

[permalink] [raw]
Subject: Re: MAC address randomization support

Hi Anatol,

> This feature is supported in Android and a few products use it
> already for Preferred Network Offload scan. There is a HAL method
> that allows to set MAC OUI [1] that makes 3 first octets predefined
> and the rest of MAC address is randomized. Kernel passes this OUI
> value to firmware where the randomization is implemented.
>
> I checked current upstream kernel and did not find any API for
> enabling/dealing with MAC address randomization. If a firmware devs
> want to add the feature easily then there should be some standard API
> for enabling/configuring MAC randomization.

Well, we are treating it on a per-feature basis. The upstream kernel
does, in fact, and I believe we also submitted it into ChromeOS,
support randomized MAC addresses for scan and scheduled scan.

> In fact there is one mention of the feature in upstream source tree -
> macaddr_* fields in "struct iwl_tof_range_req_cmd" of iwlwifi driver.
> It allows to enable/disable randomization for 11MC measurement.

If you're talking about fine timing measurement, however, we haven't
yet submitted that API for that upstream. I sent you a draft of that
API and it does in fact contain MAC address randomization support from
the start :)

> The MAC randomization could be used by other drivers for many
> use-cases and I think it worth making it a part of standard cfg80211
> API. Is it something maintainers are interested in? Does anybody work
> on it already?

Yes and yes, obviously, but I think what I said at the beginning - that
it's per feature rather than global - is just not what you were looking
for or had expected?

I still think it makes sense btw, scan for example can be randomized in
software in certain cases, scheduled scan might not be able to, etc.

johannes