Same MAC address for both PCI modules

Dear All,

We are using ar9882 based 5GHz PCI module with Librerouter(QCA9558) in which we are not doing any settings for MAC Address.

We are using the ath10k driver with OpenWrt with 4.9 and 4.14 kernel. We are using 2x 5GHz module in single product.

We are getting the fixed mac 00:03:07:12:34:56 for both the PCI on same router board as per below image.

After deep analysis we found that the mac address get from the below offset.

FIle :/lib/firmware/ath10k/QCA988X/hw2.0/firmware-5.bin offset : 0x00000118

Still, We need to set two different mac address for 2 different PCI module on same board.

Can anyone help us for this?

Thanks & Best Regards,
Nikunj Patel

Looks like your modules are not calibrated (I doubt that) or they have calibration data stored on the on-board (on the module) small EEPROM and for some reason ath10k doesn't read that.

Please share some ath10k related logs from dmesg and if it's not a secret provide model of the modules you use.

Dear pepe2k,

Thanks for your quick reply,

Please find the below log of dmesg

root@LiMe-10b9a6:/# dmesg | grep ath10k
[   15.800243] ath10k_pci 0000:00:00.0: pci irq legacy oper_irq_mode 1 irq_mode 0 reset_mode 0
[   16.193907] ath10k_pci 0000:00:00.0: Direct firmware load for ath10k/pre-cal-pci-0000:00:00.0.bin failed with error -2
[   16.204793] ath10k_pci 0000:00:00.0: Falling back to user helper
[   19.275910] firmware ath10k!pre-cal-pci-0000:00:00.0.bin: firmware_loading_store: map pages failed
[   19.285262] ath10k_pci 0000:00:00.0: Direct firmware load for ath10k/cal-pci-0000:00:00.0.bin failed with error -2
[   19.295786] ath10k_pci 0000:00:00.0: Falling back to user helper
[   19.476985] firmware ath10k!cal-pci-0000:00:00.0.bin: firmware_loading_store: map pages failed
[   19.487569] ath10k_pci 0000:00:00.0: Direct firmware load for ath10k/QCA988X/hw2.0/firmware-6.bin failed with error -2
[   19.498457] ath10k_pci 0000:00:00.0: Falling back to user helper
[   19.678694] firmware ath10k!QCA988X!hw2.0!firmware-6.bin: firmware_loading_store: map pages failed
[   19.692218] ath10k_pci 0000:00:00.0: qca988x hw2.0 target 0x4100016c chip_id 0x043222ff sub 19b6:d075
[   19.701619] ath10k_pci 0000:00:00.0: kconfig debug 1 debugfs 1 tracing 0 dfs 1 testmode 1
[   19.714679] ath10k_pci 0000:00:00.0: firmware ver 10.2.4-1.0-00047 api 5 features no-p2p,raw-mode,mfp,allows-mesh-bcast crc32 35bd9258
[   19.813919] ath10k_pci 0000:00:00.0: Direct firmware load for ath10k/QCA988X/hw2.0/board-2.bin failed with error -2
[   19.824531] ath10k_pci 0000:00:00.0: Falling back to user helper
[   19.942375] firmware ath10k!QCA988X!hw2.0!board-2.bin: firmware_loading_store: map pages failed
[   19.951630] ath10k_pci 0000:00:00.0: board_file api 1 bmi_id N/A crc32 bebc7c08
[   21.134456] ath10k_pci 0000:00:00.0: htt-ver 2.1 wmi-op 5 htt-op 2 cal otp max-sta 128 raw 0 hwcrypto 1
[   21.311057] ath10k_pci 0000:01:00.0: pci irq legacy oper_irq_mode 1 irq_mode 0 reset_mode 0
[   21.673895] ath10k_pci 0000:01:00.0: Direct firmware load for ath10k/pre-cal-pci-0000:01:00.0.bin failed with error -2
[   21.684772] ath10k_pci 0000:01:00.0: Falling back to user helper
[   21.978147] firmware ath10k!pre-cal-pci-0000:01:00.0.bin: firmware_loading_store: map pages failed
[   21.990342] ath10k_pci 0000:01:00.0: Direct firmware load for ath10k/cal-pci-0000:01:00.0.bin failed with error -2
[   22.000880] ath10k_pci 0000:01:00.0: Falling back to user helper
[   22.183219] firmware ath10k!cal-pci-0000:01:00.0.bin: firmware_loading_store: map pages failed
[   22.192186] ath10k_pci 0000:01:00.0: Direct firmware load for ath10k/QCA988X/hw2.0/firmware-6.bin failed with error -2
[   22.203066] ath10k_pci 0000:01:00.0: Falling back to user helper
[   22.385853] firmware ath10k!QCA988X!hw2.0!firmware-6.bin: firmware_loading_store: map pages failed
[   22.395145] ath10k_pci 0000:01:00.0: qca988x hw2.0 target 0x4100016c chip_id 0x043222ff sub 19b6:d075
[   22.404525] ath10k_pci 0000:01:00.0: kconfig debug 1 debugfs 1 tracing 0 dfs 1 testmode 1
[   22.417585] ath10k_pci 0000:01:00.0: firmware ver 10.2.4-1.0-00047 api 5 features no-p2p,raw-mode,mfp,allows-mesh-bcast crc32 35bd9258
[   22.513880] ath10k_pci 0000:01:00.0: Direct firmware load for ath10k/QCA988X/hw2.0/board-2.bin failed with error -2
[   22.524487] ath10k_pci 0000:01:00.0: Falling back to user helper
[   22.648668] firmware ath10k!QCA988X!hw2.0!board-2.bin: firmware_loading_store: map pages failed
[   22.657722] ath10k_pci 0000:01:00.0: board_file api 1 bmi_id N/A crc32 bebc7c08
[   23.840448] ath10k_pci 0000:01:00.0: htt-ver 2.1 wmi-op 5 htt-op 2 cal otp max-sta 128 raw 0 hwcrypto 1
[   47.782740] ath10k_pci 0000:01:00.0: pdev param 0 not supported by firmware
[   49.461831] ath10k_pci 0000:00:00.0: pdev param 0 not supported by firmware


