blob: 95788a5b8728e0cda71271ae0f1cf252cb02eac7 [file] [log] [blame]
developer3abe1ad2022-01-24 11:13:32 +08001#!/bin/ash
2
developer071927d2022-08-31 20:39:29 +08003interface=$1 # phy0/phy1/ra0
4cmd_type=$2 # set/show/e2p/mac
developer3abe1ad2022-01-24 11:13:32 +08005full_cmd=$3
developer9b7cdad2022-03-10 14:24:55 +08006interface_ori=${interface}
developer3abe1ad2022-01-24 11:13:32 +08007
8work_mode="RUN" # RUN/PRINT/DEBUG
developer10946c32022-03-04 18:28:43 +08009tmp_file="/tmp/iwpriv_wrapper"
developer3abe1ad2022-01-24 11:13:32 +080010phy_idx=$(echo ${interface} | tr -dc '0-9')
11
developer3abe1ad2022-01-24 11:13:32 +080012function do_cmd() {
13 case ${work_mode} in
14 "RUN")
15 eval "$1"
16 ;;
17 "PRINT")
18 echo "$1"
19 ;;
20 "DEBUG")
21 eval "$1"
22 echo "$1"
23 ;;
24 esac
25}
26
developer9b7cdad2022-03-10 14:24:55 +080027function print_debug() {
28 if [ "${work_mode}" = "DEBUG" ]; then
29 echo "$1"
30 fi
31}
32
developer10946c32022-03-04 18:28:43 +080033function write_dmesg() {
34 echo "$1" > /dev/kmsg
35}
36
developer3abe1ad2022-01-24 11:13:32 +080037function record_config() {
38 if [ -f ${tmp_file} ]; then
39 if grep -q $1 ${tmp_file}; then
40 sed -i "/$1/c\\$1=$2" ${tmp_file}
41 else
42 echo "$1=$2" >> ${tmp_file}
43 fi
44 else
45 echo "$1=$2" >> ${tmp_file}
46 fi
47}
48
49function get_config() {
developer10946c32022-03-04 18:28:43 +080050 if [ ! -f ${tmp_file} ]; then
51 echo ""
52 return
53 fi
54
55 if grep -q $1 ${tmp_file}; then
56 echo "$(cat ${tmp_file} | grep $1 | sed s/=/' '/g | cut -d " " -f 2)"
57 else
58 echo ""
59 fi
developer3abe1ad2022-01-24 11:13:32 +080060}
61
developereebce5c2022-08-26 19:05:56 +080062function convert_interface {
63 local start_idx_7986=$(get_config "STARTIDX")
64 if [ -z "${start_idx_7986}" ]; then
65 local tmp=$(lspci | grep "7906")
66 if [ ! -z "${tmp}" ]; then
67 start_idx_7986="2"
68 else
69 local tmp=$(lspci | grep "7915\|7916")
70 if [ ! -z "${tmp}" ]; then
71 start_idx_7986="1"
72 else
73 start_idx_7986="0"
74 fi
75 fi
76 record_config "STARTIDX" ${start_idx_7986}
77 fi
78
79 if [[ $1 == "raix"* ]]; then
80 interface="phy1"
81 phy_idx=1
82 elif [[ $1 == "rai"* ]]; then
83 interface="phy0"
84 phy_idx=0
85 elif [[ $1 == "rax"* ]]; then
86 phy_idx=$((start_idx_7986+1))
87 interface="phy${phy_idx}"
88 else
89 phy_idx=$start_idx_7986
90 interface="phy${phy_idx}"
91 fi
92}
93
developer3abe1ad2022-01-24 11:13:32 +080094function simple_convert() {
95 if [ "$1" = "ATETXCNT" ]; then
96 echo "tx_count"
97 elif [ "$1" = "ATETXLEN" ]; then
98 echo "tx_length"
99 elif [ "$1" = "ATETXMCS" ]; then
100 echo "tx_rate_idx"
101 elif [ "$1" = "ATEVHTNSS" ]; then
102 echo "tx_rate_nss"
103 elif [ "$1" = "ATETXLDPC" ]; then
104 echo "tx_rate_ldpc"
105 elif [ "$1" = "ATETXSTBC" ]; then
106 echo "tx_rate_stbc"
107 elif [ "$1" = "ATEPKTTXTIME" ]; then
108 echo "tx_time"
109 elif [ "$1" = "ATEIPG" ]; then
110 echo "tx_ipg"
111 elif [ "$1" = "ATEDUTYCYCLE" ]; then
112 echo "tx_duty_cycle"
113 elif [ "$1" = "ATETXFREQOFFSET" ]; then
114 echo "freq_offset"
115 else
developer9b7cdad2022-03-10 14:24:55 +0800116 echo "unknown param: $1"
developer3abe1ad2022-01-24 11:13:32 +0800117 fi
118}
119
120function convert_tx_mode() {
121 if [ "$1" = "0" ]; then
122 echo "cck"
123 elif [ "$1" = "1" ]; then
124 echo "ofdm"
125 elif [ "$1" = "2" ]; then
126 echo "ht"
127 elif [ "$1" = "4" ]; then
128 echo "vht"
129 elif [ "$1" = "8" ]; then
130 echo "he_su"
131 elif [ "$1" = "9" ]; then
132 echo "he_er"
133 elif [ "$1" = "10" ]; then
134 echo "he_tb"
135 elif [ "$1" = "11" ]; then
136 echo "he_mu"
137 else
developer9b7cdad2022-03-10 14:24:55 +0800138 echo "unknown tx mode: $1"
developer3abe1ad2022-01-24 11:13:32 +0800139 fi
140}
141
142function convert_gi {
143 local tx_mode=$1
144 local val=$2
145 local sgi="0"
146 local he_ltf="0"
147
148 case ${tx_mode} in
149 "ht"|"vht")
150 sgi=${val}
151 ;;
152 "he_su"|"he_er")
153 case ${val} in
154 "0")
155 ;;
156 "1")
157 he_ltf="1"
158 ;;
159 "2")
160 sgi="1"
161 he_ltf="1"
162 ;;
163 "3")
164 sgi="2"
165 he_ltf="2"
166 ;;
167 "4")
168 he_ltf="2"
169 ;;
170 *)
171 echo "unknown gi"
172 esac
173 ;;
174 "he_mu")
175 case ${val} in
176 "0")
177 he_ltf="2"
178 ;;
179 "1")
180 he_ltf="1"
181 ;;
182 "2")
183 sgi="1"
184 he_ltf="1"
185 ;;
186 "3")
187 sgi="2"
188 he_ltf="2"
189 ;;
190 *)
191 echo "unknown gi"
192 esac
193 ;;
194 "he_tb")
195 case ${val} in
196 "0")
197 sgi="1"
198 ;;
199 "1")
200 sgi="1"
201 he_ltf="1"
202 ;;
203 "2")
204 sgi="2"
205 he_ltf="2"
206 ;;
207 *)
208 echo "unknown gi"
209 esac
210 ;;
211 *)
developer9b7cdad2022-03-10 14:24:55 +0800212 print_debug "legacy mode no need gi"
developer3abe1ad2022-01-24 11:13:32 +0800213 esac
214
215 do_cmd "mt76-test ${interface} set tx_rate_sgi=${sgi} tx_ltf=${he_ltf}"
216}
217
218function convert_channel {
219 local band=$(echo $1 | sed s/:/' '/g | cut -d " " -f 2)
220 local ch=$(echo $1 | sed s/:/' '/g | cut -d " " -f 1)
221 local bw=$(get_config "ATETXBW" | cut -d ":" -f 1)
developer10946c32022-03-04 18:28:43 +0800222 local bw_str="HT20"
developereebce5c2022-08-26 19:05:56 +0800223 local base_chan=1
224 local control_freq=0
225 local base_freq=0
developer3abe1ad2022-01-24 11:13:32 +0800226
developer9b7cdad2022-03-10 14:24:55 +0800227 if [[ $1 != *":"* ]] || [ "${band}" = "0" ]; then
developer3abe1ad2022-01-24 11:13:32 +0800228 case ${bw} in
229 "1")
developer461cb542022-04-29 18:17:44 +0800230 if [ "${ch}" -lt "3" ] || [ "${ch}" -gt "12" ]; then
231 local bw_str="HT20"
developer3abe1ad2022-01-24 11:13:32 +0800232 else
developer461cb542022-04-29 18:17:44 +0800233 local bw_str="HT40+"
234 ch=$(expr ${ch} - "2")
developer3abe1ad2022-01-24 11:13:32 +0800235 fi
236 ;;
developer3abe1ad2022-01-24 11:13:32 +0800237 esac
developereebce5c2022-08-26 19:05:56 +0800238 local base_freq=2412
developera6267142022-01-26 20:50:22 +0800239 elif [ "${band}" = "1" ]; then
developer3abe1ad2022-01-24 11:13:32 +0800240 case ${bw} in
developera6267142022-01-26 20:50:22 +0800241 "5")
developer10946c32022-03-04 18:28:43 +0800242 bw_str="160MHz"
243 if [ ${ch} -lt "68" ]; then
244 ch="36"
245 elif [ ${ch} -lt "100" ]; then
246 ch="68"
247 elif [ ${ch} -lt "132" ]; then
248 ch="100"
249 elif [ ${ch} -lt "181" ]; then
250 ch="149"
251 fi
developera6267142022-01-26 20:50:22 +0800252 ;;
developer3abe1ad2022-01-24 11:13:32 +0800253 "2")
developer10946c32022-03-04 18:28:43 +0800254 bw_str="80MHz"
255 if [ ${ch} -lt "52" ]; then
256 ch="36"
257 elif [ ${ch} -lt "68" ]; then
258 ch="52"
259 elif [ ${ch} -lt "84" ]; then
260 ch="68"
261 elif [ ${ch} -lt "100" ]; then
262 ch="84"
263 elif [ ${ch} -lt "116" ]; then
264 ch="100"
265 elif [ ${ch} -lt "132" ]; then
266 ch="116"
267 elif [ ${ch} -lt "149" ]; then
268 ch="132"
269 elif [ ${ch} -lt "165" ]; then
270 ch="149"
271 elif [ ${ch} -lt "181" ]; then
272 ch="165"
273 fi
developer3abe1ad2022-01-24 11:13:32 +0800274 ;;
275 "1")
developer10946c32022-03-04 18:28:43 +0800276 if [ ${ch} -lt "44" ]; then
277 ch=$([ "${ch}" -lt "40" ] && echo "36" || echo "40")
278 bw_str=$([ "${ch}" -le "38" ] && echo "HT40+" || echo "HT40-")
279 elif [ ${ch} -lt "52" ]; then
280 ch=$([ "${ch}" -lt "48" ] && echo "44" || echo "48")
281 bw_str=$([ "${ch}" -le "46" ] && echo "HT40+" || echo "HT40-")
282 elif [ ${ch} -lt "60" ]; then
283 ch=$([ "${ch}" -lt "56" ] && echo "52" || echo "56")
284 bw_str=$([ "${ch}" -le "54" ] && echo "HT40+" || echo "HT40-")
285 elif [ ${ch} -lt "68" ]; then
286 ch=$([ "${ch}" -lt "64" ] && echo "60" || echo "64")
287 bw_str=$([ "${ch}" -le "62" ] && echo "HT40+" || echo "HT40-")
288 elif [ ${ch} -lt "76" ]; then
289 ch=$([ "${ch}" -lt "72" ] && echo "68" || echo "72")
290 bw_str=$([ "${ch}" -le "70" ] && echo "HT40+" || echo "HT40-")
291 elif [ ${ch} -lt "84" ]; then
292 ch=$([ "${ch}" -lt "80" ] && echo "76" || echo "80")
293 bw_str=$([ "${ch}" -le "78" ] && echo "HT40+" || echo "HT40-")
294 elif [ ${ch} -lt "92" ]; then
295 ch=$([ "${ch}" -lt "88" ] && echo "84" || echo "88")
296 bw_str=$([ "${ch}" -le "86" ] && echo "HT40+" || echo "HT40-")
297 elif [ ${ch} -lt "100" ]; then
298 ch=$([ "${ch}" -lt "96" ] && echo "92" || echo "96")
299 bw_str=$([ "${ch}" -le "94" ] && echo "HT40+" || echo "HT40-")
300 elif [ ${ch} -lt "108" ]; then
301 ch=$([ "${ch}" -lt "104" ] && echo "100" || echo "104")
302 bw_str=$([ "${ch}" -le "102" ] && echo "HT40+" || echo "HT40-")
303 elif [ ${ch} -lt "116" ]; then
304 ch=$([ "${ch}" -lt "112" ] && echo "108" || echo "112")
305 bw_str=$([ "${ch}" -le "110" ] && echo "HT40+" || echo "HT40-")
306 elif [ ${ch} -lt "124" ]; then
307 ch=$([ "${ch}" -lt "120" ] && echo "116" || echo "120")
308 bw_str=$([ "${ch}" -le "118" ] && echo "HT40+" || echo "HT40-")
309 elif [ ${ch} -lt "132" ]; then
310 ch=$([ "${ch}" -lt "128" ] && echo "124" || echo "128")
311 bw_str=$([ "${ch}" -le "126" ] && echo "HT40+" || echo "HT40-")
312 elif [ ${ch} -lt "140" ]; then
313 ch=$([ "${ch}" -lt "136" ] && echo "132" || echo "136")
314 bw_str=$([ "${ch}" -le "134" ] && echo "HT40+" || echo "HT40-")
315 elif [ ${ch} -lt "149" ]; then
316 ch=$([ "${ch}" -lt "144" ] && echo "140" || echo "144")
317 bw_str=$([ "${ch}" -le "142" ] && echo "HT40+" || echo "HT40-")
318 elif [ ${ch} -lt "157" ]; then
319 ch=$([ "${ch}" -lt "153" ] && echo "149" || echo "153")
320 bw_str=$([ "${ch}" -le "151" ] && echo "HT40+" || echo "HT40-")
321 elif [ ${ch} -lt "165" ]; then
322 ch=$([ "${ch}" -lt "161" ] && echo "157" || echo "161")
323 bw_str=$([ "${ch}" -le "159" ] && echo "HT40+" || echo "HT40-")
324 elif [ ${ch} -lt "173" ]; then
325 ch=$([ "${ch}" -lt "169" ] && echo "165" || echo "169")
326 bw_str=$([ "${ch}" -le "167" ] && echo "HT40+" || echo "HT40-")
327 elif [ ${ch} -lt "181" ]; then
328 ch=$([ "${ch}" -lt "177" ] && echo "173" || echo "177")
329 bw_str=$([ "${ch}" -le "175" ] && echo "HT40+" || echo "HT40-")
developer3abe1ad2022-01-24 11:13:32 +0800330 fi
331 ;;
332 "0")
333 local bw_str="HT20"
334 ;;
335 esac
developereebce5c2022-08-26 19:05:56 +0800336 local base_freq=5180
337 local base_chan=36
developera6267142022-01-26 20:50:22 +0800338 else
developereebce5c2022-08-26 19:05:56 +0800339 case ${bw} in
340 "5")
341 bw_str="160MHz"
342 if [ ${ch} -lt "33" ]; then
343 ch="1"
344 elif [ ${ch} -lt "65" ]; then
345 ch="33"
346 elif [ ${ch} -lt "97" ]; then
347 ch="65"
348 elif [ ${ch} -lt "129" ]; then
349 ch="97"
350 elif [ ${ch} -lt "161" ]; then
351 ch="129"
352 elif [ ${ch} -lt "193" ]; then
353 ch="161"
354 elif [ ${ch} -lt "225" ]; then
355 ch="193"
356 fi
357 ;;
358 "2")
359 bw_str="80MHz"
360 if [ ${ch} -lt "17" ]; then
361 ch="1"
362 elif [ ${ch} -lt "33" ]; then
363 ch="17"
364 elif [ ${ch} -lt "49" ]; then
365 ch="33"
366 elif [ ${ch} -lt "65" ]; then
367 ch="49"
368 elif [ ${ch} -lt "81" ]; then
369 ch="65"
370 elif [ ${ch} -lt "97" ]; then
371 ch="81"
372 elif [ ${ch} -lt "113" ]; then
373 ch="97"
374 elif [ ${ch} -lt "129" ]; then
375 ch="113"
376 elif [ ${ch} -lt "145" ]; then
377 ch="129"
378 elif [ ${ch} -lt "161" ]; then
379 ch="145"
380 elif [ ${ch} -lt "177" ]; then
381 ch="161"
382 elif [ ${ch} -lt "193" ]; then
383 ch="177"
384 elif [ ${ch} -lt "209" ]; then
385 ch="193"
386 elif [ ${ch} -lt "225" ]; then
387 ch="209"
388 fi
389 ;;
390 "1")
391 if [ ${ch} -lt "9" ]; then
392 ch=$([ "${ch}" -lt "5" ] && echo "1" || echo "5")
393 bw_str=$([ "${ch}" -le "3" ] && echo "HT40+" || echo "HT40-")
394 elif [ ${ch} -lt "17" ]; then
395 ch=$([ "${ch}" -lt "13" ] && echo "9" || echo "13")
396 bw_str=$([ "${ch}" -le "11" ] && echo "HT40+" || echo "HT40-")
397 elif [ ${ch} -lt "25" ]; then
398 ch=$([ "${ch}" -lt "21" ] && echo "17" || echo "21")
399 bw_str=$([ "${ch}" -le "19" ] && echo "HT40+" || echo "HT40-")
400 elif [ ${ch} -lt "33" ]; then
401 ch=$([ "${ch}" -lt "29" ] && echo "25" || echo "29")
402 bw_str=$([ "${ch}" -le "27" ] && echo "HT40+" || echo "HT40-")
403 elif [ ${ch} -lt "33" ]; then
404 ch=$([ "${ch}" -lt "29" ] && echo "25" || echo "29")
405 bw_str=$([ "${ch}" -le "27" ] && echo "HT40+" || echo "HT40-")
406 elif [ ${ch} -lt "41" ]; then
407 ch=$([ "${ch}" -lt "37" ] && echo "33" || echo "37")
408 bw_str=$([ "${ch}" -le "35" ] && echo "HT40+" || echo "HT40-")
409 elif [ ${ch} -lt "49" ]; then
410 ch=$([ "${ch}" -lt "45" ] && echo "41" || echo "45")
411 bw_str=$([ "${ch}" -le "43" ] && echo "HT40+" || echo "HT40-")
412 elif [ ${ch} -lt "57" ]; then
413 ch=$([ "${ch}" -lt "53" ] && echo "49" || echo "53")
414 bw_str=$([ "${ch}" -le "51" ] && echo "HT40+" || echo "HT40-")
415 elif [ ${ch} -lt "65" ]; then
416 ch=$([ "${ch}" -lt "61" ] && echo "57" || echo "61")
417 bw_str=$([ "${ch}" -le "59" ] && echo "HT40+" || echo "HT40-")
418 elif [ ${ch} -lt "73" ]; then
419 ch=$([ "${ch}" -lt "69" ] && echo "65" || echo "69")
420 bw_str=$([ "${ch}" -le "67" ] && echo "HT40+" || echo "HT40-")
421 elif [ ${ch} -lt "81" ]; then
422 ch=$([ "${ch}" -lt "77" ] && echo "73" || echo "77")
423 bw_str=$([ "${ch}" -le "75" ] && echo "HT40+" || echo "HT40-")
424 elif [ ${ch} -lt "89" ]; then
425 ch=$([ "${ch}" -lt "85" ] && echo "81" || echo "85")
426 bw_str=$([ "${ch}" -le "83" ] && echo "HT40+" || echo "HT40-")
427 elif [ ${ch} -lt "97" ]; then
428 ch=$([ "${ch}" -lt "93" ] && echo "89" || echo "93")
429 bw_str=$([ "${ch}" -le "91" ] && echo "HT40+" || echo "HT40-")
430 elif [ ${ch} -lt "105" ]; then
431 ch=$([ "${ch}" -lt "101" ] && echo "97" || echo "101")
432 bw_str=$([ "${ch}" -le "99" ] && echo "HT40+" || echo "HT40-")
433 elif [ ${ch} -lt "113" ]; then
434 ch=$([ "${ch}" -lt "109" ] && echo "105" || echo "109")
435 bw_str=$([ "${ch}" -le "107" ] && echo "HT40+" || echo "HT40-")
436 elif [ ${ch} -lt "121" ]; then
437 ch=$([ "${ch}" -lt "117" ] && echo "113" || echo "117")
438 bw_str=$([ "${ch}" -le "115" ] && echo "HT40+" || echo "HT40-")
439 elif [ ${ch} -lt "129" ]; then
440 ch=$([ "${ch}" -lt "125" ] && echo "121" || echo "125")
441 bw_str=$([ "${ch}" -le "123" ] && echo "HT40+" || echo "HT40-")
442 elif [ ${ch} -lt "137" ]; then
443 ch=$([ "${ch}" -lt "133" ] && echo "129" || echo "133")
444 bw_str=$([ "${ch}" -le "131" ] && echo "HT40+" || echo "HT40-")
445 elif [ ${ch} -lt "145" ]; then
446 ch=$([ "${ch}" -lt "141" ] && echo "137" || echo "141")
447 bw_str=$([ "${ch}" -le "139" ] && echo "HT40+" || echo "HT40-")
448 elif [ ${ch} -lt "153" ]; then
449 ch=$([ "${ch}" -lt "149" ] && echo "145" || echo "149")
450 bw_str=$([ "${ch}" -le "147" ] && echo "HT40+" || echo "HT40-")
451 elif [ ${ch} -lt "161" ]; then
452 ch=$([ "${ch}" -lt "157" ] && echo "153" || echo "157")
453 bw_str=$([ "${ch}" -le "155" ] && echo "HT40+" || echo "HT40-")
454 elif [ ${ch} -lt "169" ]; then
455 ch=$([ "${ch}" -lt "165" ] && echo "161" || echo "165")
456 bw_str=$([ "${ch}" -le "163" ] && echo "HT40+" || echo "HT40-")
457 elif [ ${ch} -lt "177" ]; then
458 ch=$([ "${ch}" -lt "173" ] && echo "169" || echo "173")
459 bw_str=$([ "${ch}" -le "171" ] && echo "HT40+" || echo "HT40-")
460 elif [ ${ch} -lt "185" ]; then
461 ch=$([ "${ch}" -lt "181" ] && echo "177" || echo "181")
462 bw_str=$([ "${ch}" -le "179" ] && echo "HT40+" || echo "HT40-")
463 elif [ ${ch} -lt "193" ]; then
464 ch=$([ "${ch}" -lt "189" ] && echo "185" || echo "189")
465 bw_str=$([ "${ch}" -le "187" ] && echo "HT40+" || echo "HT40-")
466 elif [ ${ch} -lt "201" ]; then
467 ch=$([ "${ch}" -lt "197" ] && echo "193" || echo "197")
468 bw_str=$([ "${ch}" -le "195" ] && echo "HT40+" || echo "HT40-")
469 elif [ ${ch} -lt "209" ]; then
470 ch=$([ "${ch}" -lt "205" ] && echo "201" || echo "205")
471 bw_str=$([ "${ch}" -le "203" ] && echo "HT40+" || echo "HT40-")
472 elif [ ${ch} -lt "217" ]; then
473 ch=$([ "${ch}" -lt "213" ] && echo "209" || echo "213")
474 bw_str=$([ "${ch}" -le "211" ] && echo "HT40+" || echo "HT40-")
475 elif [ ${ch} -lt "225" ]; then
476 ch=$([ "${ch}" -lt "221" ] && echo "217" || echo "221")
477 bw_str=$([ "${ch}" -le "219" ] && echo "HT40+" || echo "HT40-")
478 elif [ ${ch} -lt "233" ]; then
479 ch=$([ "${ch}" -lt "229" ] && echo "225" || echo "229")
480 bw_str=$([ "${ch}" -le "227" ] && echo "HT40+" || echo "HT40-")
481 fi
482 ;;
483 "0")
484 local bw_str="HT20"
485 ;;
486 esac
487 local base_freq=5955
developer3abe1ad2022-01-24 11:13:32 +0800488 fi
489
developereebce5c2022-08-26 19:05:56 +0800490 local control_freq=$(((ch - base_chan) * 5 + base_freq))
491 do_cmd "iw dev mon${phy_idx} set freq ${control_freq} ${bw_str}"
developer3abe1ad2022-01-24 11:13:32 +0800492}
493
developer10946c32022-03-04 18:28:43 +0800494function convert_rxstat {
495 local res=$(do_cmd "mt76-test ${interface} dump stats")
496 local mdrdy=$(echo "${res}" | grep "rx_packets" | cut -d "=" -f 2)
497 local fcs_error=$(echo "${res}" | grep "rx_fcs_error" | cut -d "=" -f 2)
498 local rcpi=$(echo "${res}" | grep "last_rcpi" | cut -d "=" -f 2 | sed 's/,/ /g')
499 local ib_rssi=$(echo "${res}" | grep "last_ib_rssi" | cut -d "=" -f 2 | sed 's/,/ /g')
500 local wb_rssi=$(echo "${res}" | grep "last_wb_rssi" | cut -d "=" -f 2 | sed 's/,/ /g')
501 local rx_ok=$(expr ${mdrdy} - ${fcs_error})
502
developer461cb542022-04-29 18:17:44 +0800503 write_dmesg "rcpi: ${rcpi}"
504 write_dmesg "fagc rssi ib: ${ib_rssi}"
505 write_dmesg "fagc rssi wb: ${wb_rssi}"
506 write_dmesg "all_mac_rx_mdrdy_cnt: ${mdrdy}"
507 write_dmesg "all_mac_rx_fcs_err_cnt: ${fcs_error}"
developer9b7cdad2022-03-10 14:24:55 +0800508 write_dmesg "all_mac_rx_ok_cnt : ${rx_ok}"
developer10946c32022-03-04 18:28:43 +0800509}
510
511function change_band_idx {
512 local old_idx=$(get_config "ATECTRLBANDIDX")
513 local new_idx=$1
514
515 if [ -z "${old_idx}" ] && [ "${new_idx}" == "0" ]; then
516 return
517 fi
518
519 if [ "${old_idx}" != "${new_idx}" ]; then
520 if [ -z "${old_idx}" ]; then
521 old_idx=0
522 fi
523
524 interface="phy${old_idx}"
525 phy_idx=${old_idx}
526 do_ate_work "ATESTOP"
527
528 interface="phy${new_idx}"
529 phy_idx=${new_idx}
530 do_ate_work "ATESTART"
531
532 record_config "ATECTRLBANDIDX" ${new_idx}
533 fi
534}
535
536function set_mac_addr {
537 record_config ${cmd} ${param}
538
539 local addr1=$(get_config "ATEDA")
540 local addr2=$(get_config "ATESA")
541 local addr3=$(get_config "ATEBSSID")
542
543 if [ -z "${addr1}" ]; then
544 addr1="00:11:22:33:44:55"
545 fi
546 if [ -z "${addr2}" ]; then
547 addr2="00:11:22:33:44:55"
548 fi
549 if [ -z "${addr3}" ]; then
550 addr3="00:11:22:33:44:55"
551 fi
552
553 do_cmd "mt76-test phy${phy_idx} set mac_addrs=${addr1},${addr2},${addr3}"
554}
555
developera6267142022-01-26 20:50:22 +0800556function do_ate_work() {
557 local ate_cmd=$1
558
559 case ${ate_cmd} in
560 "ATESTART")
561 local if_str=$(ifconfig | grep mon${phy_idx})
562
563 if [ ! -z "${if_str}" -a "${if_str}" != " " ]; then
564 echo "ATE already starts."
565 else
566 do_cmd "iw phy ${interface} interface add mon${phy_idx} type monitor"
567 do_cmd "iw dev wlan${phy_idx} del"
568 do_cmd "ifconfig mon${phy_idx} up"
developer9b7cdad2022-03-10 14:24:55 +0800569 do_cmd "iw reg set VV"
developera6267142022-01-26 20:50:22 +0800570 fi
571 ;;
572 "ATESTOP")
573 local if_str=$(ifconfig | grep mon${phy_idx})
574
575 if [ -z "${if_str}" -a "${if_str}" != " " ]; then
576 echo "ATE does not start."
577 else
578 do_cmd "mt76-test ${interface} set state=off"
579 do_cmd "iw dev mon${phy_idx} del"
580 do_cmd "iw phy ${interface} interface add wlan${phy_idx} type managed"
developer461cb542022-04-29 18:17:44 +0800581 do_cmd "mt76-test ${interface} set aid=0"
developera6267142022-01-26 20:50:22 +0800582 fi
developer10946c32022-03-04 18:28:43 +0800583
584 rm ${tmp_file} > /dev/null 2>&1
developera6267142022-01-26 20:50:22 +0800585 ;;
developer461cb542022-04-29 18:17:44 +0800586 "TXCOMMIT")
587 do_cmd "mt76-test ${interface} set aid=1"
588 ;;
developera6267142022-01-26 20:50:22 +0800589 "TXFRAME")
590 do_cmd "mt76-test ${interface} set state=tx_frames"
591 ;;
developer9b7cdad2022-03-10 14:24:55 +0800592 "TXSTOP"|"RXSTOP")
developera6267142022-01-26 20:50:22 +0800593 do_cmd "mt76-test ${interface} set state=idle"
594 ;;
developer461cb542022-04-29 18:17:44 +0800595 "TXREVERT")
596 do_cmd "mt76-test ${interface} set aid=0"
597 ;;
developera6267142022-01-26 20:50:22 +0800598 "RXFRAME")
599 do_cmd "mt76-test ${interface} set state=rx_frames"
600 ;;
601 "TXCONT")
602 do_cmd "mt76-test ${interface} set state=tx_cont"
603 ;;
developer071927d2022-08-31 20:39:29 +0800604 "GROUPREK")
605 do_cmd "mt76-test ${interface} set state=group_prek"
606 do_cmd "atenl -i ${interface} -c \"eeprom precal sync group\""
607 ;;
608 "GROUPREKDump")
609 do_cmd "mt76-test ${interface} set state=group_prek_dump"
610 ;;
611 "GROUPREKClean")
612 do_cmd "mt76-test ${interface} set state=group_prek_clean"
613 do_cmd "atenl -i ${interface} -c \"eeprom precal group clean\""
614 ;;
615 "DPD2G")
616 do_cmd "mt76-test ${interface} set state=dpd_2g"
617 do_cmd "atenl -i ${interface} -c \"eeprom precal sync dpd 2g\""
618 ;;
619 "DPD5G")
620 do_cmd "mt76-test ${interface} set state=dpd_5g"
621 do_cmd "atenl -i ${interface} -c \"eeprom precal sync dpd 5g\""
622 ;;
623 "DPD6G")
624 do_cmd "mt76-test ${interface} set state=dpd_6g"
625 do_cmd "atenl -i ${interface} -c \"eeprom precal sync dpd 6g\""
626 ;;
627 "DPDDump")
628 do_cmd "mt76-test ${interface} set state=dpd_dump"
629 ;;
630 "DPDClean")
631 do_cmd "mt76-test ${interface} set state=dpd_clean"
632 do_cmd "atenl -i ${interface} -c \"eeprom precal dpd clean\""
633 ;;
developer9b7cdad2022-03-10 14:24:55 +0800634 *)
developer9b7cdad2022-03-10 14:24:55 +0800635 print_debug "skip ${ate_cmd}"
developera6267142022-01-26 20:50:22 +0800636 ;;
637 esac
638}
639
developer10946c32022-03-04 18:28:43 +0800640# main start here
641
642if [[ ${interface} == "ra"* ]]; then
developereebce5c2022-08-26 19:05:56 +0800643 convert_interface $interface
developer10946c32022-03-04 18:28:43 +0800644fi
645
646cmd=$(echo ${full_cmd} | sed s/=/' '/g | cut -d " " -f 1)
647param=$(echo ${full_cmd} | sed s/=/' '/g | cut -d " " -f 2)
648
developer3abe1ad2022-01-24 11:13:32 +0800649if [ "${cmd_type}" = "set" ]; then
650 skip=0
developer3abe1ad2022-01-24 11:13:32 +0800651 case ${cmd} in
652 "ATE")
653 do_ate_work ${param}
654
655 skip=1
656 ;;
657 "ATETXCNT"|"ATETXLEN"|"ATETXMCS"|"ATEVHTNSS"|"ATETXLDPC"|"ATETXSTBC"| \
658 "ATEPKTTXTIME"|"ATEIPG"|"ATEDUTYCYCLE"|"ATETXFREQOFFSET")
659 cmd_new=$(simple_convert ${cmd})
660 param_new=${param}
661 ;;
662 "ATETXANT"|"ATERXANT")
663 cmd_new="tx_antenna"
664 param_new=${param}
665 ;;
666 "ATETXGI")
667 tx_mode=$(convert_tx_mode $(get_config "ATETXMODE"))
668 convert_gi ${tx_mode} ${param}
669 skip=1
670 ;;
671 "ATETXMODE")
672 cmd_new="tx_rate_mode"
673 param_new=$(convert_tx_mode ${param})
674 record_config ${cmd} ${param}
675 ;;
676 "ATETXPOW0"|"ATETXPOW1"|"ATETXPOW2"|"ATETXPOW3")
677 cmd_new="tx_power"
678 param_new="${param},0,0,0"
679 ;;
680 "ATETXBW")
681 record_config ${cmd} ${param}
682 skip=1
683 ;;
684 "ATECHANNEL")
685 convert_channel ${param}
686 skip=1
687 ;;
developer10946c32022-03-04 18:28:43 +0800688 "ATERXSTAT")
689 convert_rxstat
690 skip=1
691 ;;
developer3abe1ad2022-01-24 11:13:32 +0800692 "ATECTRLBANDIDX")
developer10946c32022-03-04 18:28:43 +0800693 change_band_idx ${param}
developer3abe1ad2022-01-24 11:13:32 +0800694 skip=1
695 ;;
developer10946c32022-03-04 18:28:43 +0800696 "ATEDA"|"ATESA"|"ATEBSSID")
697 set_mac_addr ${cmd} ${param}
698 skip=1
699 ;;
developer3abe1ad2022-01-24 11:13:32 +0800700 "bufferMode")
701 if [ "${param}" = "2" ]; then
developer461cb542022-04-29 18:17:44 +0800702 do_cmd "atenl -i ${interface} -c \"eeprom update buffermode\""
developer3abe1ad2022-01-24 11:13:32 +0800703 fi
704 skip=1
705 ;;
developera6267142022-01-26 20:50:22 +0800706 "ResetCounter"|"ATERXSTATRESET")
707 skip=1
708 ;;
developer3abe1ad2022-01-24 11:13:32 +0800709 *)
developer9b7cdad2022-03-10 14:24:55 +0800710 print_debug "Unknown command to set: ${cmd}"
developer3abe1ad2022-01-24 11:13:32 +0800711 skip=1
712 esac
713
714 if [ "${skip}" != "1" ]; then
715 do_cmd "mt76-test ${interface} set ${cmd_new}=${param_new}"
716 fi
developer10946c32022-03-04 18:28:43 +0800717
developer3abe1ad2022-01-24 11:13:32 +0800718elif [ "${cmd_type}" = "show" ]; then
719 do_cmd "mt76-test ${interface} dump"
720 do_cmd "mt76-test ${interface} dump stats"
developer10946c32022-03-04 18:28:43 +0800721
developer3abe1ad2022-01-24 11:13:32 +0800722elif [ "${cmd_type}" = "e2p" ]; then
developera6267142022-01-26 20:50:22 +0800723 offset=$(printf "0x%s" ${cmd})
724 val=$(printf "0x%s" ${param})
725
726 # eeprom offset write
727 if [[ ${full_cmd} == *"="* ]]; then
728 tmp=$((${val} & 0xff))
729 tmp=$(printf "0x%x" ${tmp})
developer461cb542022-04-29 18:17:44 +0800730 do_cmd "atenl -i ${interface} -c \"eeprom set ${offset}=${tmp}\""
developera6267142022-01-26 20:50:22 +0800731
732 offset=$((${offset}))
733 offset=$(expr ${offset} + "1")
734 offset=$(printf "0x%x" ${offset})
735 tmp=$(((${val} >> 8) & 0xff))
736 tmp=$(printf "0x%x" ${tmp})
developer461cb542022-04-29 18:17:44 +0800737 do_cmd "atenl -i ${interface} -c \"eeprom set ${offset}=${tmp}\""
developera6267142022-01-26 20:50:22 +0800738 else
developer461cb542022-04-29 18:17:44 +0800739 v1=$(do_cmd "atenl -i ${interface} -c \"eeprom read ${param}\"")
developera6267142022-01-26 20:50:22 +0800740 v1=$(echo "${v1}" | grep "val =" | cut -d '(' -f 2 | grep -o -E '[0-9]+')
developer3abe1ad2022-01-24 11:13:32 +0800741
developera6267142022-01-26 20:50:22 +0800742 tmp=$(printf "0x%s" ${param})
743 tmp=$((${tmp}))
744 param2=$(expr ${tmp} + "1")
745 param2=$(printf "%x" ${param2})
developer461cb542022-04-29 18:17:44 +0800746 v2=$(do_cmd "atenl -i ${interface} -c \"eeprom read ${param2}\"")
developera6267142022-01-26 20:50:22 +0800747 v2=$(echo "${v2}" | grep "val =" | cut -d '(' -f 2 | grep -o -E '[0-9]+')
748
749 param=$(printf "0x%s" ${param})
developer461cb542022-04-29 18:17:44 +0800750 param=$(printf "%04x" ${param})
751 param=$(echo $param | tr 'a-z' 'A-Z')
developer9b7cdad2022-03-10 14:24:55 +0800752 printf "%s e2p:\n" ${interface_ori}
developer461cb542022-04-29 18:17:44 +0800753 printf "[0x%s]:0x%02x%02x\n" ${param} ${v2} ${v1}
developera6267142022-01-26 20:50:22 +0800754 fi
developer10946c32022-03-04 18:28:43 +0800755
developera6267142022-01-26 20:50:22 +0800756elif [ "${cmd_type}" = "mac" ]; then
757 regidx=/sys/kernel/debug/ieee80211/phy${phy_idx}/mt76/regidx
758 regval=/sys/kernel/debug/ieee80211/phy${phy_idx}/mt76/regval
759 offset=$(printf "0x%s" ${cmd})
760 val=$(printf "0x%s" ${param})
761
762 echo ${offset} > ${regidx}
763 # reg write
764 if [[ ${full_cmd} == *"="* ]]; then
765 echo ${val} > ${regval}
developera6267142022-01-26 20:50:22 +0800766 fi
developer10946c32022-03-04 18:28:43 +0800767
developer461cb542022-04-29 18:17:44 +0800768 res=$(cat ${regval} | cut -d 'x' -f 2)
769 printf "%s mac:[%s]:%s\n" ${interface_ori} ${offset} ${res}
770
developer3abe1ad2022-01-24 11:13:32 +0800771else
772 echo "Unknown command"
773fi