[openfirmware] [commit] r1860 - cpu/x86/pc/olpc cpu/x86/pc/olpc/via dev ofw/wifi

repository service svn at openfirmware.info
Sat Jul 3 20:09:47 CEST 2010


Author: wmb
Date: Sat Jul  3 20:09:47 2010
New Revision: 1860
URL: http://tracker.coreboot.org/trac/openfirmware/changeset/1860

Log:
OLPC - NANDblaster improvements - use new thin firmware on XO-1.5 so it can be a transmitter and cleaned up the split between the code for XO-1 and XO-1.5

Modified:
   cpu/x86/pc/olpc/fw.bth
   cpu/x86/pc/olpc/nandcastui.fth
   cpu/x86/pc/olpc/versions.fth
   cpu/x86/pc/olpc/via/fw.bth
   cpu/x86/pc/olpc/via/mcnand-version.fth
   cpu/x86/pc/olpc/via/nbrx.fth
   cpu/x86/pc/olpc/via/wlan-version.fth
   cpu/x86/pc/olpc/wifichannel.fth
   dev/libertas.fth
   ofw/wifi/wifi-cfg.fth

Modified: cpu/x86/pc/olpc/fw.bth
==============================================================================
--- cpu/x86/pc/olpc/fw.bth	Fri Jul  2 04:58:02 2010	(r1859)
+++ cpu/x86/pc/olpc/fw.bth	Sat Jul  3 20:09:47 2010	(r1860)
@@ -463,6 +463,7 @@
 ;
 ' olpc-ssids to default-ssids
 
+create use-mesh
 fload ${BP}/cpu/x86/bootascall.fth
 fload ${BP}/cpu/x86/pc/olpc/nandcastui.fth
 fload ${BP}/cpu/x86/pc/olpc/wifichannel.fth

Modified: cpu/x86/pc/olpc/nandcastui.fth
==============================================================================
--- cpu/x86/pc/olpc/nandcastui.fth	Fri Jul  2 04:58:02 2010	(r1859)
+++ cpu/x86/pc/olpc/nandcastui.fth	Sat Jul  3 20:09:47 2010	(r1860)
@@ -5,13 +5,14 @@
    " olpc-mesh"nolpc-mesh"nolpc-mesh"nolpc-mesh"nolpc-mesh"nolpc-mesh"
 ;
 
-: use-mesh  ( -- )
+: select-mesh-mode  ( -- )
    \ Check for already set because re-setting it will force rescanning
    ['] mesh-ssids to default-ssids
    wifi-cfg >wc-ssid pstr@  " olpc-mesh" $=  0=  if
       " olpc-mesh" $essid
    then
 ;
+
 : $file-to-mem  ( filename$ -- adr len )
    $read-open
    ifd @ fsize  dup alloc-mem  swap     ( adr len )
@@ -74,7 +75,7 @@
 : nb-secure11  ( -- )  d# 11 #nb-secure-def  ;
 
 : mesh-clone
-   use-mesh
+   select-mesh-mode
    false to already-go?
    redundancy " boot rom:nb_tx udp:239.255.1.2 nand: %d" sprintf eval
 ;

Modified: cpu/x86/pc/olpc/versions.fth
==============================================================================
--- cpu/x86/pc/olpc/versions.fth	Fri Jul  2 04:58:02 2010	(r1859)
+++ cpu/x86/pc/olpc/versions.fth	Sat Jul  3 20:09:47 2010	(r1860)
@@ -26,6 +26,6 @@
 \ With a specific ID, mcastnand.bth will download a tarball without .git stuff.
 \ With "test", mcastnand.bth will clone the git head if build/multicast-nand/
 \ is not already present, then you can modify the git subtree as needed.
-macro: MCNAND_VERSION d1b388bcdf01f98a7b94bb62d0d3f1403fd27d1a
+macro: MCNAND_VERSION af0cadd1cbfb17ddfa7dcf299c4c3662ad7120a4
 \ macro: MCNAND_VERSION test
 \ macro: MCNAND_VERSION HEAD

Modified: cpu/x86/pc/olpc/via/fw.bth
==============================================================================
--- cpu/x86/pc/olpc/via/fw.bth	Fri Jul  2 04:58:02 2010	(r1859)
+++ cpu/x86/pc/olpc/via/fw.bth	Sat Jul  3 20:09:47 2010	(r1860)
@@ -514,8 +514,10 @@
 ;
 ' olpc-ssids to default-ssids
 
+create use-thinmac
 fload ${BP}/cpu/x86/bootascall.fth
-fload ${BP}/cpu/x86/pc/olpc/nandcastui.fth
+fload ${BP}/cpu/x86/pc/olpc/wifichannel.fth
+fload ${BP}/cpu/x86/pc/olpc/nb15tx.fth
 fload ${BP}/cpu/x86/pc/olpc/via/nbrx.fth
 fload ${BP}/cpu/x86/pc/olpc/via/blockfifo.fth
 fload ${BP}/cpu/x86/pc/olpc/via/fsupdate.fth

Modified: cpu/x86/pc/olpc/via/mcnand-version.fth
==============================================================================
--- cpu/x86/pc/olpc/via/mcnand-version.fth	Fri Jul  2 04:58:02 2010	(r1859)
+++ cpu/x86/pc/olpc/via/mcnand-version.fth	Sat Jul  3 20:09:47 2010	(r1860)
@@ -3,6 +3,6 @@
 \ With a specific ID, mcastnand.bth will download a tarball without .git stuff.
 \ With "test", mcastnand.bth will clone the git head if build/multicast-nand/
 \ is not already present, then you can modify the git subtree as needed.
-macro: MCNAND_VERSION d1b388bcdf01f98a7b94bb62d0d3f1403fd27d1a
+macro: MCNAND_VERSION af0cadd1cbfb17ddfa7dcf299c4c3662ad7120a4
 \ macro: MCNAND_VERSION test
 \ macro: MCNAND_VERSION HEAD

Modified: cpu/x86/pc/olpc/via/nbrx.fth
==============================================================================
--- cpu/x86/pc/olpc/via/nbrx.fth	Fri Jul  2 04:58:02 2010	(r1859)
+++ cpu/x86/pc/olpc/via/nbrx.fth	Sat Jul  3 20:09:47 2010	(r1860)
@@ -14,7 +14,6 @@
 ;
 alias nb nandblaster
 
-
 \ This is the wired version that is used in the factory with big Ethernet switches.
 : $nb-rx  ( multicast-ip$ -- )
    false to already-go?
@@ -22,9 +21,7 @@
    ( multicast-ip$ )  " boot rom:nb15_rx mcast:%s" sprintf  eval
    )boot-as-call
 ;
