diff --git a/drivers/ethernet/eth_stm32_hal_v1.c b/drivers/ethernet/eth_stm32_hal_v1.c index 3fa8dfd0a6561..4335195e01537 100644 --- a/drivers/ethernet/eth_stm32_hal_v1.c +++ b/drivers/ethernet/eth_stm32_hal_v1.c @@ -239,6 +239,11 @@ void eth_stm32_set_mac_config(const struct device *dev, struct phy_link_state *s heth->Init.Speed = PHY_LINK_IS_SPEED_100M(state->speed) ? ETH_SPEED_100M : ETH_SPEED_10M; + /* The default configuration is ETH_SOURCEADDRESS_REPLACE_ADDR0, + * which is bad for bridging. + */ + mac_config.SourceAddrControl = ETH_SOURCEADDRESS_DISABLE; + hal_ret = HAL_ETH_ConfigMAC(heth, NULL); if (hal_ret != HAL_OK) { LOG_ERR("HAL_ETH_ConfigMAC: failed: %d", hal_ret); diff --git a/drivers/ethernet/eth_stm32_hal_v2.c b/drivers/ethernet/eth_stm32_hal_v2.c index 018131bf1e616..6a551ebd01ac5 100644 --- a/drivers/ethernet/eth_stm32_hal_v2.c +++ b/drivers/ethernet/eth_stm32_hal_v2.c @@ -664,6 +664,11 @@ void eth_stm32_set_mac_config(const struct device *dev, struct phy_link_state *s PHY_LINK_IS_SPEED_1000M(state->speed) ? ETH_SPEED_1000M :) PHY_LINK_IS_SPEED_100M(state->speed) ? ETH_SPEED_100M : ETH_SPEED_10M; + /* The default configuration is ETH_SOURCEADDRESS_REPLACE_ADDR0, + * which is bad for bridging. + */ + mac_config.SourceAddrControl = ETH_SOURCEADDRESS_DISABLE; + hal_ret = HAL_ETH_SetMACConfig(heth, &mac_config); if (hal_ret != HAL_OK) { LOG_ERR("HAL_ETH_SetMACConfig failed: %d", hal_ret);