Date: Sat, 25 Aug 2001 15:57:14 -0700 (PDT)
From: Matt Dillon <dillon@earth.backplane.com>
To: John Baldwin <jhb@FreeBSD.ORG>, wpaul@FreeBSD.ORG (Bill Paul)
Cc: freebsd-stable@FreeBSD.ORG
Subject: Weird problem with LinkSys WIFI card ("Instant Wireless ") - with patch
Message-ID: <200108252257.f7PMvE311535@earth.backplane.com>
next in thread | raw e-mail | index | archive | help
I purchased a LinkSys 'wireless network pc card', e.g. a pcmcia WIFI
card for my laptop today. The pccard ID is "Instant Wireless ",
" Network PC CARD".
Everything seemed to come up and work *except* that the IP stack did
not appear to see the incoming packets. tcpdump *did* see them, the
IP stack did not. This is on the latest -stable.
I tracked it down to two issues:
* First issue, in i386/isa/if_wi.c (in -stable). The rx_frame.wi_status
for the valid incoming packets is 0, which means that it does not
match the first part of the if () condition on line 596.
* Second issue. The 'else' condition for that if never sets
eh->ether_type, causing it to be garbage and leaving the IP stack
believing that the packet is garbage and should be thrown away.
My solution was to allow rx_frame.wi_status of 0 in the first part of the
if(). This probably isn't the correct solution, but it made the card
work. I didn't try to fix the 'else' portion because, really, I'm
just shooting in the dark here.
I realize this driver is in the attic on -current, but it appears to be
the only recognized driver in -stable for the LinkSys WIFI card.
I'd like to see official support for this in -stable since it appears to
be so easy to do, but I would like one of our two experts to determine
what the proper solution is.
Thanks,
-Matt
Index: if_wi.c
===================================================================
RCS file: /home/ncvs/src/sys/i386/isa/Attic/if_wi.c,v
retrieving revision 1.18.2.11
diff -u -r1.18.2.11 if_wi.c
--- if_wi.c 2001/08/25 00:48:25 1.18.2.11
+++ if_wi.c 2001/08/25 22:49:44
@@ -595,7 +595,8 @@
if (rx_frame.wi_status == WI_STAT_1042 ||
rx_frame.wi_status == WI_STAT_TUNNEL ||
- rx_frame.wi_status == WI_STAT_WMP_MSG) {
+ rx_frame.wi_status == WI_STAT_WMP_MSG ||
+ rx_frame.wi_status == 0) {
if((rx_frame.wi_dat_len + WI_SNAPHDR_LEN) > MCLBYTES) {
device_printf(sc->dev, "oversized packet received "
"(wi_dat_len=%d, wi_status=0x%x)\n",
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-stable" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200108252257.f7PMvE311535>
