Date: Sat, 23 Feb 2002 23:15:56 -0800 From: Thomas Skibo <skibo@pacbell.net> To: "M. Warner Losh" <imp@village.org>, fujita@soum.co.jp Cc: mitchy@er.ams.eng.osaka-u.ac.jp, mobile@FreeBSD.ORG, brooks@one-eyed-alien.net Subject: Re: Linksys WMP11 support Message-ID: <3C78932C.27319015@pacbell.net> References: <20020205133602.A6294@Odin.AC.HMC.Edu> <20020206095856D.mitchy@er.ams.eng.osaka-u.ac.jp> <20020224.084619.74696422.fujita@soum.co.jp> <20020223.213124.62371755.imp@village.org>
next in thread | previous in thread | raw e-mail | index | archive | help
"M. Warner Losh" wrote:
>
>
> I've heard all kinds of reports for Prism 2 cards not working with 128
> bit WEP. Maybe we need to do this for all PRISM 2 cards?
>
Yup. I think they all benefit. I tried FUJITA Kazutoshi's changes
on three different prism2 interfaces (a Linksys WMP-11, a D-Link DWL-650,
and a Linksys WPC-11 v2.5) and now they are all talking 104-bit WEP.
My FreeBSD machines now talk to my XP machine in 104-bit mode which
they never did before.
I think the breakthrough is setting the key length on ALL the keys
to the same value.
Thanks for tracking that down, Fujita.
Here's the changes as I'm using them:
*** if_wi.c 2002/02/16 03:52:16 1.6
--- if_wi.c 2002/02/24 06:37:58
***************
*** 1155,1174 ****
ltv = &p2ltv;
break;
case WI_RID_DEFLT_CRYPT_KEYS:
{
int error;
struct wi_ltv_str ws;
struct wi_ltv_keys *wk =
(struct wi_ltv_keys *)ltv;
for (i = 0; i < 4; i++) {
! ws.wi_len = 4;
ws.wi_type = WI_RID_P2_CRYPT_KEY0 + i;
memcpy(ws.wi_str,
! &wk->wi_keys[i].wi_keydat, 5);
! ws.wi_str[5] = '\0';
error = wi_write_record(sc,
(struct wi_ltv_gen *)&ws);
if (error)
return error;
}
--- 1162,1186 ----
ltv = &p2ltv;
break;
case WI_RID_DEFLT_CRYPT_KEYS:
{
int error;
+ int keylen;
struct wi_ltv_str ws;
struct wi_ltv_keys *wk =
(struct wi_ltv_keys *)ltv;
+ keylen = wk->wi_keys[ sc->wi_tx_key ].wi_keylen;
+
for (i = 0; i < 4; i++) {
!
! bzero(&ws, sizeof(ws));
! ws.wi_len = (keylen>5) ? 8:4;
ws.wi_type = WI_RID_P2_CRYPT_KEY0 + i;
memcpy(ws.wi_str,
! &wk->wi_keys[i].wi_keydat, keylen);
!
error = wi_write_record(sc,
(struct wi_ltv_gen *)&ws);
if (error)
return error;
}
--
------------------------------------------------------------------------
Thomas Skibo skibo@pacbell.net
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-mobile" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3C78932C.27319015>
