From: Jakub Kicinski <kuba@kernel.org>
To: FUJITA Tomonori <fujita.tomonori@gmail.com>
Cc: netdev@vger.kernel.org, andrew@lunn.ch, horms@kernel.org,
jiri@resnulli.us, pabeni@redhat.com, linux@armlinux.org.uk,
hfdevel@gmx.net, naveenm@marvell.com, jdamato@fastly.com
Subject: Re: [PATCH net-next v10 4/7] net: tn40xx: add basic Tx handling
Date: Thu, 13 Jun 2024 17:48:08 -0700 [thread overview]
Message-ID: <20240613174808.67eb994c@kernel.org> (raw)
In-Reply-To: <20240611045217.78529-5-fujita.tomonori@gmail.com>
On Tue, 11 Jun 2024 13:52:14 +0900 FUJITA Tomonori wrote:
> + /* 1. load MAC (obsolete) */
> + /* 2. disable Rx (and Tx) */
> + tn40_write_reg(priv, TN40_REG_GMAC_RXF_A, 0);
> + mdelay(100);
Why mdelay()? 100ms of CPU spinning in a loop is not great.
I only see calls to tn40_sw_reset() from open and close, both
of which can sleep so you should be able to use msleep().
You can test with CONFIG_DEBUG_ATOMIC_SLEEP enabled to confirm.
> + /* 3. Disable port */
> + tn40_write_reg(priv, TN40_REG_DIS_PORT, 1);
> + /* 4. Disable queue */
> + tn40_write_reg(priv, TN40_REG_DIS_QU, 1);
> + /* 5. Wait until hw is disabled */
> + for (i = 0; i < 50; i++) {
> + if (tn40_read_reg(priv, TN40_REG_RST_PORT) & 1)
> + break;
> + mdelay(10);
read_poll_timeout() ?
> + }
> + if (i == 50)
> + netdev_err(priv->ndev, "SW reset timeout. continuing anyway\n");
> + if (unlikely(vid >= 4096)) {
can the core actually call with an invalid vid? I don't thinks so..
> + struct tn40_priv *priv = netdev_priv(ndev);
> +
> + u32 rxf_val = TN40_GMAC_RX_FILTER_AM | TN40_GMAC_RX_FILTER_AB |
> + TN40_GMAC_RX_FILTER_OSEN | TN40_GMAC_RX_FILTER_TXFC;
> + int i;
> +
nit: no empty lines between variable declarations
> + u8 hash;
> + struct netdev_hw_addr *mclist;
> + u32 reg, val;
nit: declaration lines longest to shortest within a block
> +static void tn40_get_stats(struct net_device *ndev,
> + struct rtnl_link_stats64 *stats)
> +{
> + struct tn40_priv *priv = netdev_priv(ndev);
> +
> + netdev_stats_to_stats64(stats, &priv->net_stats);
You should hold the stats in driver priv, probably:
from struct net_device:
struct net_device_stats stats; /* not used by modern drivers */
> +static int tn40_priv_init(struct tn40_priv *priv)
> +{
> + int ret;
> +
> + tn40_set_link_speed(priv, 0);
> +
> + ret = tn40_hw_reset(priv);
> + if (ret)
> + return ret;
But probe already called reset, is there a reason to reset multiple
times? Would be good to add some reason why in a comment (if you know)
> + /* Set GPIO[9:0] to output 0 */
> + tn40_write_reg(priv, 0x51E0, 0x30010006); /* GPIO_OE_ WR CMD */
> + tn40_write_reg(priv, 0x51F0, 0x0); /* GPIO_OE_ DATA */
> + tn40_write_reg(priv, TN40_REG_MDIO_CMD_STAT, 0x3ec8);
> +
> + // we use tx descriptors to load a firmware.
nit: stick to a single style of comments? ;)
> + ret = tn40_create_tx_ring(priv);
> + if (ret)
> + return ret;
> + ret = tn40_fw_load(priv);
> + tn40_destroy_tx_ring(priv);
next prev parent reply other threads:[~2024-06-14 0:48 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-11 4:52 [PATCH net-next v10 0/7] add ethernet driver for Tehuti Networks TN40xx chips FUJITA Tomonori
2024-06-11 4:52 ` [PATCH net-next v10 1/7] PCI: add Edimax Vendor ID to pci_ids.h FUJITA Tomonori
2024-06-11 15:01 ` Bjorn Helgaas
2024-06-12 3:48 ` FUJITA Tomonori
2024-06-11 4:52 ` [PATCH net-next v10 2/7] net: tn40xx: add pci driver for Tehuti Networks TN40xx chips FUJITA Tomonori
2024-06-14 0:25 ` Jakub Kicinski
2024-06-14 2:50 ` FUJITA Tomonori
2024-06-11 4:52 ` [PATCH net-next v10 3/7] net: tn40xx: add register defines FUJITA Tomonori
2024-06-11 4:52 ` [PATCH net-next v10 4/7] net: tn40xx: add basic Tx handling FUJITA Tomonori
2024-06-14 0:30 ` Jakub Kicinski
2024-06-14 2:43 ` FUJITA Tomonori
2024-06-15 7:44 ` Hans-Frieder Vogt
2024-06-15 9:02 ` FUJITA Tomonori
2024-06-15 9:40 ` Hans-Frieder Vogt
2024-06-15 18:33 ` Andrew Lunn
2024-06-16 12:46 ` FUJITA Tomonori
2024-06-16 14:59 ` Andrew Lunn
2024-06-17 5:44 ` FUJITA Tomonori
2024-06-17 13:58 ` Andrew Lunn
2024-06-18 6:27 ` FUJITA Tomonori
2024-06-14 0:48 ` Jakub Kicinski [this message]
2024-06-14 2:41 ` FUJITA Tomonori
2024-06-14 15:23 ` Jakub Kicinski
2024-06-15 6:41 ` FUJITA Tomonori
2024-06-11 4:52 ` [PATCH net-next v10 5/7] net: tn40xx: add basic Rx handling FUJITA Tomonori
2024-06-11 4:52 ` [PATCH net-next v10 6/7] net: tn40xx: add mdio bus support FUJITA Tomonori
2024-06-11 4:52 ` [PATCH net-next v10 7/7] net: tn40xx: add phylink support FUJITA Tomonori
2024-06-13 16:14 ` [PATCH net-next v10 0/7] add ethernet driver for Tehuti Networks TN40xx chips Joe Damato
2024-06-17 22:04 ` FUJITA Tomonori
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=20240613174808.67eb994c@kernel.org \
--to=kuba@kernel.org \
--cc=andrew@lunn.ch \
--cc=fujita.tomonori@gmail.com \
--cc=hfdevel@gmx.net \
--cc=horms@kernel.org \
--cc=jdamato@fastly.com \
--cc=jiri@resnulli.us \
--cc=linux@armlinux.org.uk \
--cc=naveenm@marvell.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.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.