Skip site navigation (1)Skip section navigation (2)
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>