aboutsummaryrefslogtreecommitdiffstats
path: root/target
diff options
context:
space:
mode:
authorChristian Lamparter <chunkeey@gmail.com>2018-12-15 16:56:24 +0100
committerChristian Lamparter <chunkeey@gmail.com>2018-12-15 19:02:00 +0100
commit10ad6d6e07d3e5c98029df51558200429e23fbbf (patch)
treef823ea72dc6edaedcfb1f3409a2b4f9eeabc7f91 /target
parentcc5c63f217e6ca29959b5c61ed5de690a42d9fbf (diff)
downloadupstream-10ad6d6e07d3e5c98029df51558200429e23fbbf.tar.gz
upstream-10ad6d6e07d3e5c98029df51558200429e23fbbf.tar.bz2
upstream-10ad6d6e07d3e5c98029df51558200429e23fbbf.zip
ipq40xx: integrate ath10kcal_patch_mac into ath10kcal_patch_mac_crc
In the thread: "ipq806x: add ath10k calibration data MAC addresses patching" Chuanhong Guo <gch981213@gmail.com> noted that: "All ath10k calibration data have a checksum at 0x2. ath10kcal_patch_mac works for QCA9880/QCA9882 only because the ath10k firmware for these two chips doesn't check the checksum value. (QCA proprietary driver checks this and refuses to use caldata with incorrect checksum.)" This patch updates 11-ath10k-caldata of the ipq40xx target accordingly. Reported-by: Chuanhong Guo <gch981213@gmail.com> Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
Diffstat (limited to 'target')
-rw-r--r--target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata28
1 files changed, 11 insertions, 17 deletions
diff --git a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
index 605a03be1d..8242fe0eb1 100644
--- a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
+++ b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
@@ -53,14 +53,6 @@ ath10kcal_ubi_extract() {
ath10kcal_die "failed to extract from $ubi"
}
-ath10kcal_patch_mac() {
- local mac=$1
-
- [ -z "$mac" ] && return
-
- macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=1 seek=6 count=6
-}
-
ath10kcal_patch_mac_crc() {
local mac=$1
local mac_offset=6
@@ -69,19 +61,21 @@ ath10kcal_patch_mac_crc() {
local xor_fw_mac
local xor_fw_chksum
+ [ -z "$mac" ] && return
+
xor_fw_mac=$(hexdump -v -n 6 -s $mac_offset -e '/1 "%02x"' /lib/firmware/$FIRMWARE)
xor_fw_mac="${xor_fw_mac:0:4} ${xor_fw_mac:4:4} ${xor_fw_mac:8:4}"
- ath10kcal_patch_mac "$mac" && {
- xor_mac=${mac//:/}
- xor_mac="${xor_mac:0:4} ${xor_mac:4:4} ${xor_mac:8:4}"
+ macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=1 seek=6 count=6
+
+ xor_mac=${mac//:/}
+ xor_mac="${xor_mac:0:4} ${xor_mac:4:4} ${xor_mac:8:4}"
- xor_fw_chksum=$(hexdump -v -n 2 -s $chksum_offset -e '/1 "%02x"' /lib/firmware/$FIRMWARE)
- xor_fw_chksum=$(xor $xor_fw_chksum $xor_fw_mac $xor_mac)
+ xor_fw_chksum=$(hexdump -v -n 2 -s $chksum_offset -e '/1 "%02x"' /lib/firmware/$FIRMWARE)
+ xor_fw_chksum=$(xor $xor_fw_chksum $xor_fw_mac $xor_mac)
- printf "%b" "\x${xor_fw_chksum:0:2}\x${xor_fw_chksum:2:2}" | \
- dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=1 seek=$chksum_offset count=2
- }
+ printf "%b" "\x${xor_fw_chksum:0:2}\x${xor_fw_chksum:2:2}" | \
+ dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=1 seek=$chksum_offset count=2
}
ath10kcal_is_caldata_valid() {
@@ -106,7 +100,7 @@ case "$FIRMWARE" in
meraki,mr33)
ath10kcal_ubi_extract "ART" 36864 2116
ath10kcal_is_caldata_valid "4408" || ath10kcal_extract "ART" 36864 2116
- ath10kcal_patch_mac $(macaddr_add $(get_mac_binary "/sys/bus/i2c/devices/0-0050/eeprom" 102) +1)
+ ath10kcal_patch_mac_crc $(macaddr_add $(get_mac_binary "/sys/bus/i2c/devices/0-0050/eeprom" 102) +1)
;;
esac
;;