Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 09 Mar 2005 19:52:53 -0800
From:      Sam Leffler <sam@errno.com>
To:        Arvind Srinivasan <arvind@celar.us>
Cc:        freebsd-mobile@freebsd.org
Subject:   Re: WPA on laptops running FreeBSD 5.3 (hacked a custom driver but having trouble)
Message-ID:  <422FC495.5020006@errno.com>
In-Reply-To: <422F768D.50203@celar.us>
References:  <c91ae148050308234173362dda@mail.gmail.com> <422F34CF.4020206@errno.com> <422F768D.50203@celar.us>

next in thread | previous in thread | raw e-mail | index | archive | help
Arvind Srinivasan wrote:
> Sam:
> I implemented it in if_ndis in the kernel because I wanted to get it 
> going in 5.3 for just NDIS and WPA without having to require that a 
> supplicant be running - to emulate the behavior of the utilities under 
> Windows.
> The setting of keys is working, as well as association with SSIDs that 
> are known to be running WPA. The privacy bit is also working. I did not 
> implement anything relating to TKIP countermeasures, which may be why I 
> am unable to exchange any packets subsequently.
> Is there way to debug what's going on when I try dhclient on the interface?
> Thanks.

I think you need to learn more about how WPA works.  Your approach will 
not work unless the drivers you are working with include a 
supplicant--which they do not (so far as I understand).

	Sam

> 
> Sam Leffler wrote:
> 
>> Arvind Srinivasan wrote:
>>
>>> I hacked a custom ndis driver to use WPA-PSK. The driver pretends to
>>> be WEP (so that I can continue to use the existing API's) but under
>>> the covers it actually calls the ndis wrapper with WPA OIDs instead of
>>> the WEP OIDs.
>>>
>>> The essential changes I made are a call to OID_802_11_ADD_KEY instead
>>> of OID_802_11_ADD_WEP, and NDIS_80211_WEPSTAT_ENC2ENABLED instead of
>>> NDIS_80211_WEPSTAT_ENABLED.
>>> All the changes are in if_ndis.c:ndis_setstate_80211.
>>
>>
>>
>> I don't understand why didn't use the existing API's that work with 
>> wpa_supplicant?
>>
>>>
>>> I've tried two different cards: Linksys WPC54G and Dell WLAN 1350.
>>> Both cards associate fine, but do not get much further than that. I am
>>> unable to get an IP address from the NETGEAR router via DHCP, even
>>> though the link is up.
>>> Note that both cards work fine with the same router in Windows.....
>>>
>>> Is there anything else I need to do besides provide the right key and
>>> encryption method in ndis_setstate_80211?
>>
>>
>>
>> Do your drivers implement a WPA supplicant in the kernel?  If not you 
>> need a supplicant to use WPA in station mode.  wpa_supplicant is the 
>> right program for this and to use it with FreeBSD you need to 
>> implement ioctl's to get+set keys, set the optional information 
>> element with negotiated WPA algorithms, and implement the scan results 
>> interface so wpa_supplicant can identify WPA-capable AP's (and 
>> probably a couple of other minor bits like enable the privacy bit and 
>> handle TKIP countermeasures).  I believe there are OID's that map to 
>> all these mechanisms as I looked at the M$ spec when I designed the 
>> ioctls.
>>
>>     Sam
>>
>>
> 
> 
> _______________________________________________
> freebsd-mobile@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-mobile
> To unsubscribe, send any mail to "freebsd-mobile-unsubscribe@freebsd.org"
> 
> 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?422FC495.5020006>