realtek: move port filtering out of uci_set_poe()
[openwrt/staging/robimarko.git] / target / linux / realtek / base-files / etc / board.d / 02_network
1
2 . /lib/functions.sh
3 . /lib/functions/uci-defaults.sh
4 . /lib/functions/system.sh
5
6 ucidef_set_poe() {
7 json_select_object poe
8 json_add_string "budget" "$1"
9 json_select_array ports
10 for port in $2; do
11 json_add_string "" "$port"
12 done
13 json_select ..
14 json_select ..
15 }
16
17 _filter_port_list_ordered() {
18 local ports="$1"
19 local excluded="$2"
20 local sort_opts="$3"
21 echo $ports $excluded | xargs -n1 basename | sort -V $sort_opts | uniq -u | xargs
22 }
23
24 filter_port_list() {
25 _filter_port_list_ordered "$1" "$2"
26 }
27
28 filter_port_list_reverse() {
29 _filter_port_list_ordered "$1" "$2" "-r"
30 }
31
32 board=$(board_name)
33 board_config_update
34
35 lan_list=$(ls -1 -v -d /sys/class/net/lan* | xargs -n1 basename | xargs)
36
37 ucidef_set_bridge_device switch
38 ucidef_set_interface_lan "$lan_list"
39
40 lan_mac=""
41 lan_mac_start=""
42 lan_mac_end=""
43 label_mac=""
44 case $board in
45 hpe,1920-8g|\
46 hpe,1920-8g-poe-65w|\
47 hpe,1920-8g-poe-180w|\
48 hpe,1920-16g|\
49 hpe,1920-24g)
50 label_mac=$(mtd_get_mac_binary factory 0x68)
51 lan_mac=$label_mac
52 mac_count1=$(hexdump -v -n 4 -s 0x110 -e '4 "%d"' $(find_mtd_part factory) 2>/dev/null)
53 mac_count2=$(hexdump -v -n 4 -s 0x114 -e '4 "%d"' $(find_mtd_part factory) 2>/dev/null)
54 lan_mac_start=$(macaddr_add $lan_mac 2)
55 lan_mac_end=$(macaddr_add $lan_mac $((mac_count2-mac_count1)))
56 ;;
57 tplink,sg2008p-v1|\
58 tplink,sg2210p-v3|\
59 tplink,sg2452p-v4|\
60 tplink,t1600g-28ts-v3)
61 label_mac=$(get_mac_label)
62 lan_mac="$label_mac"
63 ;;
64 *)
65 lan_mac=$(mtd_get_mac_ascii u-boot-env2 mac_start)
66 lan_mac_end=$(mtd_get_mac_ascii u-boot-env2 mac_end)
67 label_mac=$(mtd_get_mac_ascii u-boot-env ethaddr)
68 [ -z "$lan_mac" ] && lan_mac=$label_mac
69 ;;
70 esac
71
72 ucidef_set_interface_macaddr "lan" $lan_mac
73 ucidef_set_bridge_mac "$lan_mac"
74 ucidef_set_network_device_mac eth0 $lan_mac
75 [ -z "$lan_mac_start" ] && lan_mac_start=$lan_mac
76 for lan in $lan_list; do
77 ucidef_set_network_device_mac $lan $lan_mac_start
78 [ -z "$lan_mac_end" ] || [ "$lan_mac_start" == "$lan_mac_end" ] && lan_mac_start=$(macaddr_setbit_la $lan_mac_start)
79 lan_mac_start=$(macaddr_add $lan_mac_start 1)
80 done
81 [ -n "$label_mac" ] && ucidef_set_label_macaddr $label_mac
82
83 case $board in
84 d-link,dgs-1210-10mp-f)
85 ucidef_set_poe 130 "$(filter_port_list "$lan_list" "lan9 lan10")"
86 ;;
87 d-link,dgs-1210-10p)
88 ucidef_set_poe 65 "$(filter_port_list "$lan_list" "lan9 lan10")"
89 ;;
90 d-link,dgs-1210-28mp-f)
91 ucidef_set_poe 370 "lan8 lan7 lan6 lan5 lan4 lan3 lan2 lan1 lan16 lan15 lan14 lan13 lan12 lan11 lan10 lan9 lan24 lan23
92 lan22 lan21 lan20 lan19 lan18 lan17"
93 ;;
94 engenius,ews2910p)
95 ucidef_set_poe 60 "$(filter_port_list "$lan_list" "lan9 lan10")"
96 ;;
97 hpe,1920-8g-poe-65w)
98 ucidef_set_poe 65 "$(filter_port_list_reversed "$lan_list" "lan9 lan10")"
99 ;;
100 hpe,1920-8g-poe-180w)
101 ucidef_set_poe 180 "$(filter_port_list_reversed "$lan_list" "lan9 lan10")"
102 ;;
103 netgear,gs110tpp-v1)
104 ucidef_set_poe 130 "$(filter_port_list "$lan_list" "lan9 lan10")"
105 ;;
106 netgear,gs110tup-v1)
107 ucidef_set_poe 240 "$(filter_port_list "$lan_list" "lan9 lan10")"
108 ;;
109 netgear,gs310tp-v1)
110 ucidef_set_poe 55 "$(filter_port_list "$lan_list" "lan9 lan10")"
111 ;;
112 zyxel,gs1900-10hp)
113 ucidef_set_poe 77 "$(filter_port_list "$lan_list" "lan9 lan10")"
114 ;;
115 zyxel,gs1900-8hp-v1|\
116 zyxel,gs1900-8hp-v2)
117 ucidef_set_poe 70 "$lan_list"
118 ;;
119 zyxel,gs1900-24hp-v1|\
120 zyxel,gs1900-24hp-v2)
121 ucidef_set_poe 170 "$(filter_port_list "$lan_list" "lan25 lan26")"
122 ;;
123 esac
124
125 board_config_flush
126
127 exit 0