-: nb-rx:  ( "multicast-ip" -- )
-   safe-parse-word  $nb-rx
-;
+: nb-rx:  ( "multicast-ip" -- )  safe-parse-word  $nb-rx  ;
 : nb-rx  ( -- )  " 224.0.0.100" $nb-rx  ;
 
 [ifdef] adhoc-NANDblaster
@@ -54,6 +51,7 @@
 : mcopen
    " net:force" open-dev to nb-ih
    nb-ih 0= abort" Can't open net"
+   ['] null$ to default-ssids
    " OLPC-NANDblaster" $essid
    " do-associate" nb-ih $call-method drop
    " "(01 00 5e 7f 01 02)" " set-multicast" nb-ih $call-method

Modified: cpu/x86/pc/olpc/via/wlan-version.fth
==============================================================================
--- cpu/x86/pc/olpc/via/wlan-version.fth	Fri Jul  2 04:58:02 2010	(r1859)
+++ cpu/x86/pc/olpc/via/wlan-version.fth	Sat Jul  3 20:09:47 2010	(r1860)
@@ -1,7 +1,7 @@
 \ The wireless LAN module firmware
-macro: WLAN_VERSION 9.70.7.p0
+\ macro: WLAN_VERSION 9.70.7.p0
 
 \ Alternate command for getting WLAN firmware, for testing new versions.
 \ Temporarily uncomment the line and modify the path as necessary
 \ macro: GET_WLAN cp "/c/Documents and Settings/Mitch Bradley/My Documents/OLPC/DiskImages/sd8686-9.70.7.p0.bin" sd8686.bin; cp "/c/Documents and Settings/Mitch Bradley/My Documents/OLPC/DiskImages/sd8686_helper.bin" sd8686_helper.bin
-\ macro: GET_WLAN wget http://dev.laptop.org/pub/firmware/libertas/thinfirm/lbtf_sdio-9.0.7.p1.bin -O sd8686.bin
+macro: GET_WLAN wget http://dev.laptop.org/pub/firmware/libertas/thinfirm/lbtf_sdio-9.0.7.p2.bin -O sd8686.bin

Modified: cpu/x86/pc/olpc/wifichannel.fth
==============================================================================
--- cpu/x86/pc/olpc/wifichannel.fth	Fri Jul  2 04:58:02 2010	(r1859)
+++ cpu/x86/pc/olpc/wifichannel.fth	Sat Jul  3 20:09:47 2010	(r1860)
@@ -5,11 +5,6 @@
 d# 2048 buffer: scan-buf
 
 : $call-wlan  ( args method$ -- res )  wlan-ih $call-method  ;
-: stop-mesh  ( -- )  " mesh-stop" $call-wlan drop  ;
-: start-mesh  ( channel# -- )
-   " mesh-start" $call-wlan drop
-   d# 100 0 " set-beacon" $call-wlan
-;
 
 : open-wlan  ( -- )
    " /wlan:force" open-dev to wlan-ih
@@ -143,6 +138,14 @@
    then                              ( chan# )
 ;
 
+d# 1514 buffer: tx-test-buf
+
+[ifdef] use-mesh
+: stop-mesh  ( -- )  " mesh-stop" $call-wlan drop  ;
+: start-mesh  ( channel# -- )
+   " mesh-start" $call-wlan drop
+   d# 100 0 " set-beacon" $call-wlan
+;
 : multinand-traffic?  ( channel# -- flag )
    start-mesh
    " "(01 00 5e 7e 01 02)" " set-multicast" $call-wlan
@@ -176,24 +179,42 @@
    search-channels
    close-wlan
 ;
-
-d# 1514 buffer: mesh-test-buf
-
-: (channel-speed)  ( channel# -- kb/sec )
-   dup >r  start-mesh
+: start-direct-wlan  ( channel# -- )
+   start-mesh
    " enable-multicast" $call-wlan
    1 " mesh-set-ttl" $call-wlan
    h# b " mesh-set-bcast" $call-wlan
 
-   " "(00 00 00 00 00 00 01 00 5e 7e 01 01)XO" mesh-test-buf swap move
+   " "(00 00 00 00 00 00 01 00 5e 7e 01 01)XO" tx-test-buf swap move
+;
+: stop-direct-wlan  ( -- )  stop-mesh  ;
+\ : send-direct-wlan  ( adr len -- )  " write" $call-wlan  ;
+[then]
+
+[ifdef] use-thinmac
+: start-direct-wlan  ( channel# -- )
+   ( channel# )
+   " OLPC-NANDblaster" " start-ap" $call-wlan  ( )
+   h# 1b " set-tx-ctrl" $call-wlan             ( )  \ Fast data rate
+   " "(01)OLPC"(02)"  tx-test-buf swap move    ( )
+   " get-mac-address" $call-wlan   tx-test-buf 6 +  swap move   ( )
+   " XO" tx-test-buf d# 12 +  swap move        ( )
+;
+: stop-direct-wlan  ( -- )
+   " set-sta-mode" $call-wlan
+;
+\ : send-direct-wlan  ( adr len -- )  " thin-send-data-frame" $call-wlan  ;
+[then]
 
+: (channel-speed)  ( channel# -- kb/sec )
+   dup >r  start-direct-wlan
    tsc@
    d# 1000 0 do
-      mesh-test-buf d# 1514 " write" $call-wlan drop
+      tx-test-buf d# 1514 " write" $call-wlan  drop
    loop
    tsc@ 2swap d- ms-factor um/mod nip   ( ms )
    d# 1,514,000 swap /                  ( kb/sec )
-   stop-mesh                            ( kb/sec )
+   stop-direct-wlan                     ( kb/sec )
    dup r> >channel-speed !              ( kb/sec )
 ;
 : channel-speed  ( channel# -- kb/sec )
@@ -293,9 +314,11 @@
    d# 4000 ms
 ;
 
+[ifdef] use-mesh
 : nb-clone    ( -- )  nb-auto-channel  #nb-clone  ;
 : nb-secure   ( -- )  nb-auto-channel  #nb-secure-def  ;
 : nb-update   ( -- )  nb-auto-channel  #nb-update-def  ;
+[then]
 
 \ LICENSE_BEGIN
 \ Copyright (c) 2008 FirmWorks

Modified: dev/libertas.fth
==============================================================================
--- dev/libertas.fth	Fri Jul  2 04:58:02 2010	(r1859)
+++ dev/libertas.fth	Sat Jul  3 20:09:47 2010	(r1860)
@@ -718,7 +718,10 @@
    +xw
    outbuf-wait drop
 ;
-: set-ap-mode  ( -- )  2 set-mode  ;  \ Thin firmware only
+0 value ap-mode?
+: set-ap-mode  ( -- )  2 set-mode  true to ap-mode?  ;  \ Thin firmware only
+: set-sta-mode  ( -- )  1 set-mode  false to ap-mode?  ;  \ Thin firmware only
+: set-passive-mode  ( -- )  0 set-mode  false to ap-mode?  ;  \ Thin firmware only
 
 : broadcast-mac$  ( -- adr len )  " "(ff ff ff ff ff ff)"  ;
 
@@ -1028,6 +1031,7 @@
    \ It prevents listening stations, of which there can be many,
    \ from transmitting when they come on-line.
    2dup  " olpc-mesh"  $=  if  passive-scan  then
+   2dup  " olpc-NANDblaster"  $=  if  passive-scan  then
 
    h# 32 min  scan-ssid pack drop
 ;
@@ -1861,6 +1865,7 @@
 : close  ( -- )
    opencount @ 1-  0 max  opencount !
    opencount @ 0=  if
+      ap-mode?  if  set-sta-mode  then
       adhoc-started?  if  adhoc-stop  then
       disable-multicast
       mesh-stop drop
@@ -1903,40 +1908,6 @@
    recycle-packet			( actual )
 ;
 
-\ Normal read and write methods.
-: write  ( adr len -- actual )
-   link-up? 0=  if  2drop 0 exit  then	\ Not associated yet.
-   ?reassociate				\ In case if the connection is dropped
-   write-force
-;
-: read  ( adr len -- actual )
-   \ If a good receive packet is ready, copy it out and return actual length
-   \ If a bad packet came in, discard it and return -1
-   \ If no packet is currently available, return -2
-
-   link-up? 0=  if  2drop 0 exit  then	\ Not associated yet.
-   ?reassociate				\ In case if the connection is dropped
-   read-force
-;
-
-: load  ( adr -- len )
-   link-up? 0=  if  drop 0 exit  then	\ Not associated yet.
-
-   " obp-tftp" find-package  if		( adr phandle )
-      my-args rot  open-package		( adr ihandle|0 )
-   else					( adr )
-      0					( adr 0 )
-   then					( adr ihandle|0 )
-
-   dup  0=  if  ." Can't open obp-tftp support package" stop-nic abort  then
-					( adr ihandle )
-
-   >r
-   " load" r@ ['] $call-method	catch   ( len false | x x x true )
-   r> close-package
-   throw
-;
-
 0 instance value /packet
 : find-tag  ( tag-id #fixed-params -- false | tag-adr tag-len true )
    +pkt-data                    ( tag-id adr )
@@ -2014,8 +1985,6 @@
 : throttle delay ms  ;
 \ Convert an 802.3 frame to an 802.11 frame and send it
 : thin-send-data-frame  ( adr len -- len )
-   begin  backlog 8 >=  while  process-mgmt-frame  repeat
-   backlog 1+ to backlog
    tuck over >r         ( len adr len  r: adr )
    \ In 208, 200 is the fromDS bit, indicating that the frame is ostensibly coming
    \ from an AP, and 8 is the code for a non-acked Data frame.
@@ -2024,6 +1993,8 @@
    " "(aa aa 03 00 00 00)"  0 +pkt-data  swap move      ( len adr' elen )
    tuck  6 +pkt-data swap move                          ( len elen )
    packet-buf  swap /802.11-header +  6 +  wrap-802.11  ( len padr plen )
+   begin  backlog 8 >=  while  process-mgmt-frame  repeat
+   backlog 1+ to backlog
    data-out                                             ( len )
    throttle
 ;
@@ -2037,6 +2008,44 @@
    test-buf d# 1440 thin-send-data-frame drop
 ;
 
+\ Normal read and write methods.
+: write  ( adr len -- actual )
+   ap-mode?  if
+      thin-send-data-frame
+   else
+      link-up? 0=  if  2drop 0 exit  then	\ Not associated yet.
+      ?reassociate				\ In case if the connection is dropped
+      write-force
+   then
+;
+: read  ( adr len -- actual )
+   \ If a good receive packet is ready, copy it out and return actual length
+   \ If a bad packet came in, discard it and return -1
+   \ If no packet is currently available, return -2
+
+   link-up? 0=  if  2drop 0 exit  then	\ Not associated yet.
+   ?reassociate				\ In case if the connection is dropped
+   read-force
+;
+
+: load  ( adr -- len )
+   link-up? 0=  if  drop 0 exit  then	\ Not associated yet.
+
+   " obp-tftp" find-package  if		( adr phandle )
+      my-args rot  open-package		( adr ihandle|0 )
+   else					( adr )
+      0					( adr 0 )
+   then					( adr ihandle|0 )
+
+   dup  0=  if  ." Can't open obp-tftp support package" stop-nic abort  then
+					( adr ihandle )
+
+   >r
+   " load" r@ ['] $call-method	catch   ( len false | x x x true )
+   r> close-package
+   throw
+;
+
 : reset  ( -- flag )  reset-nic  ;
 
 : (scan-wifi)  ( -- error? )

Modified: ofw/wifi/wifi-cfg.fth
==============================================================================
--- ofw/wifi/wifi-cfg.fth	Fri Jul  2 04:58:02 2010	(r1859)
+++ ofw/wifi/wifi-cfg.fth	Sat Jul  3 20:09:47 2010	(r1860)
@@ -49,6 +49,8 @@
    wifi-cfg  /wifi-cfg erase    ( adr len )
    wifi-cfg >wc-ssid pstr!      ( )
    true to ssid-reset?
+   \ When an explicit SSID is given, don't fall back to the default list
+   ['] null$ to default-ssids
 ;
 
 : $wep  ( wep$ -- )



More information about the openfirmware mailing list