Date: Thu, 16 Nov 2006 04:04:07 +0000 (UTC) From: John Polstra <jdp@FreeBSD.org> To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/dev/bce if_bce.c Message-ID: <200611160404.kAG447gi066614@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
jdp 2006-11-16 04:04:07 UTC FreeBSD src repository Modified files: sys/dev/bce if_bce.c Log: In bce_start_locked, check the used_tx_bd count rather than the descriptor's mbuf pointer to see if the transmit ring is full. The mbuf pointer is set only in the last descriptor of a multi-descriptor packet. By relying on the mbuf pointers of the earlier descriptors, the driver would sometimes overwrite a descriptor belonging to a packet that wasn't completed yet. Also, tx_chain_prod wasn't updated inside the loop, causing the wrong descriptor to be checked after the first iteration. The upshot of all this was the loss of some transmitted packets at medium to high packet rates. In bce_tx_encap, remove a couple of old statements that shuffled around the tx_mbuf_map pointers. These now correspond 1-to-1 with the transmit descriptors, and they are not supposed to be changed. Correct a couple of inaccurate comments. MFC after: 1 month Revision Changes Path 1.20 +8 -8 src/sys/dev/bce/if_bce.c
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200611160404.kAG447gi066614>