root@LiMe-10b9a6:/# uname -a
Linux LiMe-10b9a6 4.14.215 #0 Wed Jul 28 14:24:07 2021 mips GNU/Linux

root@LiMe-10b9a6:/# ls -la /lib/firmware/ath10k/QCA988X/hw2.0/
-rw-r--r--    1 root     root          2116 Jun 21 21:41 /lib/firmware/ath10k/QCA988X/hw2.0/board.bin
-rw-r--r--    1 root     root        249044 Jun 21 21:41 /lib/firmware/ath10k/QCA988X/hw2.0/firmware-5.bin

Module Model : R11e-5HacD

Link : MikroTik R11e-5HacD 5GHz HP miniPCI-e 802.11ac 2x2 Card (streakwave.com)

Thanks & Best Regards,
Nikunj Patel

The unique MAC should be stored inside EEPROM or the OTP memory inside chip.
Did you try 21.02 with kernel 5.4? Any luck with ath10k-ct?

Dear pepe2k,

Can you please elaborate more for 21.04 ??. I didn't check ath10k-ct firmware.... Will check and update you.

Thanks & Best regards
Nikunj Patel

21.02 release is in RC stage, see: https://openwrt.org/releases/21.02/start

Dear Piotr

Tested with ath10k-ct firmware but still no luck. Still getting same mac.

