Subject: Re: Problem authenticating using WPA with bcm43xx-softmac

From: Dan Williams <[email-masked]>
Date: Wed, 07 Jun 2006 13:29:12 -0400

On Wed, 2006-06-07 at 17:57 +0200, Johannes Berg wrote:
> On Wed, 2006-06-07 at 17:51 +0200, Johannes Berg wrote:
> 
> > Well, it should be shown in the 802.11i spec too.
> 
> I suppose that it is the association request, and needs to contain the
> RSN described in 7.3.2.25 as per 7.2.3.4 in 802.11i. This is, afaik, the
> 'generic IE' that is added with the wext. Now, it looks like the RSN
> isn't included but the WPA2 info or something? Also, the genIE in your
> log doesn't look correct to me, starting with ffffff?? Jouni, do you
> have any idea what might be going on?

I believe that wpa_supplicant tells the driver what genie to use through
the SIOCSIWGENIE wext call.  The IEs match between what the driver
appears to be reporting, and what wpa_supplicant says from the logs.
wpa_supplicant is almost certainly writing the correct IE to the driver
through wext, so I think the debug output from softmac must be
formatting the string incorrectly when printing it out to the logs.

Looking at it further:

struct ieee80211softmac_wpa {
        char *IE;
        int IElen;
        int IEbuflen;
};

from ieee80211softmac_wx.c: ieee80211softmac_wx_set_genie()

                memcpy(mac->wpa.IE, extra, wrqu->data.length);
                dprintk(KERN_INFO PFX "generic IE set to ");
                for (i=0;i<wrqu->data.length;i++)
                        dprintk("%.2x", mac->wpa.IE[i]);
                dprintk("\n");

the dprintk code isn't doing the right thing here, given an array of
bytes.  You probably want:

                        dprintk("%.2hhx", mac->wpa.IE[i]);

(ie, add the "hh" before the x to tell the print that it's a char)

Dan