diff options
| author | Damien Tournoud <damien@platform.sh> | 2023-01-12 21:04:07 -0800 |
|---|---|---|
| committer | Damien George <damien@micropython.org> | 2023-01-18 11:19:12 +1100 |
| commit | c7301b8d03d4681247c892d260696b0bfa4139d9 (patch) | |
| tree | 5ad1440a576fcd64297309b22652e994df6709ec | |
| parent | e982c1d8de27145579b8ece24af81d8c7d07a99d (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.c | 7 |
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: |
