OpenWrt – Diff between revs 2 and 3

Subversion Repositories:
Rev:
Only display areas with differencesIgnore whitespace
Rev 2 Rev 3
1 #!/bin/sh 1 #!/bin/sh
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
22 } 6 }
23   7  
24 ath10kcal_from_file() { 8 ath10kcal_from_file() {
25 local source=$1 9 local source=$1
26 local offset=$2 10 local offset=$2
27 local count=$3 11 local count=$3
28   12  
29 dd if=$source of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \ 13 dd if=$source of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
30 ath10kcal_die "failed to extract calibration data from $source" 14 ath10kcal_die "failed to extract calibration data from $source"
31 } 15 }
32   16  
33 ath10kcal_extract() { 17 ath10kcal_extract() {
34 local part=$1 18 local part=$1
35 local offset=$2 19 local offset=$2
36 local count=$3 20 local count=$3
37 local mtd 21 local mtd
38   22  
39 mtd=$(find_mtd_chardev $part) 23 mtd=$(find_mtd_chardev $part)
40 [ -n "$mtd" ] || \ 24 [ -n "$mtd" ] || \
41 ath10kcal_die "no mtd device found for partition $part" 25 ath10kcal_die "no mtd device found for partition $part"
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"
45 } 29 }
46   30  
47 ath10kcal_patch_mac_crc() { 31 ath10kcal_patch_mac() {
48 local mac=$1 -  
49 local mac_offset=6 -  
50 local chksum_offset=2 -  
51 local xor_mac -  
52 local xor_fw_mac -  
53 local xor_fw_chksum 32 local mac=$1
54   33  
55 [ -z "$mac" ] && return 34 [ -z "$mac" ] && return
56   -  
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   35  
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) -  
67   -  
68 printf "%b" "\x${xor_fw_chksum:0:2}\x${xor_fw_chksum:2:2}" | \ -  
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
70 } 37 }
71   38  
72 [ -e /lib/firmware/$FIRMWARE ] && exit 0 39 [ -e /lib/firmware/$FIRMWARE ] && exit 0
73   40  
74 . /lib/functions.sh 41 . /lib/functions.sh
75 . /lib/functions/system.sh 42 . /lib/functions/system.sh
76   43  
77 board=$(board_name) 44 board=$(board_name)
-   45  
78   46  
79 case "$FIRMWARE" in 47 case "$FIRMWARE" in
80 "ath10k/pre-cal-pci-0000:01:00.0.bin") 48 "ath10k/pre-cal-pci-0000:01:00.0.bin")
81 case $board in 49 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 ;; -  
86 linksys,ea8500) 50 linksys,ea8500)
-   51 hw_mac_addr=$(mtd_get_mac_ascii devinfo hw_mac_addr)
87 ath10kcal_extract "art" 4096 12064 52 ath10kcal_extract "art" 4096 12064
88 ath10kcal_patch_mac_crc $(macaddr_add $(mtd_get_mac_ascii devinfo hw_mac_addr) +1) -  
89 ;; -  
90 nec,wg2600hp) -  
91 ath10kcal_extract "ART" 4096 12064 -  
92 ath10kcal_patch_mac_crc $(macaddr_add $(mtd_get_mac_binary PRODUCTDATA 12) +1) -  
93 ;; 53 ;;
94 netgear,d7800 |\ 54 netgear,d7800 |\
95 netgear,r7500v2 |\ 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) 61 # ath10kcal_patch_mac $(macaddr_add $(mtd_get_mac_binary default-mac 8) -1)
103 ;; 62 ;;
-   63 nec,wg2600hp |\
104 tplink,vr2600v) 64 tplink,vr2600v)
105 ath10kcal_extract "ART" 4096 12064 65 ath10kcal_extract "ART" 4096 12064
106 ath10kcal_patch_mac_crc $(macaddr_add $(mtd_get_mac_binary default-mac 0) -1) -  
107 ;; 66 ;;
108 zyxel,nbg6817) 67 zyxel,nbg6817)
109 ath10kcal_extract "0:ART" 4096 12064 68 ath10kcal_extract "0:ART" 4096 12064
110 ath10kcal_patch_mac_crc $(macaddr_add $(mtd_get_mac_ascii 0:APPSBLENV ethaddr) +1) -  
111 ;; 69 ;;
112 esac 70 esac
113 ;; 71 ;;
114 "ath10k/pre-cal-pci-0001:01:00.0.bin") 72 "ath10k/pre-cal-pci-0001:01:00.0.bin")
115 case $board in 73 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 ;; -  
120 linksys,ea8500) 74 linksys,ea8500)
-   75 hw_mac_addr=$(mtd_get_mac_ascii devinfo hw_mac_addr)
121 ath10kcal_extract "art" 20480 12064 76 ath10kcal_extract "art" 20480 12064
122 ath10kcal_patch_mac_crc $(macaddr_add $(mtd_get_mac_ascii devinfo hw_mac_addr) +2) -  
123 ;; -  
124 nec,wg2600hp) -  
125 ath10kcal_extract "ART" 20480 12064 -  
126 ath10kcal_patch_mac_crc $(mtd_get_mac_binary PRODUCTDATA 12) -  
127 ;; 77 ;;
128 netgear,d7800 |\ 78 netgear,d7800 |\
129 netgear,r7500v2 |\ 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) 85 # ath10kcal_patch_mac $(macaddr_add $(mtd_get_mac_binary default-mac 8) -2)
137 ;; 86 ;;
-   87 nec,wg2600hp |\
138 tplink,vr2600v) 88 tplink,vr2600v)
139 ath10kcal_extract "ART" 20480 12064 89 ath10kcal_extract "ART" 20480 12064
140 ath10kcal_patch_mac_crc $(mtd_get_mac_binary default-mac 0) -  
141 ;; 90 ;;
142 zyxel,nbg6817) 91 zyxel,nbg6817)
143 ath10kcal_extract "0:ART" 20480 12064 92 ath10kcal_extract "0:ART" 20480 12064
144 ath10kcal_patch_mac_crc $(mtd_get_mac_ascii 0:APPSBLENV ethaddr) -  
145 ;; 93 ;;
146 esac 94 esac
147 ;; 95 ;;
148 *) 96 *)
149 exit 1 97 exit 1
150 ;; 98 ;;
151 esac 99 esac
152   100