From: Joe Perches <joe@perches.com>
To: Po-Yu Chuang <ratbert.chuang@gmail.com>
Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
bhutchings@solarflare.com, eric.dumazet@gmail.com,
dilinger@queued.net, Po-Yu Chuang <ratbert@faraday-tech.com>
Subject: Re: [PATCH v3] net: add Faraday FTMAC100 10/100 Ethernet driver
Date: Thu, 20 Jan 2011 11:00:09 -0800 [thread overview]
Message-ID: <1295550009.28001.59.camel@Joe-Laptop> (raw)
In-Reply-To: <1295537418-2057-1-git-send-email-ratbert.chuang@gmail.com>
On Thu, 2011-01-20 at 23:30 +0800, Po-Yu Chuang wrote:
> drivers/net/ftmac100.c | 1243 ++++++++++++++++++++++++++++++++++++++++++++++++
[]
> +/******************************************************************************
> + * struct napi_struct functions
> + *****************************************************************************/
> +static int ftmac100_poll(struct napi_struct *napi, int budget)
> +{
> + struct ftmac100 *priv = container_of(napi, struct ftmac100, napi);
> + struct net_device *netdev = priv->netdev;
> + unsigned int status;
> + bool completed = true;
> + int rx = 0;
> +
> + status = ioread32(priv->base + FTMAC100_OFFSET_ISR);
> +
> + if (status & (FTMAC100_INT_RPKT_FINISH | FTMAC100_INT_NORXBUF)) {
> + /*
> + * FTMAC100_INT_RPKT_FINISH:
> + * RX DMA has received packets into RX buffer successfully
> + *
> + * FTMAC100_INT_NORXBUF:
> + * RX buffer unavailable
> + */
> + bool retry;
> +
> + do {
> + retry = ftmac100_rx_packet(priv, &rx);
> + } while (retry && rx < budget);
> +
> + if (retry && rx == budget)
> + completed = false;
Is it useful to retry the NORXBUF case?
> + }
> +
> + if (status & FTMAC100_INT_NORXBUF) {
> + /* RX buffer unavailable */
> + if (net_ratelimit())
> + netdev_info(netdev, "INT_NORXBUF\n");
> +
> + netdev->stats.rx_over_errors++;
> + }
Perhaps this "if (status & FTMAC100_INT_NORXBUF)" block should be
moved into the test block above it before the retry?
> +
> + if (status & (FTMAC100_INT_XPKT_OK | FTMAC100_INT_XPKT_LOST)) {
> + /*
> + * FTMAC100_INT_XPKT_OK:
> + * packet transmitted to ethernet successfully
> + *
> + * FTMAC100_INT_XPKT_LOST:
> + * packet transmitted to ethernet lost due to late
> + * collision or excessive collision
> + */
> + ftmac100_tx_complete(priv);
> + }
> +
> + if (status & FTMAC100_INT_RPKT_LOST) {
> + /* received packet lost due to RX FIFO full */
> + if (net_ratelimit())
> + netdev_info(netdev, "INT_RPKT_LOST\n");
> +
> + netdev->stats.rx_fifo_errors++;
> + }
> +
> + if (status & FTMAC100_INT_AHB_ERR) {
> + /* AHB error */
> + if (net_ratelimit())
> + netdev_info(netdev, "INT_AHB_ERR\n");
> +
> + /* do nothing */
> + }
> +
> + if (status & FTMAC100_INT_PHYSTS_CHG) {
> + /* PHY link status change */
> + if (net_ratelimit())
> + netdev_info(netdev, "INT_PHYSTS_CHG\n");
> +
> + mii_check_link(&priv->mii);
> + }
> +
> + if (completed) {
> + /* stop polling */
> + napi_complete(napi);
> + ftmac100_enable_all_int(priv);
> + }
> +
> + return rx;
> +}
It's possible to miss multiple states because of the ratelimit.
If multiple ISR status bits are possible, it might be better to
combine all netdev_info uses into a single call.
Something like:
if ((status & (FTMAC100_INT_NORXBUF | FTMAC100_INT_RPKT_LOST |
FTMAC100_INT_AHB_ERR | FTMAC100_INT_PHYSTS_CHG)) &&
net_ratelimit())
netdev_info(netdev, "ISR status: %x%s%s%s%s\n",
status & FTMAC100_INT_NORXBUF ? ": INT_NORXBUF" : "",
status & FTMAC100_INT_RPKT_LOST ? ": INT_RPKT_LOST" : "",
status & FTMAC100_INT_AHB_ERR ? ": INT_AHB_ERR" : "",
status & FTMAC100_INT_PHYSTS_CHG ? " : INT_PHYSTS_CHG" : "");
next prev parent reply other threads:[~2011-01-20 19:00 UTC|newest]
Thread overview: 74+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-01-13 11:49 [PATCH] net: add Faraday FTMAC100 10/100 Ethernet driver Po-Yu Chuang
2011-01-13 14:03 ` Ben Hutchings
2011-01-14 5:37 ` Po-Yu Chuang
2011-01-13 14:22 ` Eric Dumazet
2011-01-13 16:29 ` Andres Salomon
2011-01-14 6:44 ` Po-Yu Chuang
2011-01-14 6:56 ` Po-Yu Chuang
2011-01-13 15:39 ` Joe Perches
2011-01-14 6:35 ` Po-Yu Chuang
[not found] ` <1294959948.4114.189.camel@Joe-Laptop>
2011-01-14 6:49 ` Po-Yu Chuang
2011-01-17 9:21 ` [PATCH v2] " Po-Yu Chuang
2011-01-17 17:19 ` Joe Perches
2011-01-19 9:40 ` Po-Yu Chuang
2011-01-19 12:46 ` Ben Hutchings
2011-01-19 16:41 ` Joe Perches
2011-01-20 5:30 ` Po-Yu Chuang
2011-01-20 8:46 ` Joe Perches
2011-01-17 17:29 ` Eric Dumazet
2011-01-17 18:58 ` Ben Hutchings
2011-01-17 20:39 ` Eric Dumazet
2011-01-17 18:21 ` Eric Dumazet
2011-01-18 3:08 ` Po-Yu Chuang
2011-01-19 9:20 ` Po-Yu Chuang
2011-01-20 15:30 ` [PATCH v3] " Po-Yu Chuang
2011-01-20 15:35 ` Eric Dumazet
2011-01-20 15:43 ` Po-Yu Chuang
2011-01-20 15:41 ` Eric Dumazet
2011-01-20 15:54 ` Po-Yu Chuang
2011-01-20 17:56 ` Joe Perches
2011-01-21 3:35 ` Po-Yu Chuang
2011-01-20 19:00 ` Joe Perches [this message]
2011-01-21 5:03 ` Po-Yu Chuang
[not found] ` <1295592411.6795.10.camel@Joe-Laptop>
2011-01-21 7:06 ` Po-Yu Chuang
2011-01-20 19:01 ` Michał Mirosław
2011-01-21 3:37 ` Po-Yu Chuang
2011-01-21 7:55 ` [PATCH v4] " Po-Yu Chuang
2011-01-21 9:08 ` Eric Dumazet
2011-01-24 8:07 ` Po-Yu Chuang
2011-01-21 12:26 ` Michał Mirosław
2011-01-24 8:26 ` Po-Yu Chuang
2011-01-24 20:22 ` Michał Mirosław
2011-01-25 2:46 ` Po-Yu Chuang
2011-02-01 3:56 ` Po-Yu Chuang
2011-02-01 4:35 ` David Miller
2011-02-24 7:27 ` Po-Yu Chuang
2011-02-24 7:51 ` David Miller
2011-02-24 8:07 ` Po-Yu Chuang
2011-02-24 8:22 ` Eric Dumazet
2011-02-24 9:29 ` [PATCH ref0] " Po-Yu Chuang
2011-02-24 17:39 ` Eric Dumazet
2011-02-24 17:48 ` Eric Dumazet
2011-02-25 2:32 ` Po-Yu Chuang
2011-02-25 9:45 ` Po-Yu Chuang
2011-02-25 10:52 ` Eric Dumazet
2011-02-25 18:34 ` David Miller
2011-02-25 18:45 ` Eric Dumazet
2011-02-25 18:47 ` Eric Dumazet
2011-03-01 5:45 ` Po-Yu Chuang
2011-03-01 5:53 ` Eric Dumazet
2011-02-25 9:57 ` [PATCH v6] " Po-Yu Chuang
2011-02-25 11:40 ` Eric Dumazet
2011-03-01 5:20 ` Po-Yu Chuang
2011-03-01 5:26 ` Eric Dumazet
2011-03-01 5:45 ` Eric Dumazet
2011-03-01 5:51 ` Po-Yu Chuang
2011-03-01 5:54 ` Eric Dumazet
2011-03-01 5:59 ` Eric Dumazet
2011-03-01 6:48 ` [PATCH] " Po-Yu Chuang
2011-03-01 7:27 ` Eric Dumazet
2011-03-03 20:19 ` David Miller
2011-02-24 18:43 ` [PATCH v4] " David Miller
2011-01-24 12:39 ` [PATCH v5] " Po-Yu Chuang
2011-01-24 15:07 ` Eric Dumazet
2011-01-25 2:46 ` Po-Yu Chuang
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=1295550009.28001.59.camel@Joe-Laptop \
--to=joe@perches.com \
--cc=bhutchings@solarflare.com \
--cc=dilinger@queued.net \
--cc=eric.dumazet@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=ratbert.chuang@gmail.com \
--cc=ratbert@faraday-tech.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.