1111
1212#include <stdlib.h>
1313
14- #ifdef CONFIG_WIFI_RANDOM_MAC_ADDRESS
15- #include <zephyr/random/random.h>
16- #endif
17-
1814#include <zephyr/logging/log.h>
1915LOG_MODULE_DECLARE (wifi_nrf , CONFIG_WIFI_NRF70_LOG_LEVEL );
2016
@@ -29,6 +25,7 @@ LOG_MODULE_DECLARE(wifi_nrf, CONFIG_WIFI_NRF70_LOG_LEVEL);
2925#include "fmac_main.h"
3026#include "wpa_supp_if.h"
3127#include "net_if.h"
28+ #include "eth.h"
3229
3330extern char * net_sprint_ll_addr_buf (const uint8_t * ll , uint8_t ll_len ,
3431 char * buf , int buflen );
@@ -553,16 +550,12 @@ static void ip_maddr_event_handler(struct net_if *iface,
553550}
554551#endif /* CONFIG_NRF70_STA_MODE */
555552
556- #ifdef CONFIG_WIFI_FIXED_MAC_ADDRESS_ENABLED
557- BUILD_ASSERT (sizeof (CONFIG_WIFI_FIXED_MAC_ADDRESS ) - 1 == ((WIFI_MAC_ADDR_LEN * 2 ) + 5 ),
558- "Invalid fixed MAC address length" );
559- #endif
560-
561553enum nrf_wifi_status nrf_wifi_get_mac_addr (struct nrf_wifi_vif_ctx_zep * vif_ctx_zep )
562554{
563555 enum nrf_wifi_status status = NRF_WIFI_STATUS_FAIL ;
564556 struct nrf_wifi_fmac_dev_ctx * fmac_dev_ctx = NULL ;
565557 struct nrf_wifi_ctx_zep * rpu_ctx_zep = NULL ;
558+ const struct net_eth_mac_config * mac_cfg = NULL ;
566559 int ret ;
567560
568561 if (!vif_ctx_zep ) {
@@ -585,52 +578,30 @@ enum nrf_wifi_status nrf_wifi_get_mac_addr(struct nrf_wifi_vif_ctx_zep *vif_ctx_
585578 }
586579
587580 fmac_dev_ctx = rpu_ctx_zep -> rpu_ctx ;
581+ mac_cfg = vif_ctx_zep -> zep_dev_ctx -> config ;
588582
589- #ifdef CONFIG_WIFI_FIXED_MAC_ADDRESS_ENABLED
590- char fixed_mac_addr [WIFI_MAC_ADDR_LEN ];
591-
592- ret = net_bytes_from_str (fixed_mac_addr ,
593- WIFI_MAC_ADDR_LEN ,
594- CONFIG_WIFI_FIXED_MAC_ADDRESS );
595- if (ret < 0 ) {
596- LOG_ERR ("%s: Failed to parse MAC address: %s" ,
597- __func__ ,
598- CONFIG_WIFI_FIXED_MAC_ADDRESS );
599- goto unlock ;
600- }
601-
602- memcpy (vif_ctx_zep -> mac_addr .addr ,
603- fixed_mac_addr ,
604- WIFI_MAC_ADDR_LEN );
605- #elif CONFIG_WIFI_RANDOM_MAC_ADDRESS
606- char random_mac_addr [WIFI_MAC_ADDR_LEN ];
607-
608- sys_rand_get (random_mac_addr , WIFI_MAC_ADDR_LEN );
609- random_mac_addr [0 ] = (random_mac_addr [0 ] & UNICAST_MASK ) | LOCAL_BIT ;
610-
611- memcpy (vif_ctx_zep -> mac_addr .addr ,
612- random_mac_addr ,
613- WIFI_MAC_ADDR_LEN );
614- #elif CONFIG_WIFI_OTP_MAC_ADDRESS
583+ ret = net_eth_mac_load (mac_cfg , vif_ctx_zep -> mac_addr .addr );
584+ if (ret == - ENODATA ) {
615585#ifndef CONFIG_NRF71_ON_IPC
616- status = nrf_wifi_fmac_otp_mac_addr_get (fmac_dev_ctx ,
617- vif_ctx_zep -> vif_idx ,
618- vif_ctx_zep -> mac_addr .addr );
619- if (status != NRF_WIFI_STATUS_SUCCESS ) {
620- LOG_ERR ("%s: Fetching of MAC address from OTP failed" ,
621- __func__ );
622- goto unlock ;
623- }
586+ status = nrf_wifi_fmac_otp_mac_addr_get (fmac_dev_ctx , vif_ctx_zep -> vif_idx ,
587+ vif_ctx_zep -> mac_addr .addr );
588+ if (status != NRF_WIFI_STATUS_SUCCESS ) {
589+ LOG_ERR ("%s: Fetching of MAC address from OTP failed" , __func__ );
590+ goto unlock ;
591+ }
624592#else
625- /* Set dummy MAC address */
626- vif_ctx_zep -> mac_addr .addr [0 ] = 0x00 ;
627- vif_ctx_zep -> mac_addr .addr [1 ] = 0x00 ;
628- vif_ctx_zep -> mac_addr .addr [2 ] = 0x5E ;
629- vif_ctx_zep -> mac_addr .addr [3 ] = 0x00 ;
630- vif_ctx_zep -> mac_addr .addr [4 ] = 0x10 ;
631- vif_ctx_zep -> mac_addr .addr [5 ] = 0x00 ;
593+ /* Set dummy MAC address */
594+ vif_ctx_zep -> mac_addr .addr [0 ] = 0x00 ;
595+ vif_ctx_zep -> mac_addr .addr [1 ] = 0x00 ;
596+ vif_ctx_zep -> mac_addr .addr [2 ] = 0x5E ;
597+ vif_ctx_zep -> mac_addr .addr [3 ] = 0x00 ;
598+ vif_ctx_zep -> mac_addr .addr [4 ] = 0x10 ;
599+ vif_ctx_zep -> mac_addr .addr [5 ] = 0x00 ;
632600#endif /* !CONFIG_NRF71_ON_IPC */
633- #endif
601+ } else if (ret < 0 ) {
602+ LOG_ERR ("%s: Loading of MAC address from config failed (%d)" , __func__ , ret );
603+ goto unlock ;
604+ }
634605
635606 if (!nrf_wifi_utils_is_mac_addr_valid (vif_ctx_zep -> mac_addr .addr )) {
636607 LOG_ERR ("%s: Invalid MAC address: %s" ,
0 commit comments