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 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).