[openfirmware] [commit] r1734 - dev

repository service svn at openfirmware.info
Sat Feb 13 06:45:40 CET 2010


Author: wmb
Date: Sat Feb 13 06:45:40 2010
New Revision: 1734
URL: http://tracker.coreboot.org/trac/openfirmware/changeset/1734

Log:
Added adhoc-start to Libertas wireless driver.

Modified:
   dev/libertas.fth

Modified: dev/libertas.fth
==============================================================================
--- dev/libertas.fth	Sat Feb 13 06:44:37 2010	(r1733)
+++ dev/libertas.fth	Sat Feb 13 06:45:40 2010	(r1734)
@@ -687,7 +687,7 @@
    outbuf-wait
 ;
 
-: set-mac-control  ( -- error? )
+: set-mac-control  ( -- )
    (set-mac-control)  if
      (set-mac-control) drop
    then
@@ -1033,6 +1033,50 @@
    4 pick to channel
 ;
 
+: adhoc-start  ( ch ssid$ -- ok? )
+   set-mac-control
+
+   h# 2b ( CMD_802_11_AD_HOC_START ) start-cmd
+   resp-wait-long to resp-wait
+
+   ( ssid$ ) tuck +x$			\ SSID
+   ( ssid-len ) d# 32 swap - +x		\ 32 bytes of SSID (zero-padded because buffer is pre-erased)
+   2 +xb				\ BssType: BSS_INDEPENDENT
+   d# 100 +xw				\ Beacon period
+   0      +xb				\ DTIM period (only for versions < 9)
+
+   \ IBSS param set
+   6 +xb				\ Elem ID = IBSS param set
+   2 +xb				\ Length
+   atim +xw				\ ATIM window
+   4 +x					\ Reserved bytes
+
+   \ DS param set
+   3 +xb				\ Elem ID = DS param set
+   1 +xb				\ Length
+   ( channel ) +xb			\ Channel
+   4 +x					\ Reserved bytes
+
+   0 +xw				\ Probe delay in uS (only for versions < 9)
+
+   2 +xw				\ Capability info: IBSS (WEP/WPA would add h# 10)
+
+   \ XXX 14 bytes for 802.11g, 8 bytes for 802.11b
+   supported-rates$ +x$			\ Common supported data rates
+
+   d# 100 +x				\ Padding as present in libertas Linux driver
+
+   finish-cmd outbuf-wait  if  ." Failed to start adhoc network" cr false exit  then
+   \ We could get the bssid from offsets 3..8 of the response buf if we needed it
+   true
+   ds-associated set-driver-state
+;
+: adhoc-stop  ( -- )
+   h# 40 ( CMD_802_11_AD_HOC_STOP ) start-cmd
+   finish-cmd outbuf-wait  if  ." Failed to stop adhoc network" cr  then
+   ds-associated reset-driver-state
+;
+
 : (join)  ( ch ssid$ target-mac$ -- ok? )
    save-associate-params
    h# 2c ( CMD_802_11_AD_HOC_JOIN ) start-cmd
@@ -1040,7 +1084,7 @@
 
    ( target-mac$ ) +x$			\ Peer MAC address
    ( ssid$ ) tuck +x$			\ SSID
-   ( ssid-len ) d# 32 swap - +x		\ 32 bytes of SSID
+   ( ssid-len ) d# 32 swap - +x		\ 32 bytes of SSID (zero-padded because buffer is pre-erased)
    bss-type-adhoc +xb			\ BSS type
    d# 100 +xw				\ Beacon period
    1      +xb				\ DTIM period
@@ -1065,7 +1109,7 @@
    \ XXX 14 bytes for 802.11g, 8 bytes for 802.11b
    common-rates #rates +x$		\ Common supported data rates
    d# 255 +xw				\ Association timeout
-   0      +xw				\ Probe delay time
+   0 +xw				\ Probe delay time
 
    finish-cmd outbuf-wait  if  ." Failed to join adhoc network" cr false exit  then
    true
@@ -1299,7 +1343,7 @@
       2drop 2drop mesh-start 0=     ( ok? )
       dup  if  mesh-default-modes  then
       exit
-   then
+   then                             ( ch ssid$ target-mac$ )
    ?set-wep				\ Set WEP keys again, if ktype is WEP
    set-mac-control
    2dup authenticate



More information about the openfirmware mailing list