Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 28801f35 authored by Eric Dumazet's avatar Eric Dumazet Committed by David S. Miller
Browse files

sfc: lower stack usage in efx_ethtool_self_test



drivers/net/sfc/ethtool.c: In function ‘efx_ethtool_self_test’:
drivers/net/sfc/ethtool.c:613: warning: the frame size of 1200 bytes
is larger than 1024 bytes

Signed-off-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
Acked-by: default avatarBen Hutchings <bhutchings@solarflare.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent fe29ec41
Loading
Loading
Loading
Loading
+13 −9
Original line number Original line Diff line number Diff line
@@ -569,9 +569,14 @@ static void efx_ethtool_self_test(struct net_device *net_dev,
				  struct ethtool_test *test, u64 *data)
				  struct ethtool_test *test, u64 *data)
{
{
	struct efx_nic *efx = netdev_priv(net_dev);
	struct efx_nic *efx = netdev_priv(net_dev);
	struct efx_self_tests efx_tests;
	struct efx_self_tests *efx_tests;
	int already_up;
	int already_up;
	int rc;
	int rc = -ENOMEM;

	efx_tests = kzalloc(sizeof(*efx_tests), GFP_KERNEL);
	if (!efx_tests)
		goto fail;



	ASSERT_RTNL();
	ASSERT_RTNL();
	if (efx->state != STATE_RUNNING) {
	if (efx->state != STATE_RUNNING) {
@@ -589,13 +594,11 @@ static void efx_ethtool_self_test(struct net_device *net_dev,
		if (rc) {
		if (rc) {
			netif_err(efx, drv, efx->net_dev,
			netif_err(efx, drv, efx->net_dev,
				  "failed opening device.\n");
				  "failed opening device.\n");
			goto fail2;
			goto fail1;
		}
		}
	}
	}


	memset(&efx_tests, 0, sizeof(efx_tests));
	rc = efx_selftest(efx, efx_tests, test->flags);

	rc = efx_selftest(efx, &efx_tests, test->flags);


	if (!already_up)
	if (!already_up)
		dev_close(efx->net_dev);
		dev_close(efx->net_dev);
@@ -604,10 +607,11 @@ static void efx_ethtool_self_test(struct net_device *net_dev,
		   rc == 0 ? "passed" : "failed",
		   rc == 0 ? "passed" : "failed",
		   (test->flags & ETH_TEST_FL_OFFLINE) ? "off" : "on");
		   (test->flags & ETH_TEST_FL_OFFLINE) ? "off" : "on");


 fail2:
fail1:
fail1:
	/* Fill ethtool results structures */
	/* Fill ethtool results structures */
	efx_ethtool_fill_self_tests(efx, &efx_tests, NULL, data);
	efx_ethtool_fill_self_tests(efx, efx_tests, NULL, data);
	kfree(efx_tests);
fail:
	if (rc)
	if (rc)
		test->flags |= ETH_TEST_FL_FAILED;
		test->flags |= ETH_TEST_FL_FAILED;
}
}