Date: Tue, 22 Dec 2009 23:57:10 +0000 (UTC) From: Pyun YongHyeon <yongari@FreeBSD.org> To: cvs-src-old@freebsd.org Subject: cvs commit: src/sys/dev/ste if_ste.c if_stereg.h Message-ID: <200912222357.nBMNvPQo095869@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
yongari 2009-12-22 23:57:10 UTC FreeBSD src repository Modified files: sys/dev/ste if_ste.c if_stereg.h Log: SVN rev 200884 on 2009-12-22 23:57:10Z by yongari Reimplement Tx status error handler as recommended by datasheet. If ste(4) encounter TX underrun or excessive collisions the TX MAC of controller is stalled so driver should wake it up again. TX underrun requires increasing TX threshold value to minimize further TX underruns. Previously ste(4) used to reset controller to recover from TX underrun, excessive collision and reclaiming error. However datasheet says only TX underrun requires resetting entire controller. So implement ste_restart_tx() that restarts TX MAC and do not perform full reset except TX underrun case. Now ste(4) uses CSR_READ_2 instead of CSR_READ_1 to read STE_TX_STATUS register. This way ste(4) will also read frame id value and we can write the same value back to STE_TX_FRAMEID register instead of overwriting it to 0. The datasheet was wrong in write back of STE_TX_STATUS so add some comments why we do so. Also always invoke ste_txeoc() after ste_txeof() in ste_poll as without reading TX status register can stall TX MAC. Revision Changes Path 1.18 +71 -21 src/sys/dev/ste/if_ste.c 1.10 +5 -0 src/sys/dev/ste/if_stereg.h
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200912222357.nBMNvPQo095869>