summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Tournoud <damien@platform.sh>2023-01-12 21:04:07 -0800
committerDamien George <damien@micropython.org>2023-01-18 11:19:12 +1100
commitc7301b8d03d4681247c892d260696b0bfa4139d9 (patch)
tree5ad1440a576fcd64297309b22652e994df6709ec
parente982c1d8de27145579b8ece24af81d8c7d07a99d (diff)
esp32/network_lan: Fix setting MAC address of ethernet devices.
`esp_eth_ioctl(ETH_CMD_S_MAC_ADDR)` sets the MAC address of the hardware device, but we also need to notify the upper layers of the change so that e.g. DHCP work properly.
-rw-r--r--ports/esp32/network_lan.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/ports/esp32/network_lan.c b/ports/esp32/network_lan.c
index f63c7ef8e..13d0bbd16 100644
--- a/ports/esp32/network_lan.c
+++ b/ports/esp32/network_lan.c
@@ -374,7 +374,12 @@ STATIC mp_obj_t lan_config(size_t n_args, const mp_obj_t *args, mp_map_t *kwargs
if (bufinfo.len != 6) {
mp_raise_ValueError(MP_ERROR_TEXT("invalid buffer length"));
}
- esp_eth_ioctl(self->eth_handle, ETH_CMD_S_MAC_ADDR, bufinfo.buf);
+ if (
+ (esp_eth_ioctl(self->eth_handle, ETH_CMD_S_MAC_ADDR, bufinfo.buf) != ESP_OK) ||
+ (esp_netif_set_mac(self->eth_netif, bufinfo.buf) != ESP_OK)
+ ) {
+ mp_raise_msg(&mp_type_OSError, MP_ERROR_TEXT("failed setting MAC address"));
+ }
break;
}
default: