WPA on laptops running FreeBSD 5.3 (hacked a custom driver but having trouble)

Sam Leffler sam at errno.com
Wed Mar 9 09:37:50 PST 2005


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


More information about the freebsd-mobile mailing list