OpenWrt – Diff between revs 2 and 3
?pathlinks?
Rev 2 | Rev 3 | |||
---|---|---|---|---|
Line 1... | Line 1... | |||
1 | #!/bin/sh |
1 | #!/bin/sh |
|
Line 2... | Line -... | |||
2 | |
- | ||
3 | # xor multiple hex values of the same length |
- | ||
4 | xor() { |
- | ||
5 | local val |
- | ||
6 | local ret="0x$1" |
- | ||
7 | local retlen=${#1} |
- | ||
8 | |
- | ||
9 | shift |
- | ||
10 | while [ -n "$1" ]; do |
- | ||
11 | val="0x$1" |
- | ||
12 | ret=$((ret ^ val)) |
- | ||
13 | shift |
- | ||
14 | done |
- | ||
15 | |
- | ||
16 | printf "%0${retlen}x" "$ret" |
- | ||
17 | } |
- | ||
18 | |
2 | |
|
19 | ath10kcal_die() { |
3 | ath10kcal_die() { |
|
20 | echo "ath10cal: " "$*" |
4 | echo "ath10cal: " "$*" |
|
21 | exit 1 |
5 | exit 1 |
|
Line 42... | Line 26... | |||
42 | |
26 | |
|
43 | dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \ |
27 | dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \ |
|
44 | ath10kcal_die "failed to extract calibration data from $mtd" |
28 | ath10kcal_die "failed to extract calibration data from $mtd" |
|
Line 45... | Line 29... | |||
45 | } |
29 | } |
|
46 | |
30 | |
|
47 | ath10kcal_patch_mac_crc() { |
- | ||
48 | local mac=$1 |
- | ||
49 | local mac_offset=6 |
- | ||
50 | local chksum_offset=2 |
- | ||
51 | local xor_mac |
- | ||
Line 52... | Line 31... | |||
52 | local xor_fw_mac |
31 | ath10kcal_patch_mac() { |
|
Line 53... | Line -... | |||
53 | local xor_fw_chksum |
- | ||
54 | |
- | ||
55 | [ -z "$mac" ] && return |
- | ||
56 | |
32 | local mac=$1 |
|
57 | xor_fw_mac=$(hexdump -v -n 6 -s $mac_offset -e '/1 "%02x"' /lib/firmware/$FIRMWARE) |
- | ||
58 | xor_fw_mac="${xor_fw_mac:0:4} ${xor_fw_mac:4:4} ${xor_fw_mac:8:4}" |
- | ||
59 | |
- | ||
60 | macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=1 seek=6 count=6 |
- | ||
61 | |
- | ||
62 | xor_mac=${mac//:/} |
- | ||
63 | xor_mac="${xor_mac:0:4} ${xor_mac:4:4} ${xor_mac:8:4}" |
- | ||
64 | |
- | ||
65 | xor_fw_chksum=$(hexdump -v -n 2 -s $chksum_offset -e '/1 "%02x"' /lib/firmware/$FIRMWARE) |
- | ||
66 | xor_fw_chksum=$(xor $xor_fw_chksum $xor_fw_mac $xor_mac) |
33 | |
|
Line 67... | Line 34... | |||
67 | |
34 | [ -z "$mac" ] && return |
|
Line 68... | Line 35... | |||
68 | printf "%b" "\x${xor_fw_chksum:0:2}\x${xor_fw_chksum:2:2}" | \ |
35 | |
|
69 | dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=1 seek=$chksum_offset count=2 |
36 | macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=1 seek=6 count=6 |
|
Line 70... | Line 37... | |||
70 | } |
37 | } |
|
Line -... | Line 38... | |||
- | 38 | |
||
71 | |
39 | [ -e /lib/firmware/$FIRMWARE ] && exit 0 |
|
72 | [ -e /lib/firmware/$FIRMWARE ] && exit 0 |
40 | |
|
73 | |
41 | . /lib/functions.sh |
|
74 | . /lib/functions.sh |
- | ||
75 | . /lib/functions/system.sh |
- | ||
76 | |
- | ||
77 | board=$(board_name) |
- | ||
78 | |
42 | . /lib/functions/system.sh |
|
- | 43 | |
||
79 | case "$FIRMWARE" in |
44 | board=$(board_name) |
|
80 | "ath10k/pre-cal-pci-0000:01:00.0.bin") |
- | ||
81 | case $board in |
- | ||
82 | buffalo,wxr-2533dhp) |
- | ||
83 | ath10kcal_extract "ART" 4096 12064 |
- | ||
84 | ath10kcal_patch_mac_crc $(mtd_get_mac_binary ART 30) |
- | ||
85 | ;; |
45 | |
|
86 | linksys,ea8500) |
46 | |
|
87 | ath10kcal_extract "art" 4096 12064 |
47 | case "$FIRMWARE" in |
|
88 | ath10kcal_patch_mac_crc $(macaddr_add $(mtd_get_mac_ascii devinfo hw_mac_addr) +1) |
48 | "ath10k/pre-cal-pci-0000:01:00.0.bin") |
|
89 | ;; |
49 | case $board in |
|
90 | nec,wg2600hp) |
- | ||
91 | ath10kcal_extract "ART" 4096 12064 |
50 | linksys,ea8500) |
|
92 | ath10kcal_patch_mac_crc $(macaddr_add $(mtd_get_mac_binary PRODUCTDATA 12) +1) |
51 | hw_mac_addr=$(mtd_get_mac_ascii devinfo hw_mac_addr) |
|
93 | ;; |
52 | ath10kcal_extract "art" 4096 12064 |
|
94 | netgear,d7800 |\ |
53 | ;; |
|
95 | netgear,r7500v2 |\ |
54 | netgear,d7800 |\ |
|
- | 55 | netgear,r7500v2 |\ |
||
96 | netgear,r7800) |
56 | netgear,r7800) |
|
97 | ath10kcal_extract "art" 4096 12064 |
57 | ath10kcal_extract "art" 4096 12064 |
|
98 | ath10kcal_patch_mac_crc $(macaddr_add $(mtd_get_mac_binary art 6) +1) |
- | ||
99 | ;; |
58 | ;; |
|
100 | tplink,c2600) |
59 | tplink,c2600) |
|
101 | ath10kcal_extract "radio" 4096 12064 |
60 | ath10kcal_extract "radio" 4096 12064 |
|
102 | ath10kcal_patch_mac_crc $(macaddr_add $(mtd_get_mac_binary default-mac 8) -1) |
- | ||
103 | ;; |
61 | # ath10kcal_patch_mac $(macaddr_add $(mtd_get_mac_binary default-mac 8) -1) |
|
104 | tplink,vr2600v) |
62 | ;; |
|
105 | ath10kcal_extract "ART" 4096 12064 |
63 | nec,wg2600hp |\ |
|
106 | ath10kcal_patch_mac_crc $(macaddr_add $(mtd_get_mac_binary default-mac 0) -1) |
64 | tplink,vr2600v) |
|
107 | ;; |
65 | ath10kcal_extract "ART" 4096 12064 |
|
108 | zyxel,nbg6817) |
- | ||
109 | ath10kcal_extract "0:ART" 4096 12064 |
- | ||
110 | ath10kcal_patch_mac_crc $(macaddr_add $(mtd_get_mac_ascii 0:APPSBLENV ethaddr) +1) |
- | ||
111 | ;; |
- | ||
112 | esac |
66 | ;; |
|
- | 67 | zyxel,nbg6817) |
||
113 | ;; |
68 | ath10kcal_extract "0:ART" 4096 12064 |
|
114 | "ath10k/pre-cal-pci-0001:01:00.0.bin") |
- | ||
115 | case $board in |
- | ||
116 | buffalo,wxr-2533dhp) |
- | ||
117 | ath10kcal_extract "ART" 20480 12064 |
- | ||
118 | ath10kcal_patch_mac_crc $(mtd_get_mac_binary ART 24) |
- | ||
119 | ;; |
69 | ;; |
|
120 | linksys,ea8500) |
70 | esac |
|
121 | ath10kcal_extract "art" 20480 12064 |
71 | ;; |
|
122 | ath10kcal_patch_mac_crc $(macaddr_add $(mtd_get_mac_ascii devinfo hw_mac_addr) +2) |
72 | "ath10k/pre-cal-pci-0001:01:00.0.bin") |
|
123 | ;; |
73 | case $board in |
|
124 | nec,wg2600hp) |
- | ||
125 | ath10kcal_extract "ART" 20480 12064 |
74 | linksys,ea8500) |
|
126 | ath10kcal_patch_mac_crc $(mtd_get_mac_binary PRODUCTDATA 12) |
75 | hw_mac_addr=$(mtd_get_mac_ascii devinfo hw_mac_addr) |
|
127 | ;; |
76 | ath10kcal_extract "art" 20480 12064 |
|
128 | netgear,d7800 |\ |
77 | ;; |
|
129 | netgear,r7500v2 |\ |
78 | netgear,d7800 |\ |
|
- | 79 | netgear,r7500v2 |\ |
||
130 | netgear,r7800) |
80 | netgear,r7800) |
|
131 | ath10kcal_extract "art" 20480 12064 |
81 | ath10kcal_extract "art" 20480 12064 |
|
132 | ath10kcal_patch_mac_crc $(macaddr_add $(mtd_get_mac_binary art 6) +2) |
- | ||
133 | ;; |
82 | ;; |
|
134 | tplink,c2600) |
83 | tplink,c2600) |
|
135 | ath10kcal_extract "radio" 20480 12064 |
84 | ath10kcal_extract "radio" 20480 12064 |
|
136 | ath10kcal_patch_mac_crc $(mtd_get_mac_binary default-mac 8) |
- | ||
137 | ;; |
85 | # ath10kcal_patch_mac $(macaddr_add $(mtd_get_mac_binary default-mac 8) -2) |
|
138 | tplink,vr2600v) |
86 | ;; |
|
139 | ath10kcal_extract "ART" 20480 12064 |
87 | nec,wg2600hp |\ |
|
140 | ath10kcal_patch_mac_crc $(mtd_get_mac_binary default-mac 0) |
88 | tplink,vr2600v) |
|
141 | ;; |
89 | ath10kcal_extract "ART" 20480 12064 |