Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 3 additions & 11 deletions drivers/ethernet/eth_virtio_net.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
#include <zephyr/drivers/virtio/virtqueue.h>
#include <zephyr/sys/util.h>
#include <zephyr/sys/atomic.h>
#include <zephyr/random/random.h>
#include "eth.h"

#define DT_DRV_COMPAT virtio_net
Expand Down Expand Up @@ -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;
};

Expand Down Expand Up @@ -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) {
Expand All @@ -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, \
Expand Down