All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Lunn <andrew@lunn.ch>
To: Jose Abreu <Jose.Abreu@synopsys.com>
Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	Joao Pinto <Joao.Pinto@synopsys.com>,
	"David S . Miller" <davem@davemloft.net>,
	Giuseppe Cavallaro <peppe.cavallaro@st.com>,
	Alexandre Torgue <alexandre.torgue@st.com>
Subject: Re: [PATCH net-next 10/11] net: stmmac: Introduce selftests support
Date: Thu, 9 May 2019 04:23:30 +0200	[thread overview]
Message-ID: <20190509022330.GA23758@lunn.ch> (raw)
In-Reply-To: <be9099bbf8783b210dc9034a8b82219984f03250.1557300602.git.joabreu@synopsys.com>

> +static int stmmac_test_eee(struct stmmac_priv *priv)
> +{
> +	struct stmmac_extra_stats *initial, *final;
> +	int timeout = 100;
> +	int ret;
> +
> +	ret = stmmac_test_loopback(priv);
> +	if (ret)
> +		goto out_free_final;
> +
> +	/* We have no traffic in the line so, sooner or later it will go LPI */
> +	while (--timeout) {
> +		memcpy(final, &priv->xstats, sizeof(*final));
> +
> +		if (final->irq_tx_path_in_lpi_mode_n >
> +		    initial->irq_tx_path_in_lpi_mode_n)
> +			break;
> +		msleep(100);
> +	}
> +
> +	if (!timeout) {
> +		ret = -ETIMEDOUT;
> +		goto out_free_final;
> +	}

Retries would be a better name than timeout.

Also, 100 * 100 ms seems like a long time.

> +static int stmmac_filter_check(struct stmmac_priv *priv)
> +{
> +	if (!(priv->dev->flags & IFF_PROMISC))
> +		return 0;
> +
> +	netdev_warn(priv->dev, "Test can't be run in promiscuous mode!\n");
> +	return 1;

Maybe return EOPNOTSUPP here,

> +}
> +
> +static int stmmac_test_hfilt(struct stmmac_priv *priv)
> +{
> +	unsigned char gd_addr[ETH_ALEN] = {0x01, 0x0c, 0xcd, 0x04, 0x00, 0x00};
> +	unsigned char bd_addr[ETH_ALEN] = {0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b};

What does gd and bd mean?

> +	struct stmmac_packet_attrs attr = { };
> +	int ret;
> +
> +	if (stmmac_filter_check(priv))
> +		return -EOPNOTSUPP;

and just return the error code from the call.

> +
> +	ret = dev_mc_add(priv->dev, gd_addr);
> +	if (ret)
> +		return ret;
> +
> +	attr.dst = gd_addr;
> +
> +	/* Shall receive packet */
> +	ret = __stmmac_test_loopback(priv, &attr);
> +	if (ret)
> +		goto cleanup;
> +
> +	attr.dst = bd_addr;
> +
> +	/* Shall NOT receive packet */
> +	ret = __stmmac_test_loopback(priv, &attr);
> +	ret = !ret;

What is this test testing? gd is a multicast, where as bd is not.  I
expect the hardware treats multicast different to unicast. So it would
make more sense to test two different multicast addresses, one which
has been added via dev_mc_addr, and one that has not?

> +
> +cleanup:
> +	dev_mc_del(priv->dev, gd_addr);
> +	return ret;
> +}
> +
> +static int stmmac_test_pfilt(struct stmmac_priv *priv)
> +{
> +	unsigned char gd_addr[ETH_ALEN] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06};
> +	unsigned char bd_addr[ETH_ALEN] = {0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b};
> +	struct stmmac_packet_attrs attr = { };
> +	int ret;
> +
> +	if (stmmac_filter_check(priv))
> +		return -EOPNOTSUPP;
> +
> +	ret = dev_uc_add(priv->dev, gd_addr);
> +	if (ret)
> +		return ret;
> +
> +	attr.dst = gd_addr;
> +
> +	/* Shall receive packet */
> +	ret = __stmmac_test_loopback(priv, &attr);
> +	if (ret)
> +		goto cleanup;

gb is a multicast address. Does dev_uc_add() return an error? If it
does not we should not expect it to actually work, since a multicast
address should not match a unicast address?

You also seem to be missing a test for adding a unicast address via
dev_uc_add() and receiving packets for that address, but not receiving
multicast packets.

> +static const struct stmmac_test {
> +	char name[ETH_GSTRING_LEN];
> +	int lb;
> +	int (*fn)(struct stmmac_priv *priv);
> +} stmmac_selftests[] = {
> +	{
> +		.name = "MAC Loopback         ",
> +		.lb = STMMAC_LOOPBACK_MAC,
> +		.fn = stmmac_test_loopback,

stmmac_test_mac_loopback might be a better name.

> +	}, {
> +		.name = "PHY Loopback         ",
> +		.lb = STMMAC_LOOPBACK_PHY,
> +		.fn = stmmac_test_phy_loopback,
> +	}, {

  Andrew

  reply	other threads:[~2019-05-09  2:23 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-08  7:51 [PATCH net-next 00/11] net: stmmac: Selftests Jose Abreu
2019-05-08  7:51 ` [PATCH net-next 01/11] net: stmmac: Add MAC loopback callback to HWIF Jose Abreu
2019-05-08  7:51 ` [PATCH net-next 02/11] net: stmmac: dwmac100: Add MAC loopback support Jose Abreu
2019-05-08  7:51 ` [PATCH net-next 03/11] net: stmmac: dwmac1000: " Jose Abreu
2019-05-08  7:51 ` [PATCH net-next 04/11] net: stmmac: dwmac4/5: " Jose Abreu
2019-05-08  7:51 ` [PATCH net-next 05/11] net: stmmac: dwxgmac2: " Jose Abreu
2019-05-08  7:51 ` [PATCH net-next 06/11] net: stmmac: Switch MMC functions to HWIF callbacks Jose Abreu
2019-05-08  7:51 ` [PATCH net-next 07/11] net: stmmac: dwmac1000: Also pass control frames while in promisc mode Jose Abreu
2019-05-08 12:04   ` Andrew Lunn
2019-05-08 14:53     ` Jose Abreu
2019-05-08  7:51 ` [PATCH net-next 08/11] net: stmmac: dwmac4/5: " Jose Abreu
2019-05-08  7:51 ` [PATCH net-next 09/11] net: stmmac: dwxgmac2: " Jose Abreu
2019-05-08  7:51 ` [PATCH net-next 10/11] net: stmmac: Introduce selftests support Jose Abreu
2019-05-09  2:23   ` Andrew Lunn [this message]
2019-05-09  8:25     ` Jose Abreu
2019-05-09 12:21       ` Andrew Lunn
2019-05-09 15:11         ` Jose Abreu
2019-05-08  7:51 ` [PATCH net-next 11/11] net: stmmac: dwmac1000: Fix Hash Filter Jose Abreu
2019-05-08 15:46 ` [PATCH net-next 00/11] net: stmmac: Selftests David Miller
2019-05-08 19:50 ` Andrew Lunn
2019-05-09  8:17   ` Jose Abreu
2019-05-09 16:05     ` Jose Abreu
2019-05-09  9:04 ` Corentin Labbe
2019-05-09 10:11   ` Jose Abreu
2019-05-09 18:00     ` Corentin Labbe

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=20190509022330.GA23758@lunn.ch \
    --to=andrew@lunn.ch \
    --cc=Joao.Pinto@synopsys.com \
    --cc=Jose.Abreu@synopsys.com \
    --cc=alexandre.torgue@st.com \
    --cc=davem@davemloft.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=peppe.cavallaro@st.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.