diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2022-09-19 10:01:25 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2022-09-19 10:11:12 +0200 |
commit | ceb644e37ce6b5b649ad377eec06f763cb98fded (patch) | |
tree | 60c36efa52aab31072d440dd253ce8e2db98f388 | |
parent | ec76c020b9b22f0d7a28ae7a40fe74e867fed26c (diff) | |
download | barebox-ceb644e37ce6b5b649ad377eec06f763cb98fded.tar.gz barebox-ceb644e37ce6b5b649ad377eec06f763cb98fded.tar.xz |
net: tap: Allocate own receive buffer
Use a driver private buffer as network receive buffer rather than the
globally allocated ones which will be removed soon.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Link: https://lore.barebox.org/20220919080133.877651-2-s.hauer@pengutronix.de
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r-- | drivers/net/tap.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/net/tap.c b/drivers/net/tap.c index 1fbfa085b1..8a659c125e 100644 --- a/drivers/net/tap.c +++ b/drivers/net/tap.c @@ -15,6 +15,7 @@ struct tap_priv { int fd; char *name; + char *rx_buf; }; static int tap_eth_send(struct eth_device *edev, void *packet, int length) @@ -30,10 +31,10 @@ static int tap_eth_rx(struct eth_device *edev) struct tap_priv *priv = edev->priv; int length; - length = linux_read_nonblock(priv->fd, NetRxPackets[0], PKTSIZE); + length = linux_read_nonblock(priv->fd, priv->rx_buf, PKTSIZE); if (length > 0) - net_receive(edev, NetRxPackets[0], length); + net_receive(edev, priv->rx_buf, length); return 0; } @@ -73,6 +74,8 @@ static int tap_probe(struct device_d *dev) goto out; } + priv->rx_buf = xmalloc(PKTSIZE); + edev = xzalloc(sizeof(struct eth_device)); edev->priv = priv; edev->parent = dev; |