net: sandbox: Add a priv ptr for tests to use

Tests need to be able to pass their "unit test state" to the handlers
where asserts are evaluated. Add a function that allows the tests to set
this private data on the sandbox eth device.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
lime2-spi
Joe Hershberger 6 years ago
parent 3f02c98bd1
commit 9cbe5972c3
  1. 9
      arch/sandbox/include/asm/eth.h
  2. 20
      drivers/net/sandbox.c

@ -59,6 +59,7 @@ typedef int sandbox_eth_tx_hand_f(struct udevice *dev, void *pkt,
* recv_packet_length - lengths of the packet returned as received
* recv_packets - number of packets returned
* tx_handler - function to generate responses to sent packets
* priv - a pointer to some structure a test may want to keep track of
*/
struct eth_sandbox_priv {
uchar fake_host_hwaddr[ARP_HLEN];
@ -68,6 +69,7 @@ struct eth_sandbox_priv {
int recv_packet_length[PKTBUFSRX];
int recv_packets;
sandbox_eth_tx_hand_f *tx_handler;
void *priv;
};
/*
@ -77,4 +79,11 @@ struct eth_sandbox_priv {
*/
void sandbox_eth_set_tx_handler(int index, sandbox_eth_tx_hand_f *handler);
/*
* Set priv ptr
*
* priv - priv void ptr to store in the device
*/
void sandbox_eth_set_priv(int index, void *priv);
#endif /* __ETH_H */

@ -206,6 +206,26 @@ void sandbox_eth_set_tx_handler(int index, sandbox_eth_tx_hand_f *handler)
priv->tx_handler = sb_default_handler;
}
/*
* Set priv ptr
*
* priv - priv void ptr to store in the device
*/
void sandbox_eth_set_priv(int index, void *priv)
{
struct udevice *dev;
struct eth_sandbox_priv *dev_priv;
int ret;
ret = uclass_get_device(UCLASS_ETH, index, &dev);
if (ret)
return;
dev_priv = dev_get_priv(dev);
dev_priv->priv = priv;
}
static int sb_eth_start(struct udevice *dev)
{
struct eth_sandbox_priv *priv = dev_get_priv(dev);

Loading…
Cancel
Save