diff --git a/drivers/ethernet/eth_virtio_net.c b/drivers/ethernet/eth_virtio_net.c index eb3556d1c7805..d921512ae278d 100644 --- a/drivers/ethernet/eth_virtio_net.c +++ b/drivers/ethernet/eth_virtio_net.c @@ -11,7 +11,6 @@ #include #include #include -#include #include "eth.h" #define DT_DRV_COMPAT virtio_net @@ -95,7 +94,7 @@ enum _virtio_net_hdr_gso_types { struct virtnet_config { const struct device *vdev; - bool random_mac; + struct net_eth_mac_config mcfg; unsigned int inst; }; @@ -215,13 +214,7 @@ static int virtnet_dev_init(const struct device *dev) const struct virtnet_config *config = dev->config; struct virtnet_data *data = dev->data; - if (config->random_mac) { - sys_rand_get(data->mac, sizeof(data->mac)); - /* make it a locally administered, unicast address */ - /* (2nd hex digit of 1st byte is 2) */ - data->mac[0] &= ~(BIT(0) | BIT(2) | BIT(3)); - data->mac[0] |= BIT(1); - } + (void)net_eth_mac_load(&config->mcfg, data->mac); data->virtio_devcfg = virtio_get_device_specific_config(config->vdev); if (data->virtio_devcfg == NULL) { @@ -248,11 +241,10 @@ static struct ethernet_api virtnet_api = { #define VIRTIO_NET_DEFINE(inst) \ static struct virtnet_data virtnet_data_##inst = { \ .dev = DEVICE_DT_INST_GET(inst), \ - .mac = DT_INST_PROP_OR(inst, local_mac_address, {0}), \ }; \ static const struct virtnet_config virtnet_config_##inst = { \ .vdev = DEVICE_DT_GET(DT_INST_PARENT(inst)), \ - .random_mac = DT_INST_PROP(inst, zephyr_random_mac_address), \ + .mcfg = NET_ETH_MAC_DT_INST_CONFIG_INIT(inst), \ }; \ ETH_NET_DEVICE_DT_INST_DEFINE(inst, virtnet_dev_init, NULL, &virtnet_data_##inst, \ &virtnet_config_##inst, CONFIG_ETH_INIT_PRIORITY, \