Skip to content

Commit

Permalink
sandbox: Allow ethernet to be disabled at runtime
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
sjg20 authored and trini committed Jan 23, 2023
1 parent b85fc8d commit f43b2df
Show file tree
Hide file tree
Showing 5 changed files with 62 additions and 0 deletions.
16 changes: 16 additions & 0 deletions arch/sandbox/cpu/state.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
#include <os.h>
#include <asm/malloc.h>
#include <asm/state.h>
#include <asm/test.h>

/* Main state record for the sandbox */
static struct sandbox_state main_state;
Expand Down Expand Up @@ -366,6 +367,7 @@ void state_reset_for_test(struct sandbox_state *state)
state->sysreset_allowed[SYSRESET_POWER_OFF] = true;
state->sysreset_allowed[SYSRESET_COLD] = true;
state->allow_memio = false;
sandbox_set_eth_enable(true);

memset(&state->wdt, '\0', sizeof(state->wdt));
memset(state->spi, '\0', sizeof(state->spi));
Expand Down Expand Up @@ -444,6 +446,20 @@ int state_load_other_fdt(const char **bufp, int *sizep)
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)
{
state = &main_state;
Expand Down
1 change: 1 addition & 0 deletions arch/sandbox/include/asm/state.h
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ struct sandbox_state {
const char *select_unittests; /* Unit test to run */
bool handle_signals; /* Handle signals within sandbox */
bool autoboot_keyed; /* Use keyed-autoboot feature */
bool disable_eth; /* Disable Ethernet devices */

/* Pointer to information for each SPI bus/cs */
struct sandbox_spi_info spi[CONFIG_SANDBOX_SPI_MAX_BUS]
Expand Down
16 changes: 16 additions & 0 deletions arch/sandbox/include/asm/test.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);

/**
* 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
25 changes: 25 additions & 0 deletions include/test/test.h
Original file line number Diff line number Diff line change
Expand Up @@ -169,4 +169,29 @@ static inline int test_load_other_fdt(struct unit_test_state *uts)
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 */
4 changes: 4 additions & 0 deletions net/net.c
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@
#endif
#include <watchdog.h>
#include <linux/compiler.h>
#include <test/test.h>
#include "arp.h"
#include "bootp.h"
#include "cdp.h"
Expand Down Expand Up @@ -465,6 +466,9 @@ int net_loop(enum proto_t protocol)
debug_cond(DEBUG_INT_STATE, "--- net_loop Init\n");
net_init_loop();

if (!test_eth_enabled())
return 0;

switch (net_check_prereq(protocol)) {
case 1:
/* network not configured */
Expand Down

0 comments on commit f43b2df

Please sign in to comment.