net: sandbox: Add a priv ptr for tests to use
authorJoe Hershberger <joe.hershberger@ni.com>
Wed, 26 Sep 2018 21:48:59 +0000 (16:48 -0500)
committerJoe Hershberger <joe.hershberger@ni.com>
Wed, 10 Oct 2018 17:28:59 +0000 (12:28 -0500)
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>
arch/sandbox/include/asm/eth.h
drivers/net/sandbox.c

index 7a49e98fa88c7cdb5a5eba8292dff66105fd5771..a6adec4e83dad1a58e349daa26b90dc5b3262b30 100644 (file)
@@ -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 */
index 9c0e0d009ea25c232f66904fb6a2cf70b683762a..e26e72ecc1065795b9fae6c4dfca7b57c8729874 100644 (file)
@@ -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);