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>