Progress on OLPC's board wireless device

Marcelo Tosatti marcelo at kvack.org
Wed Jun 14 15:30:30 EDT 2006


Hi Ronak,

I have been testing the Libertas driver on the OLPC board and got a few
questions for you.

Good news first: The device is detected by the USB subsystem and the
Libertas driver, and its able to scan for AP's correctly (with "iwlist
eth0 scan").

And the bad news:

One issue is that the firmware download is not reliable, it fails at
times (my first attempt to load the driver was not successful).

What happens is that no response is received from the device, even
though the URB write request containing the firmware data is ACKed (ie.
there is a successful URB write callback notification).

>From there on the device seems completly dead. Attempting to reload the
firmware results in no ACKs referring to the URB fw write.

To fix the situation I have to power off the board, reboot, and,
occassionaly, the firmware boots successfully. Obviously this situation
is not acceptable for production.

Any clues on what might be going on? Should a HostCmd_CMD_802_11_RESET help?
Is this a known issue?

Another issue is failure to associate to an AP.
HostCmd_CMD_802_11_ASSOCIATE _always_ returns status code "4", which
results in:

/**
 *  @brief This function handles the command response of associate
 *
 *  @param priv    A pointer to wlan_private structure
 *  @param resp    A pointer to HostCmd_DS_COMMAND
 *  @return        WLAN_STATUS_SUCCESS or WLAN_STATUS_FAILURE
 */
int wlan_ret_802_11_associate(wlan_private* priv,
                              struct HostCmd_DS_COMMAND* resp)
{
    wlan_adapter*           Adapter = priv->adapter;
    int                     ret     = WLAN_STATUS_SUCCESS;
    union iwreq_data        wrqu;
    IEEEtypes_AssocRsp_t*   pAssocRsp;
    BSSDescriptor_t*        pBSSDesc;

    ENTER();

    pAssocRsp = (IEEEtypes_AssocRsp_t*)&resp->params;

    if (pAssocRsp->StatusCode) {

        if (Adapter->MediaConnectStatus == WlanMediaStateConnected) {
            MacEventDisconnected(priv);
        }

        PRINTM(INFO, "ASSOC_RESP: Association Failed, status code = %d\n",
               pAssocRsp->StatusCode);


Where can I find more information about this status codes? I've
searched for the IEEE IE 802.11 types but no success. The documentation
Marvell provided is not very extensive. Is there anything more complete
other than "WLAN Subsystem Host Driver, Firmware, and Interface IEEE
802.11a/g/b Firmware Specification v5.0" ?

Thank you





More information about the libertas-dev mailing list