From: Jeff Garzik <jgarzik@pobox.com>
To: Jesse Huang <jesse@icplus.com.tw>
Cc: linux-kernel@vger.kernel.org, netdev@vger.kernel.org, akpm@osdl.org
Subject: Re: [PATCH 2/6] IP100A Fix Tx pause bug
Date: Fri, 18 Aug 2006 07:27:33 -0400 [thread overview]
Message-ID: <44E5A425.8020200@pobox.com> (raw)
In-Reply-To: <1155841445.4532.10.camel@localhost.localdomain>
Jesse Huang wrote:
> @@ -1099,6 +1099,10 @@ reset_tx (struct net_device *dev)
> }
> np->cur_tx = np->dirty_tx = 0;
> np->cur_task = 0;
> +
> + np->last_tx=0;
add whitespace, to make it look like all other assignments:
s/=/ = /
> + iowrite8(127, ioaddr + TxDMAPollPeriod);
> +
what does the value 127 represent?
> iowrite16 (StatsEnable | RxEnable | TxEnable, ioaddr + MACCtrl1);
> return 0;
> }
> @@ -1156,29 +1160,29 @@ static irqreturn_t intr_handler(int irq,
> np->stats.tx_fifo_errors++;
> if (tx_status & 0x02)
> np->stats.tx_window_errors++;
> - /*
> - ** This reset has been verified on
> - ** DFE-580TX boards ! phdm@macqel.be.
> - */
> - if (tx_status & 0x10) { /* TxUnderrun */
> - unsigned short txthreshold;
> -
> - txthreshold = ioread16 (ioaddr + TxStartThresh);
> - /* Restart Tx FIFO and transmitter */
> - sundance_reset(dev, (NetworkReset|FIFOReset|TxReset) << 16);
> - iowrite16 (txthreshold, ioaddr + TxStartThresh);
> - /* No need to reset the Tx pointer here */
> +
> + /* FIFO ERROR need to be reset tx */
> + if (tx_status & 0x10) { /* Reset the Tx. */
> + spin_lock(&np->lock);
> + reset_tx(dev);
> + spin_unlock(&np->lock);
> + }
> + if (tx_status & 0x1e) {
> + /* need to make sure tx enabled */
> + int i = 10;
> + do {
> + iowrite16 (ioread16(ioaddr + MACCtrl1) | TxEnable, ioaddr + MACCtrl1);
> + if (ioread16(ioaddr + MACCtrl1) & TxEnabled)
> + break;
> + mdelay(1);
> + } while (--i);
> }
> - /* Restart the Tx. */
> - iowrite16 (TxEnable, ioaddr + MACCtrl1);
> }
> - /* Yup, this is a documentation bug. It cost me *hours*. */
> +
> iowrite16 (0, ioaddr + TxStatus);
> - if (tx_cnt < 0) {
> - iowrite32(5000, ioaddr + DownCounter);
> - break;
> - }
> tx_status = ioread16 (ioaddr + TxStatus);
> + if (tx_cnt < 0)
> + break;
> }
> hw_frame_id = (tx_status >> 8) & 0xff;
> } else {
> @@ -1244,6 +1248,9 @@ static irqreturn_t intr_handler(int irq,
> if (netif_msg_intr(np))
> printk(KERN_DEBUG "%s: exiting interrupt, status=%#4.4x.\n",
> dev->name, ioread16(ioaddr + IntrStatus));
> +
> + iowrite32(5000, ioaddr + DownCounter);
> +
> return IRQ_RETVAL(handled);
DownCounter should not be written unconditionally. Consider shared
interrupts, where sundance performs no work, and handled==0.
Jeff
next prev parent reply other threads:[~2006-08-18 11:27 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-08-17 19:04 [PATCH 2/6] IP100A Fix Tx pause bug Jesse Huang
2006-08-18 11:27 ` Jeff Garzik [this message]
2006-08-22 1:17 ` Jesse Huang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=44E5A425.8020200@pobox.com \
--to=jgarzik@pobox.com \
--cc=akpm@osdl.org \
--cc=jesse@icplus.com.tw \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).