Skip to content

Commit 5638d9f

Browse files
maass-hamburgkartben
authored andcommitted
drivers: ethernet: nxp: fix mac addr order
make sure, that zephyr,random-mac-address has a higher prio, than local-mac-address, as documented in ethernet-controller.yaml. Also make sure, that no vaild mac address doesn't lead to init fail, as it can still be set later via set_config. Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
1 parent faf1b10 commit 5638d9f

File tree

2 files changed

+20
-18
lines changed

2 files changed

+20
-18
lines changed

drivers/ethernet/eth_nxp_enet.c

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -738,8 +738,6 @@ static int eth_nxp_enet_init(const struct device *dev)
738738
k_work_init(&data->rx_work, eth_nxp_enet_rx_thread);
739739

740740
switch (config->mac_addr_source) {
741-
case MAC_ADDR_SOURCE_LOCAL:
742-
break;
743741
case MAC_ADDR_SOURCE_RANDOM:
744742
gen_random_mac(data->mac_addr,
745743
FREESCALE_OUI_B0, FREESCALE_OUI_B1, FREESCALE_OUI_B2);
@@ -751,7 +749,7 @@ static int eth_nxp_enet_init(const struct device *dev)
751749
nxp_enet_fused_mac(data->mac_addr);
752750
break;
753751
default:
754-
return -ENOTSUP;
752+
break;
755753
}
756754

757755
err = clock_control_get_rate(config->clock_dev, config->clock_subsys,
@@ -966,12 +964,12 @@ BUILD_ASSERT(NXP_ENET_PHY_MODE(DT_DRV_INST(n)) != NXP_ENET_RGMII_MODE || \
966964
" and CONFIG_ETH_NXP_ENET_1G enabled");
967965

968966
#define NXP_ENET_MAC_ADDR_SOURCE(n) \
969-
COND_CODE_1(DT_NODE_HAS_PROP(DT_DRV_INST(n), local_mac_address), \
970-
(MAC_ADDR_SOURCE_LOCAL), \
971-
(COND_CODE_1(DT_INST_PROP(n, zephyr_random_mac_address), \
967+
COND_CODE_1(DT_INST_PROP(n, zephyr_random_mac_address), \
972968
(MAC_ADDR_SOURCE_RANDOM), \
973969
(COND_CODE_1(DT_INST_PROP(n, nxp_unique_mac), (MAC_ADDR_SOURCE_UNIQUE), \
974970
(COND_CODE_1(DT_INST_PROP(n, nxp_fused_mac), (MAC_ADDR_SOURCE_FUSED), \
971+
(COND_CODE_1(DT_NODE_HAS_PROP(DT_DRV_INST(n), local_mac_address), \
972+
(MAC_ADDR_SOURCE_LOCAL), \
975973
(MAC_ADDR_SOURCE_INVALID))))))))
976974

977975
#define NXP_ENET_MAC_INIT(n) \

drivers/ethernet/eth_nxp_enet_qos/eth_nxp_enet_qos_mac.c

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -641,13 +641,17 @@ static int eth_nxp_enet_qos_mac_init(const struct device *dev)
641641
return ret;
642642
}
643643

644-
if (config->mac_addr_source == NXP_ENET_QOS_MAC_ADDR_SOURCE_LOCAL) {
645-
/* Use the mac address provided in the devicetree */
646-
} else if (config->mac_addr_source == NXP_ENET_QOS_MAC_ADDR_SOURCE_UNIQUE) {
644+
switch (config->mac_addr_source) {
645+
case NXP_ENET_QOS_MAC_ADDR_SOURCE_RANDOM:
646+
gen_random_mac(data->mac_addr.addr, NXP_OUI_BYTE_0, NXP_OUI_BYTE_1, NXP_OUI_BYTE_2);
647+
break;
648+
649+
case NXP_ENET_QOS_MAC_ADDR_SOURCE_UNIQUE:
647650
nxp_enet_unique_mac(data->mac_addr.addr);
648-
} else {
649-
gen_random_mac(data->mac_addr.addr,
650-
NXP_OUI_BYTE_0, NXP_OUI_BYTE_1, NXP_OUI_BYTE_2);
651+
break;
652+
653+
default:
654+
break;
651655
}
652656

653657
/* This driver cannot work without interrupts. */
@@ -776,12 +780,12 @@ static const struct ethernet_api api_funcs = {
776780
"MAC address not specified on ENET QOS DT node");
777781

778782
#define NXP_ENET_QOS_MAC_ADDR_SOURCE(n) \
779-
COND_CODE_1(DT_NODE_HAS_PROP(DT_DRV_INST(n), local_mac_address), \
780-
(NXP_ENET_QOS_MAC_ADDR_SOURCE_LOCAL), \
781-
(COND_CODE_1(DT_INST_PROP(n, zephyr_random_mac_address), \
782-
(NXP_ENET_QOS_MAC_ADDR_SOURCE_RANDOM), \
783-
(COND_CODE_1(DT_INST_PROP(n, nxp_unique_mac), \
784-
(NXP_ENET_QOS_MAC_ADDR_SOURCE_UNIQUE), \
783+
COND_CODE_1(DT_INST_PROP(n, zephyr_random_mac_address), \
784+
(NXP_ENET_QOS_MAC_ADDR_SOURCE_RANDOM), \
785+
(COND_CODE_1(DT_INST_PROP(n, nxp_unique_mac), \
786+
(NXP_ENET_QOS_MAC_ADDR_SOURCE_UNIQUE), \
787+
(COND_CODE_1(DT_NODE_HAS_PROP(DT_DRV_INST(n), local_mac_address), \
788+
(NXP_ENET_QOS_MAC_ADDR_SOURCE_LOCAL), \
785789
(NXP_ENET_QOS_MAC_ADDR_SOURCE_INVALID))))))
786790

787791
#define NXP_ENET_QOS_CONNECT_IRQS(node_id, prop, idx) \

0 commit comments

Comments
 (0)