
disad100base
By: a guest on
Mar 30th, 2012 | syntax:
Bash | size: 0.83 KB | hits: 39 | expires: Never
#!/bin/sh /etc/rc.common
START=50
ad100base_ctrl() { # <dev> <port> <0|1>
local val=0
swconfig dev $1 set phy $2
# Auto-Negotiation Advertisement
# 4.7 100BASE-TX
# 4.8 100BASE-TX full duplex
swconfig dev $1 set reg 4
val=$(swconfig dev $1 get val)
swconfig dev $1 set val $((val^(-$3^val)&0x180))
# 0.9 Restart Auto-Negotiation
swconfig dev $1 set reg 0
val=$(swconfig dev $1 get val)
swconfig dev $1 set val $((val^(-1^val)&0x200))
}
start() {
local port=0
for port in $(seq 0 3)
do ad100base_ctrl eth0 $port 0
logger -t switch disabled Auto-Negotiation Advertisement for 100BASE-TX on port $port
done
}
stop() {
local port=0
for port in $(seq 0 3)
do ad100base_ctrl eth0 $port 1
logger -t switch enabled Auto-Negotiation Advertisement for 100BASE-TX on port $port
done
}