Author: wmb Date: 2008-09-30 22:35:12 +0200 (Tue, 30 Sep 2008) New Revision: 951
Added: cpu/x86/pc/olpc/mcastnand.bth Modified: ofw/inet/ip.fth ofw/inet/netload.fth Log: OLPC - beginning of support for multicast NAND reflashing.
Added: cpu/x86/pc/olpc/mcastnand.bth =================================================================== --- cpu/x86/pc/olpc/mcastnand.bth (rev 0) +++ cpu/x86/pc/olpc/mcastnand.bth 2008-09-30 20:35:12 UTC (rev 951) @@ -0,0 +1,23 @@ +purpose: Fetch and compile the multicast NAND reflash program + +command: &builder &this +build-now + +\ fload ${BP}/cpu/x86/pc/olpc/versions.fth + +" rm -rf multicast-nand" $sh + +" wget -q -O multicast-nand.tar.gz http://dev.laptop.org/git?p=users/wmb/multicast-nand%5C;a=snapshot" $sh +" tar xfz multicast-nand.tar.gz" $sh +" mv users/wmb/multicast-nand ." $sh +" rm -rf users/wmb" $sh +" rm multicast-nand.tar.gz" $sh + +\ " git clone --depth 1 -q git://dev.laptop.org/users/wmb/multicast-nand" expand$ $sh + +" (cd multicast-nand; make BPDIR=../../../../../.. rx_ofw; strip -o ../mcastnand.bin rx_ofw)" expand$ $sh + +\ This forces the creation of a .log file, so we don't re-fetch +writing mcastnand.version +\ " ${WLAN_VERSION}"n" expand$ ofd @ fputs +ofd @ fclose
Modified: ofw/inet/ip.fth =================================================================== --- ofw/inet/ip.fth 2008-09-30 20:27:58 UTC (rev 950) +++ ofw/inet/ip.fth 2008-09-30 20:35:12 UTC (rev 951) @@ -61,6 +61,7 @@
: ip= ( ip-addr1 ip-addr2 -- flag ) /i comp 0= ;
+: multicast? ( adr-buf -- flag ) c@ h# f0 and h# e0 = ; : unknown-ip-addr? ( adr-buf -- flag ) unknown-ip-addr ip= ; : known? ( adr-buf -- flag ) unknown-ip-addr? 0= ;
Modified: ofw/inet/netload.fth =================================================================== --- ofw/inet/netload.fth 2008-09-30 20:27:58 UTC (rev 950) +++ ofw/inet/netload.fth 2008-09-30 20:35:12 UTC (rev 951) @@ -400,9 +400,37 @@ 2drop false ;
+: setup-multicast ( -- ) + server-ip-addr my-ip-addr copy-ip-addr + " set-multicast" my-parent ihandle>phandle find-method if ( acf ) + " "(01 00 5e)" his-en-addr swap move ( acf ) + my-ip-addr 1+ his-en-addr 3 + 3 move ( acf ) + his-en-addr 3 + c@ h# 7f and his-en-addr 3 + c! ( ) + his-en-addr /e rot my-parent call-package ( ) + exit + then + " enable-promiscuous" my-parent ihandle>phandle find-method if ( acf ) + my-parent call-package + exit + then + " promiscuous-mode" my-parent ihandle>phandle find-method if ( acf ) + my-parent call-package + exit + then + " promiscuous" my-parent ihandle>phandle find-method if ( acf ) + my-parent call-package + exit + then + \ Try setting the unicast address to the multicast address? + ." Can't enable multicast reception in network driver" cr +; + defer configured ' noop to configured : configure ( -- ) use-last? if configured exit then + + server-ip-addr multicast? if setup-multicast exit then + use-bootp? if nvram-ip? 0= if process-bootp then else
openfirmware@openfirmware.info