143 lines
4.0 KiB
Bash
143 lines
4.0 KiB
Bash
#!/bin/ksh
|
|
|
|
ADJREAD=sysetadjread
|
|
|
|
display_msg()
|
|
{
|
|
echo "$1"
|
|
}
|
|
|
|
determineHWIdx()
|
|
{
|
|
if [[ -n $INTERNAL_O5HW_INDEX ]]; then
|
|
hwidx=$((16#$INTERNAL_O5HW_INDEX)) # hexadecimal to decimal
|
|
echo $hwidx
|
|
return $hwidx
|
|
fi
|
|
|
|
whence hwidx.sh > /dev/null
|
|
if [[ $? -eq 0 ]]; then
|
|
hwidx=$(hwidx.sh)
|
|
if [[ $? -eq 0 ]]; then
|
|
echo $hwidx
|
|
return $hwidx
|
|
fi
|
|
fi
|
|
|
|
# fallback solution if hwidx.sh fails
|
|
HW_REV=$(if-test ksh -c "echo \${HW_REV}") # get the HW_REV string
|
|
hwidx=${HW_REV##*,0x} # truncate beginning until 0x found
|
|
hwidx=${hwidx%%,*} # truncate ending from the next ,
|
|
hwidx=$((0x$hwidx)) # interpret hex value as decimal value
|
|
echo $hwidx
|
|
return $hwidx
|
|
}
|
|
|
|
check_mac_address()
|
|
{
|
|
if [[ (-n $MAC_ADDRESS) && (${#MAC_ADDRESS} == 12) && ("$MAC_ADDRESS" != "FFFFFFFFFFFF") && ("$MAC_ADDRESS" != "ffffffffffff") && ("$MAC_ADDRESS" != "000000000000") ]]; then
|
|
return 1
|
|
fi
|
|
|
|
return 0
|
|
}
|
|
|
|
determine_mac_address()
|
|
{
|
|
check_mac_address
|
|
|
|
if [[ $? == 1 ]]; then
|
|
echo "INFO: Retrieved MAC address $MAC_ADDRESS!"
|
|
return
|
|
fi
|
|
|
|
# MAC_ADDRESS not valid - get value from adjust data
|
|
MAC_ADDRESS="FFFFFFFFFFFF"
|
|
type $ADJREAD >/dev/null 2>&1
|
|
if [ $? -ne 0 ] ; then
|
|
echo "ERROR: Could not find $ADJREAD!"
|
|
else
|
|
ADJINFO=$($ADJREAD --get=E2P.Networking.Eth0MacAddr)
|
|
if [[ $? -eq 0 ]]; then
|
|
MAC_ADDRESS="${ADJINFO##E2P.Networking.Eth0MacAddr=}"
|
|
if [[ "$MAC_ADDRESS" == "$ADJINFO" ]]; then
|
|
echo "ERROR: invalid adjust data!"
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
check_mac_address
|
|
|
|
if [[ $? == 1 ]] ; then
|
|
echo "INFO: Retrieved MAC address $MAC_ADDRESS from adjdata!"
|
|
else
|
|
echo "ERROR: Could not read valid MAC-Address from adjustblock ($MAC_ADDRESS). Please update the ajustblock!"
|
|
# read omap5 - Wafer and die unique identifier // WAFERUID
|
|
ID0=$(in32 0x4A002200)
|
|
ID0=${ID0##* : }
|
|
# read omap5 - Wafer fab and lot unique identifier
|
|
ID2=$(in32 0x4A002208)
|
|
ID2=${ID2##* : }
|
|
ID3=`echo ${ID0}${ID2} | crc32`
|
|
# MAC => "00+WAFERUID[0]+CRC32"
|
|
MAC_ADDRESS=00${ID0#??????}$ID3
|
|
echo "INFO: Fake MAC-Address is $MAC_ADDRESS!"
|
|
fi
|
|
}
|
|
|
|
determine_mac_address
|
|
|
|
# check HW revision
|
|
# check HW revision
|
|
HWIDX=$(determineHWIdx)
|
|
|
|
if [[ $HWIDX -ge 12 ]] ; then # FPLANE
|
|
# todo remove when available in sysregs/ipl
|
|
# activate Gigabit Ethernet
|
|
out32 0x5e40f0d4 0x1
|
|
fi
|
|
|
|
/bin/pfctl -f /etc/pf.conf -e
|
|
|
|
display_msg "starting DWC Ethernet interface with MAC_ADDRESS: $MAC_ADDRESS ..."
|
|
mount -T io-pkt -o speed=1000,duplex=1,mac=$MAC_ADDRESS devnp-dwcmac.so
|
|
if_up -p -r 10 dwc0
|
|
|
|
ifconfig dwc0 up
|
|
if_up -p -l dwc0 || echo "##### WARNING: dwcmac link status is not going to be up! #####"
|
|
|
|
mount -T io-pkt -o if=dwc0,ip=169.254.199.119,debug,delay=200,force lsm-autoip.so
|
|
waitfor /net/hu-jacinto/dev/eth/ctrl 3.0
|
|
display_msg "VLAN 0x49 is activated ..."
|
|
ifconfig vlan73 create vlan 73 vlanif dwc0 160.48.199.119/25 up
|
|
display_msg "VLAN 0x4D is activated ..."
|
|
ifconfig vlan77 create vlan 77 vlanif dwc0 up
|
|
display_msg "VLAN 0x56 is activated ..."
|
|
ifconfig vlan86 create vlan 86 vlanif dwc0 up
|
|
display_msg "VLAN 0x50 is activated ..."
|
|
ifconfig vlan80 create vlan 80 vlanif dwc0 160.48.199.185/29 up
|
|
if [[ "$BOOTMODE" != "EMERGENCY" ]]; then
|
|
#IPv6 for Online
|
|
ifconfig vlan77 inet6 alias 2a03:1e80:a00:4d01::E1/64
|
|
fi
|
|
|
|
if [[ "$BOOTMODE" != "EMERGENCY" ]]; then
|
|
#add route for multicast
|
|
route add -net 224.0.0.0/4 160.48.199.119
|
|
echo "224.0.0.0/4 160.48.199.119" > /dev/shmem/multicast_route.txt
|
|
fi
|
|
|
|
# only start dhcp.client in SSP-only mode
|
|
|
|
echo "done" > /dev/shmem/start_net.done
|
|
|
|
if [[ "$BOOTMODE" != "EMERGENCY" ]]; then
|
|
# --------------------------------------------------------------------------
|
|
# (mandatory for Online) enable ip forwarding
|
|
#
|
|
display_msg "enable ip forwarding..."
|
|
sysctl -w net.inet6.ip6.forwarding=1 net.inet.ip.forwarding=1 > /dev/null
|
|
fi
|
|
|
|
exit 0
|