Merge branch 'fix/support_two_MAC_only_esp32s31' into 'master'

fix(esp32s31): restrict UNIVERSAL_MAC_ADDRESSES to Two

See merge request espressif/esp-idf!50389
This commit is contained in:
Jiang Jiang Jian
2026-07-09 17:40:40 +08:00
6 changed files with 134 additions and 21 deletions
@@ -1,18 +1,27 @@
choice ESP32H2_UNIVERSAL_MAC_ADDRESSES
bool "Number of universally administered (by IEEE) MAC address"
default ESP32H2_UNIVERSAL_MAC_ADDRESSES_TWO
default ESP32H2_UNIVERSAL_MAC_ADDRESSES_ONE
help
Configure the number of universally administered (by IEEE) MAC addresses.
During initialization, MAC addresses for each network interface are generated or derived from a
single base MAC address.
config ESP32H2_UNIVERSAL_MAC_ADDRESSES_TWO
bool "Two"
select ESP_MAC_UNIVERSAL_MAC_ADDRESSES_TWO
ESP32-H2 provides a single universally administered MAC address in eFuse
(MAC_FACTORY, 6 bytes) plus the MAC_EXT field used to build the IEEE 802.15.4
EUI-64. Only one universal MAC address is consumed:
- IEEE 802.15.4 EUI-64 is derived from the base MAC and MAC_EXT
(base_mac[0:2] || MAC_EXT || base_mac[3:5], MAC_EXT defaults to ff:fe).
- Bluetooth reuses the base MAC as-is. The BT offset is not applied because
ESP32-H2 has no Wi-Fi, so no second universal MAC slot is required.
config ESP32H2_UNIVERSAL_MAC_ADDRESSES_ONE
bool "One"
select ESP_MAC_UNIVERSAL_MAC_ADDRESSES_ONE
select ESP_MAC_ADDR_UNIVERSE_IEEE802154
select ESP_MAC_ADDR_UNIVERSE_BT
endchoice
config ESP32H2_UNIVERSAL_MAC_ADDRESSES
int
default 2 if ESP32H2_UNIVERSAL_MAC_ADDRESSES_TWO
default 1 if ESP32H2_UNIVERSAL_MAC_ADDRESSES_ONE
@@ -1,18 +1,27 @@
choice ESP32H21_UNIVERSAL_MAC_ADDRESSES
bool "Number of universally administered (by IEEE) MAC address"
default ESP32H21_UNIVERSAL_MAC_ADDRESSES_TWO
default ESP32H21_UNIVERSAL_MAC_ADDRESSES_ONE
help
Configure the number of universally administered (by IEEE) MAC addresses.
During initialization, MAC addresses for each network interface are generated or derived from a
single base MAC address.
config ESP32H21_UNIVERSAL_MAC_ADDRESSES_TWO
bool "Two"
select ESP_MAC_UNIVERSAL_MAC_ADDRESSES_TWO
ESP32-H21 provides a single universally administered MAC address in eFuse
(MAC_FACTORY, 6 bytes) plus the MAC_EXT field used to build the IEEE 802.15.4
EUI-64. Only one universal MAC address is consumed:
- IEEE 802.15.4 EUI-64 is derived from the base MAC and MAC_EXT
(base_mac[0:2] || MAC_EXT || base_mac[3:5], MAC_EXT defaults to ff:fe).
- Bluetooth reuses the base MAC as-is. The BT offset is not applied because
ESP32-H21 has no Wi-Fi, so no second universal MAC slot is required.
config ESP32H21_UNIVERSAL_MAC_ADDRESSES_ONE
bool "One"
select ESP_MAC_UNIVERSAL_MAC_ADDRESSES_ONE
select ESP_MAC_ADDR_UNIVERSE_IEEE802154
select ESP_MAC_ADDR_UNIVERSE_BT
endchoice
config ESP32H21_UNIVERSAL_MAC_ADDRESSES
int
default 2 if ESP32H21_UNIVERSAL_MAC_ADDRESSES_TWO
default 1 if ESP32H21_UNIVERSAL_MAC_ADDRESSES_ONE
@@ -1,18 +1,27 @@
choice ESP32H4_UNIVERSAL_MAC_ADDRESSES
bool "Number of universally administered (by IEEE) MAC address"
default ESP32H4_UNIVERSAL_MAC_ADDRESSES_TWO
default ESP32H4_UNIVERSAL_MAC_ADDRESSES_ONE
help
Configure the number of universally administered (by IEEE) MAC addresses.
During initialization, MAC addresses for each network interface are generated or derived from a
single base MAC address.
config ESP32H4_UNIVERSAL_MAC_ADDRESSES_TWO
bool "Two"
select ESP_MAC_UNIVERSAL_MAC_ADDRESSES_TWO
ESP32-H4 provides a single universally administered MAC address in eFuse
(MAC_FACTORY, 6 bytes) plus the MAC_EXT field used to build the IEEE 802.15.4
EUI-64. Only one universal MAC address is consumed:
- IEEE 802.15.4 EUI-64 is derived from the base MAC and MAC_EXT
(base_mac[0:2] || MAC_EXT || base_mac[3:5], MAC_EXT defaults to ff:fe).
- Bluetooth reuses the base MAC as-is. The BT offset is not applied because
ESP32-H4 has no Wi-Fi, so no second universal MAC slot is required.
config ESP32H4_UNIVERSAL_MAC_ADDRESSES_ONE
bool "One"
select ESP_MAC_UNIVERSAL_MAC_ADDRESSES_ONE
select ESP_MAC_ADDR_UNIVERSE_IEEE802154
select ESP_MAC_ADDR_UNIVERSE_BT
endchoice
config ESP32H4_UNIVERSAL_MAC_ADDRESSES
int
default 2 if ESP32H4_UNIVERSAL_MAC_ADDRESSES_TWO
default 1 if ESP32H4_UNIVERSAL_MAC_ADDRESSES_ONE
@@ -1,6 +1,6 @@
choice ESP32S31_UNIVERSAL_MAC_ADDRESSES
bool "Number of universally administered (by IEEE) MAC address"
default ESP32S31_UNIVERSAL_MAC_ADDRESSES_FOUR
default ESP32S31_UNIVERSAL_MAC_ADDRESSES_TWO
help
Configure the number of universally administered (by IEEE) MAC addresses.
During initialization, MAC addresses for each network interface are generated or derived from a
@@ -13,9 +13,9 @@ choice ESP32S31_UNIVERSAL_MAC_ADDRESSES
and 1 (respectively) to the base MAC address. The remaining two interfaces (WiFi softap and Ethernet)
receive local MAC addresses. These are derived from the universal WiFi station and Bluetooth MAC
addresses, respectively.
When using the default (Espressif-assigned) base MAC address, either setting can be used. When using
a custom universal MAC address range, the correct setting will depend on the allocation of MAC
addresses in this range (either 2 or 4 per device.)
ESP32-S31 only provides two universally administered MAC addresses in eFuse, so "Two" is the
recommended and default setting. "Four" is only intended for use with a custom base MAC range
where four universally administered MAC addresses are allocated per device.
config ESP32S31_UNIVERSAL_MAC_ADDRESSES_TWO
bool "Two"