cvs commit: src/sys/dev/cardbus cardbus.c

Kevin Oberman oberman at es.net
Tue Mar 8 22:47:58 GMT 2005


> Date: Tue, 08 Mar 2005 15:33:34 -0700
> From: Scott Long <scottl at samsco.org>
> 
> Kevin Oberman wrote:
> >>Date: Tue, 08 Mar 2005 09:35:35 -0700 (MST)
> >>From: "M. Warner Losh" <imp at bsdimp.com>
> >>Sender: owner-cvs-all at freebsd.org
> >>
> >>In message: <20050308072731.GI94451 at obiwan.tataz.chchile.org>
> >>            Jeremie Le Hen <jeremie at le-hen.org> writes:
> >>: > Both laptops are Dell (Inspiron 4150 and Inspiron 8100).
> >>: 
> >>: I don't know if it cares, but mine is a Dell Latitute CPx.
> >>: 
> >>: dmesg(8) is attached, with cardbus rev 1.48.
> >>
> >>This looks like it is working to me.  Is that correct?  I tried it
> >>last night on my Sony and got two interesting results.  The rl card I
> >>have just worked, and the dc card appeared to work, but locked up the
> >>system completely.  I've noticed some anomalies with the lights on the
> >>card (which indicate power issues), which may be the cause of some of
> >>these problems.  I'll look into those when I get the chance (maybe
> >>Thursday night unless work is exceptionally non-busy before then).
> > 
> > 
> > The if_dc issues is with busdma and Scott is aware of it. (Hopefully a
> > fix is coming soon.) In the meantime I have a patch to get dc to work
> > again. It's a kludge, but it at least lives.
> > 
> > 
> > ------------------------------------------------------------------------
> > 
> > --- sys/pci/if_dc.c~	Fri Oct 15 17:53:44 2004
> > +++ sys/pci/if_dc.c	Mon Dec 20 14:22:48 2004
> > @@ -2151,8 +2151,8 @@
> >  	}
> >  
> >  	/* Allocate a busdma tag for mbufs. */
> >  	error = bus_dma_tag_create(NULL, PAGE_SIZE, 0, BUS_SPACE_MAXADDR_32BIT,
> > -	    BUS_SPACE_MAXADDR, NULL, NULL, MCLBYTES * DC_TX_LIST_CNT,
> > +	    BUS_SPACE_MAXADDR, NULL, NULL, MCLBYTES,
> >  	    DC_TX_LIST_CNT, MCLBYTES, 0, NULL, NULL, &sc->dc_mtag);
> >  	if (error) {
> >  		printf("dc%d: failed to allocate busdma tag\n", unit);
> 
> I think that this patch is actually the correct thing to do.  I also
> believe that the alignment argument should be changed from PAGE_SIZE to
> '1'.  Considering that busdma never used to do alignment fixups, this
> change should effectively be a NOP for the driver, and will avoid the
> whole bounce-buffer mess.  Care to give this a sanity test?

Oops! I sent the wrong diff. Sorry, It was an older one. The current one
is:
--- sys/pci/if_dc.c.orig        Thu Mar  3 16:00:57 2005
+++ sys/pci/if_dc.c     Tue Mar  8 14:41:20 2005
@@ -2147,8 +2147,8 @@
        }

        /* Allocate a busdma tag for mbufs. */
-       error = bus_dma_tag_create(NULL, PAGE_SIZE, 0, BUS_SPACE_MAXADDR_32BIT,
-           BUS_SPACE_MAXADDR, NULL, NULL, MCLBYTES * DC_TX_LIST_CNT,
+       error = bus_dma_tag_create(NULL, 1, 0, BUS_SPACE_MAXADDR_32BIT,
+           BUS_SPACE_MAXADDR, NULL, NULL, MCLBYTES,
            DC_TX_LIST_CNT, MCLBYTES, 0, NULL, NULL, &sc->dc_mtag);
        if (error) {
                printf("dc%d: failed to allocate busdma tag\n", unit);

I can confirm that this one makes my Xircom card work just fine. It
would be nice to get this committed if it's an acceptable fix. I have no
idea who should do this as if_dc does not show up in MAINTAINERS. I guess
most any committer (Scott...Warner?) can do it.
-- 
R. Kevin Oberman, Network Engineer
Energy Sciences Network (ESnet)
Ernest O. Lawrence Berkeley National Laboratory (Berkeley Lab)
E-mail: oberman at es.net			Phone: +1 510 486-8634


More information about the cvs-src mailing list