From e364f29bffdfb122fead4b7dad082428f2f6969c Mon Sep 17 00:00:00 2001 From: Georgij Cernysiov Date: Wed, 25 Oct 2023 09:15:10 +0200 Subject: [PATCH] drivers: ethernet: fix adin set_config Corrects set_config to allow MAC config at runtime. * Add missing device lock * Use correct mac argument Signed-off-by: Georgij Cernysiov --- drivers/ethernet/eth_adin2111.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/drivers/ethernet/eth_adin2111.c b/drivers/ethernet/eth_adin2111.c index e7cdcedc0c6338..3ee08f30b75c0e 100644 --- a/drivers/ethernet/eth_adin2111.c +++ b/drivers/ethernet/eth_adin2111.c @@ -696,19 +696,23 @@ static int adin2111_port_set_config(const struct device *dev, const struct device *adin = cfg->adin; int ret = -ENOTSUP; + (void)eth_adin2111_lock(dev, K_FOREVER); + if (type == ETHERNET_CONFIG_TYPE_MAC_ADDRESS) { - ret = adin2111_filter_unicast(adin, data->mac_addr, cfg->port_idx); + ret = adin2111_filter_unicast(adin, (uint8_t *)&config->mac_address.addr[0], + cfg->port_idx); if (ret < 0) { - return ret; + goto end_unlock; } - memcpy(data->mac_addr, config->mac_address.addr, sizeof(data->mac_addr)); + (void)memcpy(data->mac_addr, config->mac_address.addr, sizeof(data->mac_addr)); - net_if_set_link_addr(data->iface, data->mac_addr, - sizeof(data->mac_addr), - NET_LINK_ETHERNET); + (void)net_if_set_link_addr(data->iface, data->mac_addr, sizeof(data->mac_addr), + NET_LINK_ETHERNET); } +end_unlock: + (void)eth_adin2111_unlock(dev); return ret; }