summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2022-09-19 10:01:25 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2022-09-19 10:11:12 +0200
commitceb644e37ce6b5b649ad377eec06f763cb98fded (patch)
tree60c36efa52aab31072d440dd253ce8e2db98f388
parentec76c020b9b22f0d7a28ae7a40fe74e867fed26c (diff)
downloadbarebox-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.c7
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;