root@LiMe-10b99a:/lib/firmware/ath10k/QCA988X/hw2.0# ls -la
drwxr-xr-x    2 root     root            54 Jun 21 21:41 .
drwxr-xr-x    3 root     root            28 Jun 21 21:41 ..
-rw-r--r--    1 root     root          2116 Jun 21 21:41 board.bin
-rw-r--r--    1 root     root        215728 Jun 21 21:41 firmware-2.bin
root@LiMe-10b99a:/lib/firmware/ath10k/QCA988X/hw2.0# dmesg | grep pci
[    0.132431] PCI host bridge /ahb/pcie-controller@180c0000 ranges:
[    0.150525] PCI host bridge /ahb/pcie-controller@18250000 ranges:
[    0.187202] pci_bus 0000:00: root bus resource [mem 0x10000000-0x11ffffff]
[    0.194549] pci_bus 0000:00: root bus resource [io  0x0000]
[    0.200478] pci_bus 0000:00: root bus resource [??? 0x00000000 flags 0x0]
[    0.207705] pci_bus 0000:00: No busn resource found for root bus, will use [bus 00-ff]
[    0.216159] pci 0000:00:00.0: [168c:003c] type 00 class 0x028000
[    0.216213] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x001fffff 64bit]
[    0.216267] pci 0000:00:00.0: reg 0x30: [mem 0x00000000-0x0000ffff pref]
[    0.216340] pci 0000:00:00.0: supports D1 D2
[    0.216515] pci_bus 0000:00: busn_res: [bus 00-ff] end is updated to 00
[    0.216538] pci 0000:00:00.0: BAR 0: assigned [mem 0x10000000-0x101fffff 64bit]
[    0.224363] pci 0000:00:00.0: BAR 6: assigned [mem 0x10200000-0x1020ffff pref]
[    0.236549] pci_bus 0000:01: root bus resource [mem 0x12000000-0x13ffffff]
[    0.243861] pci_bus 0000:01: root bus resource [io  0x0001]
[    0.249797] pci_bus 0000:01: root bus resource [??? 0x00000000 flags 0x0]
[    0.257017] pci_bus 0000:01: No busn resource found for root bus, will use [bus 01-ff]
[    0.265477] pci 0000:01:00.0: [168c:003c] type 00 class 0x028000
[    0.265529] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x001fffff 64bit]
[    0.265583] pci 0000:01:00.0: reg 0x30: [mem 0x00000000-0x0000ffff pref]
[    0.265653] pci 0000:01:00.0: supports D1 D2
[    0.265826] pci_bus 0000:01: busn_res: [bus 01-ff] end is updated to 01
[    0.265846] pci 0000:01:00.0: BAR 0: assigned [mem 0x12000000-0x121fffff 64bit]
[    0.273642] pci 0000:01:00.0: BAR 6: assigned [mem 0x12200000-0x1220ffff pref]
[   15.827021] ath10k 4.19 driver, optimized for CT firmware, probing pci device: 0x3c.
[   15.870242] ath10k_pci 0000:00:00.0: pci irq legacy oper_irq_mode 1 irq_mode 0 reset_mode 0
[   16.245541] ath10k_pci 0000:00:00.0: Direct firmware load for ath10k/fwcfg-pci-0000:00:00.0.txt failed with error -2
[   16.256252] ath10k_pci 0000:00:00.0: Falling back to user helper
[   19.287017] firmware ath10k!fwcfg-pci-0000:00:00.0.txt: firmware_loading_store: map pages failed
[   19.296194] ath10k_pci 0000:00:00.0: Direct firmware load for ath10k/pre-cal-pci-0000:00:00.0.bin failed with error -2
[   19.307072] ath10k_pci 0000:00:00.0: Falling back to user helper
[   19.488990] firmware ath10k!pre-cal-pci-0000:00:00.0.bin: firmware_loading_store: map pages failed
[   19.498370] ath10k_pci 0000:00:00.0: Direct firmware load for ath10k/cal-pci-0000:00:00.0.bin failed with error -2
[   19.508901] ath10k_pci 0000:00:00.0: Falling back to user helper
[   19.689797] firmware ath10k!cal-pci-0000:00:00.0.bin: firmware_loading_store: map pages failed
[   19.698886] ath10k_pci 0000:00:00.0: Direct firmware load for ath10k/QCA988X/hw2.0/ct-firmware-5.bin failed with error -2
[   19.710036] ath10k_pci 0000:00:00.0: Falling back to user helper
[   19.902554] ath10k_pci 0000:00:00.0: Direct firmware load for ath10k/QCA988X/hw2.0/ct-firmware-2.bin failed with error -2
[   19.913700] ath10k_pci 0000:00:00.0: Falling back to user helper
[   20.103305] ath10k_pci 0000:00:00.0: Direct firmware load for ath10k/QCA988X/hw2.0/firmware-6.bin failed with error -2
[   20.114191] ath10k_pci 0000:00:00.0: Falling back to user helper
[   20.305919] ath10k_pci 0000:00:00.0: Direct firmware load for ath10k/QCA988X/hw2.0/firmware-5.bin failed with error -2
[   20.316801] ath10k_pci 0000:00:00.0: Falling back to user helper
[   20.509006] ath10k_pci 0000:00:00.0: Direct firmware load for ath10k/QCA988X/hw2.0/firmware-4.bin failed with error -2
[   20.519889] ath10k_pci 0000:00:00.0: Falling back to user helper
[   20.711896] ath10k_pci 0000:00:00.0: Direct firmware load for ath10k/QCA988X/hw2.0/firmware-3.bin failed with error -2
[   20.722781] ath10k_pci 0000:00:00.0: Falling back to user helper
[   20.917808] ath10k_pci 0000:00:00.0: qca988x hw2.0 target 0x4100016c chip_id 0x043222ff sub 19b6:d075
[   20.927209] ath10k_pci 0000:00:00.0: kconfig debug 1 debugfs 1 tracing 0 dfs 1 testmode 0
[   20.939628] ath10k_pci 0000:00:00.0: firmware ver 10.1-ct-8x-__fW-022-538f0906 api 2 features wmi-10.x,has-wmi-mgmt-tx,mfp,txstatus-noack,wmi-10.x-CT,ratemask-CT,txrate-CT,get-temp-CT,tx-rc-CT,cust-stats-CT,retry-gt2-CT,txrate2-CT,beacon-cb-CT,wmi-block-ack-CT crc32 e1c91a74
[   21.053995] ath10k_pci 0000:00:00.0: Direct firmware load for ath10k/QCA988X/hw2.0/board-2.bin failed with error -2
[   21.064622] ath10k_pci 0000:00:00.0: Falling back to user helper
[   21.188172] ath10k_pci 0000:00:00.0: board_file api 1 bmi_id N/A crc32 bebc7c08
[   22.164895] ath10k_pci 0000:00:00.0: 10.1 wmi init: vdevs: 16  peers: 127  tid: 256
[   22.182808] ath10k_pci 0000:00:00.0: wmi print 'P 128 V 8 T 410'
[   22.189138] ath10k_pci 0000:00:00.0: wmi print 'msdu-desc: 1424  sw-crypt: 0 ct-sta: 0'
[   22.197288] ath10k_pci 0000:00:00.0: wmi print 'alloc rem: 20984 iram: 25656'
[   22.254131] ath10k_pci 0000:00:00.0: htt-ver 2.1 wmi-op 2 htt-op 2 cal otp max-sta 128 raw 0 hwcrypto 1
[   22.269350] ath10k_pci 0000:00:00.0: NOTE:  Firmware DBGLOG output disabled in debug_mask: 0x10000000
[   22.434079] ath10k 4.19 driver, optimized for CT firmware, probing pci device: 0x3c.
[   22.458664] ath10k_pci 0000:01:00.0: pci irq legacy oper_irq_mode 1 irq_mode 0 reset_mode 0
[   22.810956] ath10k_pci 0000:01:00.0: Direct firmware load for ath10k/fwcfg-pci-0000:01:00.0.txt failed with error -2
[   22.821671] ath10k_pci 0000:01:00.0: Falling back to user helper
[   23.119306] firmware ath10k!fwcfg-pci-0000:01:00.0.txt: firmware_loading_store: map pages failed
[   23.128482] ath10k_pci 0000:01:00.0: Direct firmware load for ath10k/pre-cal-pci-0000:01:00.0.bin failed with error -2
[   23.139365] ath10k_pci 0000:01:00.0: Falling back to user helper
[   23.321057] firmware ath10k!pre-cal-pci-0000:01:00.0.bin: firmware_loading_store: map pages failed
[   23.330413] ath10k_pci 0000:01:00.0: Direct firmware load for ath10k/cal-pci-0000:01:00.0.bin failed with error -2
[   23.340938] ath10k_pci 0000:01:00.0: Falling back to user helper
[   23.524424] firmware ath10k!cal-pci-0000:01:00.0.bin: firmware_loading_store: map pages failed
[   23.533357] ath10k_pci 0000:01:00.0: Direct firmware load for ath10k/QCA988X/hw2.0/ct-firmware-5.bin failed with error -2
[   23.544505] ath10k_pci 0000:01:00.0: Falling back to user helper
[   23.734143] ath10k_pci 0000:01:00.0: Direct firmware load for ath10k/QCA988X/hw2.0/ct-firmware-2.bin failed with error -2
[   23.745289] ath10k_pci 0000:01:00.0: Falling back to user helper
[   23.936932] ath10k_pci 0000:01:00.0: Direct firmware load for ath10k/QCA988X/hw2.0/firmware-6.bin failed with error -2
[   23.947811] ath10k_pci 0000:01:00.0: Falling back to user helper
[   24.139732] ath10k_pci 0000:01:00.0: Direct firmware load for ath10k/QCA988X/hw2.0/firmware-5.bin failed with error -2
[   24.150608] ath10k_pci 0000:01:00.0: Falling back to user helper
[   24.339436] ath10k_pci 0000:01:00.0: Direct firmware load for ath10k/QCA988X/hw2.0/firmware-4.bin failed with error -2
[   24.350315] ath10k_pci 0000:01:00.0: Falling back to user helper
[   24.541263] ath10k_pci 0000:01:00.0: Direct firmware load for ath10k/QCA988X/hw2.0/firmware-3.bin failed with error -2
[   24.552143] ath10k_pci 0000:01:00.0: Falling back to user helper
[   24.744228] ath10k_pci 0000:01:00.0: qca988x hw2.0 target 0x4100016c chip_id 0x043222ff sub 19b6:d075
[   24.753583] ath10k_pci 0000:01:00.0: kconfig debug 1 debugfs 1 tracing 0 dfs 1 testmode 0
[   24.766048] ath10k_pci 0000:01:00.0: firmware ver 10.1-ct-8x-__fW-022-538f0906 api 2 features wmi-10.x,has-wmi-mgmt-tx,mfp,txstatus-noack,wmi-10.x-CT,ratemask-CT,txrate-CT,get-temp-CT,tx-rc-CT,cust-stats-CT,retry-gt2-CT,txrate2-CT,beacon-cb-CT,wmi-block-ack-CT crc32 e1c91a74
[   24.880031] ath10k_pci 0000:01:00.0: Direct firmware load for ath10k/QCA988X/hw2.0/board-2.bin failed with error -2
[   24.890649] ath10k_pci 0000:01:00.0: Falling back to user helper
[   25.014304] ath10k_pci 0000:01:00.0: board_file api 1 bmi_id N/A crc32 bebc7c08
[   25.995751] ath10k_pci 0000:01:00.0: 10.1 wmi init: vdevs: 16  peers: 127  tid: 256
[   26.013657] ath10k_pci 0000:01:00.0: wmi print 'P 128 V 8 T 410'
[   26.019986] ath10k_pci 0000:01:00.0: wmi print 'msdu-desc: 1424  sw-crypt: 0 ct-sta: 0'
[   26.028139] ath10k_pci 0000:01:00.0: wmi print 'alloc rem: 20984 iram: 25656'
[   26.084953] ath10k_pci 0000:01:00.0: htt-ver 2.1 wmi-op 2 htt-op 2 cal otp max-sta 128 raw 0 hwcrypto 1
[   49.773623] ath10k_pci 0000:00:00.0: 10.1 wmi init: vdevs: 16  peers: 127  tid: 256
[   49.791599] ath10k_pci 0000:00:00.0: wmi print 'P 128 V 8 T 410'
[   49.798010] ath10k_pci 0000:00:00.0: wmi print 'msdu-desc: 1424  sw-crypt: 0 ct-sta: 0'
[   49.806168] ath10k_pci 0000:00:00.0: wmi print 'alloc rem: 20984 iram: 25656'
[   49.915398] ath10k_pci 0000:00:00.0: pdev param 0 not supported by firmware
[   49.927268] ath10k_pci 0000:00:00.0: must load driver with rawmode=1 to add mesh interfaces
[   51.499792] ath10k_pci 0000:01:00.0: 10.1 wmi init: vdevs: 16  peers: 127  tid: 256
[   51.517749] ath10k_pci 0000:01:00.0: wmi print 'P 128 V 8 T 410'
[   51.524147] ath10k_pci 0000:01:00.0: wmi print 'msdu-desc: 1424  sw-crypt: 0 ct-sta: 0'
[   51.532273] ath10k_pci 0000:01:00.0: wmi print 'alloc rem: 20984 iram: 25656'
[   51.604617] ath10k_pci 0000:01:00.0: pdev param 0 not supported by firmware
[   51.611933] ath10k_pci 0000:01:00.0: must load driver with rawmode=1 to add mesh interfaces
root@LiMe-10b99a:/lib/firmware/ath10k/QCA988X/hw2.0# iwinfo
wlan0-mesh ESSID: unknown
          Access Point: 00:03:07:12:34:56
          Mode: Mesh Point  Channel: unknown (unknown)
          Tx-Power: 0 dBm  Link Quality: unknown/70
          Signal: unknown  Noise: unknown
          Bit Rate: unknown
          Encryption: none
          Type: nl80211  HW Mode(s): 802.11nac
          Hardware: 168C:003C 19B6:D075 [Generic MAC80211]
          TX power offset: unknown
          Frequency offset: unknown
          Supports VAPs: yes  PHY name: phy0

