mirror of
https://xff.cz/git/u-boot/
synced 2025-09-01 08:42:12 +02:00
sandbox: Allow ethernet to be disabled at runtime
For bootstd tests it is seldom useful to have ethernet enabled. Add a way to disable it, so that ethernet operations like tftpboot do nothing. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
@@ -12,6 +12,7 @@
|
|||||||
#include <os.h>
|
#include <os.h>
|
||||||
#include <asm/malloc.h>
|
#include <asm/malloc.h>
|
||||||
#include <asm/state.h>
|
#include <asm/state.h>
|
||||||
|
#include <asm/test.h>
|
||||||
|
|
||||||
/* Main state record for the sandbox */
|
/* Main state record for the sandbox */
|
||||||
static struct sandbox_state main_state;
|
static struct sandbox_state main_state;
|
||||||
@@ -366,6 +367,7 @@ void state_reset_for_test(struct sandbox_state *state)
|
|||||||
state->sysreset_allowed[SYSRESET_POWER_OFF] = true;
|
state->sysreset_allowed[SYSRESET_POWER_OFF] = true;
|
||||||
state->sysreset_allowed[SYSRESET_COLD] = true;
|
state->sysreset_allowed[SYSRESET_COLD] = true;
|
||||||
state->allow_memio = false;
|
state->allow_memio = false;
|
||||||
|
sandbox_set_eth_enable(true);
|
||||||
|
|
||||||
memset(&state->wdt, '\0', sizeof(state->wdt));
|
memset(&state->wdt, '\0', sizeof(state->wdt));
|
||||||
memset(state->spi, '\0', sizeof(state->spi));
|
memset(state->spi, '\0', sizeof(state->spi));
|
||||||
@@ -444,6 +446,20 @@ int state_load_other_fdt(const char **bufp, int *sizep)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void sandbox_set_eth_enable(bool enable)
|
||||||
|
{
|
||||||
|
struct sandbox_state *state = state_get_current();
|
||||||
|
|
||||||
|
state->disable_eth = !enable;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool sandbox_eth_enabled(void)
|
||||||
|
{
|
||||||
|
struct sandbox_state *state = state_get_current();
|
||||||
|
|
||||||
|
return !state->disable_eth;
|
||||||
|
}
|
||||||
|
|
||||||
int state_init(void)
|
int state_init(void)
|
||||||
{
|
{
|
||||||
state = &main_state;
|
state = &main_state;
|
||||||
|
@@ -96,6 +96,7 @@ struct sandbox_state {
|
|||||||
const char *select_unittests; /* Unit test to run */
|
const char *select_unittests; /* Unit test to run */
|
||||||
bool handle_signals; /* Handle signals within sandbox */
|
bool handle_signals; /* Handle signals within sandbox */
|
||||||
bool autoboot_keyed; /* Use keyed-autoboot feature */
|
bool autoboot_keyed; /* Use keyed-autoboot feature */
|
||||||
|
bool disable_eth; /* Disable Ethernet devices */
|
||||||
|
|
||||||
/* Pointer to information for each SPI bus/cs */
|
/* Pointer to information for each SPI bus/cs */
|
||||||
struct sandbox_spi_info spi[CONFIG_SANDBOX_SPI_MAX_BUS]
|
struct sandbox_spi_info spi[CONFIG_SANDBOX_SPI_MAX_BUS]
|
||||||
|
@@ -344,4 +344,20 @@ void sandbox_set_fake_efi_mgr_dev(struct udevice *dev, bool fake_dev);
|
|||||||
*/
|
*/
|
||||||
int sandbox_load_other_fdt(void **fdtp, int *sizep);
|
int sandbox_load_other_fdt(void **fdtp, int *sizep);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* sandbox_set_eth_enable() - Enable / disable Ethernet
|
||||||
|
*
|
||||||
|
* Allows control of whether Ethernet packets are actually send/received
|
||||||
|
*
|
||||||
|
* @enable: true to enable Ethernet, false to disable
|
||||||
|
*/
|
||||||
|
void sandbox_set_eth_enable(bool enable);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* sandbox_eth_enabled() - Check if Ethernet is enabled
|
||||||
|
*
|
||||||
|
* Returns: true if Ethernet is enabled on sandbox, False if not
|
||||||
|
*/
|
||||||
|
bool sandbox_eth_enabled(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -169,4 +169,29 @@ static inline int test_load_other_fdt(struct unit_test_state *uts)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* test_set_eth_enable() - Enable / disable Ethernet
|
||||||
|
*
|
||||||
|
* Allows control of whether Ethernet packets are actually send/received
|
||||||
|
*
|
||||||
|
* @enable: true to enable Ethernet, false to disable
|
||||||
|
*/
|
||||||
|
static inline void test_set_eth_enable(bool enable)
|
||||||
|
{
|
||||||
|
#ifdef CONFIG_SANDBOX
|
||||||
|
sandbox_set_eth_enable(enable);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Allow ethernet to be disabled for testing purposes */
|
||||||
|
static inline bool test_eth_enabled(void)
|
||||||
|
{
|
||||||
|
bool enabled = true;
|
||||||
|
|
||||||
|
#ifdef CONFIG_SANDBOX
|
||||||
|
enabled = sandbox_eth_enabled();
|
||||||
|
#endif
|
||||||
|
return enabled;
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* __TEST_TEST_H */
|
#endif /* __TEST_TEST_H */
|
||||||
|
@@ -106,6 +106,7 @@
|
|||||||
#endif
|
#endif
|
||||||
#include <watchdog.h>
|
#include <watchdog.h>
|
||||||
#include <linux/compiler.h>
|
#include <linux/compiler.h>
|
||||||
|
#include <test/test.h>
|
||||||
#include "arp.h"
|
#include "arp.h"
|
||||||
#include "bootp.h"
|
#include "bootp.h"
|
||||||
#include "cdp.h"
|
#include "cdp.h"
|
||||||
@@ -465,6 +466,9 @@ restart:
|
|||||||
debug_cond(DEBUG_INT_STATE, "--- net_loop Init\n");
|
debug_cond(DEBUG_INT_STATE, "--- net_loop Init\n");
|
||||||
net_init_loop();
|
net_init_loop();
|
||||||
|
|
||||||
|
if (!test_eth_enabled())
|
||||||
|
return 0;
|
||||||
|
|
||||||
switch (net_check_prereq(protocol)) {
|
switch (net_check_prereq(protocol)) {
|
||||||
case 1:
|
case 1:
|
||||||
/* network not configured */
|
/* network not configured */
|
||||||
|
Reference in New Issue
Block a user