11
11
12
12
#include <stdlib.h>
13
13
14
- #ifdef CONFIG_WIFI_RANDOM_MAC_ADDRESS
15
- #include <zephyr/random/random.h>
16
- #endif
17
-
18
14
#include <zephyr/logging/log.h>
19
15
LOG_MODULE_DECLARE (wifi_nrf , CONFIG_WIFI_NRF70_LOG_LEVEL );
20
16
@@ -29,6 +25,7 @@ LOG_MODULE_DECLARE(wifi_nrf, CONFIG_WIFI_NRF70_LOG_LEVEL);
29
25
#include "fmac_main.h"
30
26
#include "wpa_supp_if.h"
31
27
#include "net_if.h"
28
+ #include "eth.h"
32
29
33
30
extern char * net_sprint_ll_addr_buf (const uint8_t * ll , uint8_t ll_len ,
34
31
char * buf , int buflen );
@@ -553,16 +550,12 @@ static void ip_maddr_event_handler(struct net_if *iface,
553
550
}
554
551
#endif /* CONFIG_NRF70_STA_MODE */
555
552
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
-
561
553
enum nrf_wifi_status nrf_wifi_get_mac_addr (struct nrf_wifi_vif_ctx_zep * vif_ctx_zep )
562
554
{
563
555
enum nrf_wifi_status status = NRF_WIFI_STATUS_FAIL ;
564
556
struct nrf_wifi_fmac_dev_ctx * fmac_dev_ctx = NULL ;
565
557
struct nrf_wifi_ctx_zep * rpu_ctx_zep = NULL ;
558
+ const struct net_eth_mac_config * mac_cfg = NULL ;
566
559
int ret ;
567
560
568
561
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_
585
578
}
586
579
587
580
fmac_dev_ctx = rpu_ctx_zep -> rpu_ctx ;
581
+ mac_cfg = vif_ctx_zep -> zep_dev_ctx -> config ;
588
582
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 ) {
615
585
#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
+ }
624
592
#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 ;
632
600
#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
+ }
634
605
635
606
if (!nrf_wifi_utils_is_mac_addr_valid (vif_ctx_zep -> mac_addr .addr )) {
636
607
LOG_ERR ("%s: Invalid MAC address: %s" ,
0 commit comments