wlan1-mesh ESSID: unknown
          Access Point: 00:03:07:12:34:56
          Mode: Mesh Point  Channel: unknown (unknown)
          Tx-Power: 0 dBm  Link Quality: unknown/70
          Signal: unknown  Noise: unknown
          Bit Rate: unknown
          Encryption: none
          Type: nl80211  HW Mode(s): 802.11nac
          Hardware: 168C:003C 19B6:D075 [Generic MAC80211]
          TX power offset: unknown
          Frequency offset: unknown
          Supports VAPs: yes  PHY name: phy1

wlan2-ap  ESSID: "LibreMesh.org"
          Access Point: 70:F8:E7:10:B9:9C
          Mode: Master  Channel: 11 (2.462 GHz)
          Tx-Power: 28 dBm  Link Quality: unknown/70
          Signal: unknown  Noise: -95 dBm
          Bit Rate: unknown
          Encryption: none
          Type: nl80211  HW Mode(s): 802.11bgn
          Hardware: unknown [Generic MAC80211]
          TX power offset: unknown
          Frequency offset: unknown
          Supports VAPs: yes  PHY name: phy2

wlan2-apname ESSID: "LibreMesh.org/LiMe-10b99a"
          Access Point: 72:F8:E7:10:B9:9C
          Mode: Master  Channel: 11 (2.462 GHz)
          Tx-Power: 28 dBm  Link Quality: unknown/70
          Signal: unknown  Noise: -95 dBm
          Bit Rate: unknown
          Encryption: none
          Type: nl80211  HW Mode(s): 802.11bgn
          Hardware: unknown [Generic MAC80211]
          TX power offset: unknown
          Frequency offset: unknown
          Supports VAPs: yes  PHY name: phy2

