mediatek: update to latest kernel patchset from v4.13-rc
[openwrt/openwrt.git] / target / linux / mediatek / base-files / sbin / mtkhnat
1 #!/bin/sh
2
3 . /lib/functions.sh
4
5 config_load mtkhnat
6 config_get enable global enable 0
7
8 [ "${enable}" -eq 1 ] || {
9 echo 0 ${sch_upstream} > /sys/kernel/debug/hnat/scheduler0
10 echo 0 ${sch_downstream} > /sys/kernel/debug/hnat/scheduler1
11
12 rmmod mtkhnat
13 exit 0
14 }
15
16 insmod mtkhnat
17
18 sleep 1
19
20 config_get sch_upstream global upstream 100000
21 config_get sch_downstream global downstream 100000
22
23 echo 1 ${sch_upstream} > /sys/kernel/debug/hnat/scheduler0
24 echo 1 ${sch_downstream} > /sys/kernel/debug/hnat/scheduler1
25
26 setup_queue() {
27 local queue_id queue_scheduler queue_minebl queue_maxebl queue_minrate queue_maxrate queue_resv minrate maxrate queue_weight
28
29 config_get queue_id $1 id 0
30 config_get queue_minrate $1 minrate 0
31 config_get queue_maxrate $1 maxrate 0
32 config_get queue_resv $1 resv 22
33 config_get queue_weight $1 weight 7
34
35 [ "${queue_id}" -gt 7 ] && return 0
36
37 queue_minebl=1
38 queue_maxebl=1
39 queue_scheduler=0
40
41 [ "${queue_minrate}" -eq 0 ] && queue_minebl=0
42 [ "${queue_maxrate}" -eq 0 ] && queue_maxebl=0
43
44 minrate=$((sch_upstream * $queue_minrate))
45 minrate=$((minrate / 100))
46
47 maxrate=$((sch_upstream * $queue_maxrate))
48 maxrate=$((maxrate / 100))
49
50 echo 0 ${queue_minebl} ${minrate} ${queue_maxebl} ${maxrate} ${queue_weight} ${queue_resv} > /sys/kernel/debug/hnat/queue${queue_id}
51
52 queue_id=$((queue_id + 8))
53
54 minrate=$((sch_downstream * $queue_minrate))
55 minrate=$((minrate / 100))
56
57 maxrate=$((sch_downstream * $queue_maxrate))
58 maxrate=$((maxrate / 100))
59
60 echo 1 ${queue_minebl} ${minrate} ${queue_maxebl} ${maxrate} ${queue_weight} ${queue_resv} > /sys/kernel/debug/hnat/queue${queue_id}
61 }
62
63 config_foreach setup_scheduler scheduler
64 config_foreach setup_queue queue