Date: Sun, 4 Jan 2004 13:51:02 -0800 (PST) From: Don Lewis <truckman@FreeBSD.org> To: dejan.lesjak@ijs.si Cc: wpaul@FreeBSD.org Subject: Re: 5.2-RC oerrs and collisions on dc0 Message-ID: <200401042151.i04Lp27E009737@gw.catspoiler.org> In-Reply-To: <200401041115.29188.dejan.lesjak@ijs.si>
next in thread | previous in thread | raw e-mail | index | archive | help
I just took a closer look at the busdma diff, and this change to dc_txeof() looks very suspicious: @@ -2663,7 +2809,7 @@ if (txstat & DC_TXSTAT_OWN) break; - if (!(cur_tx->dc_ctl & DC_TXCTL_LASTFRAG) || + if (!(cur_tx->dc_ctl & DC_TXCTL_FIRSTFRAG) || cur_tx->dc_ctl & DC_TXCTL_SETUP) { if (cur_tx->dc_ctl & DC_TXCTL_SETUP) { /* The code in the "if" block ends with a "continue" which will cause the error handling code to be skipped if the "if" condition is true. I'm pretty sure that the error status bits are only set in the last descriptor for the frame, so we want to execute the "continue" unless the DC_TXCTL_LASTFRAG bit is set. Try reverting this part of the busdma change.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200401042151.i04Lp27E009737>