Thanks & Best Regards,
Nikunj Patel

I also have this chipset for 5 GHz WiFi on TP-Link Archer C7 v2|5. I wonder if my problem is related ( br-vlX: received packet on bat0.X with own address as source address (addr:...., vlan:0) ) ?

@nikunjp26 hm... can you maybe provide actual picture of one of your cards? I'm wondering whether they have EEPROM installed or not.
I think the ath10k driver doesn't support fetching calibration data from EEPROM on the QCA988X series (only QCA9887 seems to be supported, see: https://github.com/torvalds/linux/blob/master/drivers/net/wireless/ath/ath10k/pci.c#L2985) so that could be the problem. Long time ago I had similar issue and decided to dump EEPROM content over I2C with RPi instead of fighting with the ath10k driver/firmware :slight_smile:

Dear Piotr

Please find the images of module.


Long time ago I had similar issue and decided to dump EEPROM content over I2C with RPi instead of fighting with the ath10k driver/firmware

can you please elaborate more because i didn't get this point?

Thanks & Best Regards,
Nikunj Patel

Thanks! Your version looks different (maybe just different revision of the module) than the one from website and also from the FCC database (check this PDF: https://fccid.io/TV7R11E5HAM/Internal-Photos/Internal-Photos-4159677). The one from website and FCC has a place for 8-pin IC on the top side (where the heatsink and antenna connectors are placed) which for me looks definitely like a place for external EEPROM. But I might be just wrong here and the calibration data is stored directly on the QCA9882 chip (it has OTP memory).

My cards have small EEPROM IC on the board (see photo below) where the calibration data (including unique MAC address) is stored. I used a small probes and connected to the EEPROM IC using Raspberry Pi (provided power, GND and I2C clock/data lines) and read out 2 KB from it. This way I have calibration data in a file I can provide to the driver from filesystem.