netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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);

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