From: Martin Spinler <[email protected]> Check for a specific MAC address assigned to a card. If there is no assigned MAC address, then use a random MAC as fallback.
Signed-off-by: Martin Spinler <[email protected]> --- drivers/net/nfb/nfb_ethdev.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/net/nfb/nfb_ethdev.c b/drivers/net/nfb/nfb_ethdev.c index 157f04a891..ca3dbad879 100644 --- a/drivers/net/nfb/nfb_ethdev.c +++ b/drivers/net/nfb/nfb_ethdev.c @@ -11,6 +11,7 @@ #include <nfb/nfb.h> #include <nfb/ndp.h> +#include <netcope/eth.h> #include <netcope/rxmac.h> #include <netcope/txmac.h> @@ -639,10 +640,14 @@ nfb_eth_dev_init(struct rte_eth_dev *dev, void *init_data) goto err_malloc_mac_addrs; } - rte_eth_random_addr(eth_addr_init.addr_bytes); - eth_addr_init.addr_bytes[0] = eth_addr.addr_bytes[0]; - eth_addr_init.addr_bytes[1] = eth_addr.addr_bytes[1]; - eth_addr_init.addr_bytes[2] = eth_addr.addr_bytes[2]; + ret = nc_ifc_get_default_mac(internals->nfb, ifc->id, eth_addr_init.addr_bytes, + sizeof(eth_addr_init.addr_bytes)); + if (ret != 0) { + rte_eth_random_addr(eth_addr_init.addr_bytes); + eth_addr_init.addr_bytes[0] = eth_addr.addr_bytes[0]; + eth_addr_init.addr_bytes[1] = eth_addr.addr_bytes[1]; + eth_addr_init.addr_bytes[2] = eth_addr.addr_bytes[2]; + } nfb_eth_mac_addr_set(dev, ð_addr_init); rte_ether_addr_copy(ð_addr_init, &data->mac_addrs[0]); -- 2.53.0

