Skip to content

Commit 09eeb73

Browse files
pdgendtfabiobaltieri
authored andcommitted
drivers: ethernet: eth_virtio_net: Support MAC address config
Update the virtio ethernet driver to use a MAC address configuration struct. Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
1 parent 5a0fb5c commit 09eeb73

File tree

1 file changed

+3
-11
lines changed

1 file changed

+3
-11
lines changed

drivers/ethernet/eth_virtio_net.c

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
#include <zephyr/drivers/virtio/virtqueue.h>
1212
#include <zephyr/sys/util.h>
1313
#include <zephyr/sys/atomic.h>
14-
#include <zephyr/random/random.h>
1514
#include "eth.h"
1615

1716
#define DT_DRV_COMPAT virtio_net
@@ -95,7 +94,7 @@ enum _virtio_net_hdr_gso_types {
9594

9695
struct virtnet_config {
9796
const struct device *vdev;
98-
bool random_mac;
97+
struct net_eth_mac_config mcfg;
9998
unsigned int inst;
10099
};
101100

@@ -215,13 +214,7 @@ static int virtnet_dev_init(const struct device *dev)
215214
const struct virtnet_config *config = dev->config;
216215
struct virtnet_data *data = dev->data;
217216

218-
if (config->random_mac) {
219-
sys_rand_get(data->mac, sizeof(data->mac));
220-
/* make it a locally administered, unicast address */
221-
/* (2nd hex digit of 1st byte is 2) */
222-
data->mac[0] &= ~(BIT(0) | BIT(2) | BIT(3));
223-
data->mac[0] |= BIT(1);
224-
}
217+
(void)net_eth_mac_load(&config->mcfg, data->mac);
225218

226219
data->virtio_devcfg = virtio_get_device_specific_config(config->vdev);
227220
if (data->virtio_devcfg == NULL) {
@@ -248,11 +241,10 @@ static struct ethernet_api virtnet_api = {
248241
#define VIRTIO_NET_DEFINE(inst) \
249242
static struct virtnet_data virtnet_data_##inst = { \
250243
.dev = DEVICE_DT_INST_GET(inst), \
251-
.mac = DT_INST_PROP_OR(inst, local_mac_address, {0}), \
252244
}; \
253245
static const struct virtnet_config virtnet_config_##inst = { \
254246
.vdev = DEVICE_DT_GET(DT_INST_PARENT(inst)), \
255-
.random_mac = DT_INST_PROP(inst, zephyr_random_mac_address), \
247+
.mcfg = NET_ETH_MAC_DT_INST_CONFIG_INIT(inst), \
256248
}; \
257249
ETH_NET_DEVICE_DT_INST_DEFINE(inst, virtnet_dev_init, NULL, &virtnet_data_##inst, \
258250
&virtnet_config_##inst, CONFIG_ETH_INIT_PRIORITY, \

0 commit comments

Comments
 (0)