Author: wmb Date: 2009-09-03 07:11:26 +0200 (Thu, 03 Sep 2009) New Revision: 1342
Modified: dev/libertas.fth Log: Libertas driver - eliminate or at least greatly reduce "marvel-get-mac-address failed" messages by retrying that command, and by not calling it after the mac address is already known. Also deassociate on a force open, so find-multinand-server works correctly after the driver has already been opened once in normal association mode.
Modified: dev/libertas.fth =================================================================== --- dev/libertas.fth 2009-09-02 23:40:15 UTC (rev 1341) +++ dev/libertas.fth 2009-09-03 05:11:26 UTC (rev 1342) @@ -580,12 +580,21 @@ \ MAC address \ =========================================================================
-: marvel-get-mac-address ( -- ) +\ This command has an annoying tendency to fail to sometimes - wait-cmd-resp +\ times out. Retrying usually fixes it. +: (marvel-get-mac-address) ( -- error? ) 8 h# 4d ( CMD_802_11_MAC_ADDRESS ) prepare-cmd ACTION_GET +xw - outbuf-wait if ." marvel-get-mac-address failed" cr exit then + outbuf-wait if true exit then respbuf >fw-data 2 + mac-adr$ move + false ; +: marvel-get-mac-address ( -- ) + 4 0 do + (marvel-get-mac-address) 0= if unloop exit then + loop + ." marvel-get-mac-address failed" cr +;
: marvel-set-mac-address ( -- ) 8 h# 4d ( CMD_802_11_MAC_ADDRESS ) prepare-cmd @@ -1516,6 +1525,7 @@ : ?make-mac-address-property ( -- ) driver-state ds-ready < if exit then " mac-address" get-my-property if + marvel-get-mac-address mac-adr$ encode-bytes " local-mac-address" property mac-address encode-bytes " mac-address" property else @@ -1531,7 +1541,6 @@ ;
: init-net ( -- ) - marvel-get-mac-address ?make-mac-address-property ;
@@ -1576,7 +1585,9 @@ my-args " supplicant" $open-package to supplicant-ih supplicant-ih 0= if release-bus-resources free-buf false exit then nonce-cmd - force-open? 0= if + force-open? if + ds-disconnected reset-driver-state + else link-up? 0= if ['] 2drop to ?process-eapol do-associate 0= if free-buf false exit then