diff options
Diffstat (limited to 'drivers/net/tap.c')
-rw-r--r-- | drivers/net/tap.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/net/tap.c b/drivers/net/tap.c index 1fbfa085b1..18f83c6a2c 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; } @@ -58,7 +59,7 @@ static int tap_set_ethaddr(struct eth_device *edev, const unsigned char *adr) return 0; } -static int tap_probe(struct device_d *dev) +static int tap_probe(struct device *dev) { struct eth_device *edev; struct tap_priv *priv; @@ -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; @@ -94,7 +97,7 @@ out: return ret; } -static struct driver_d tap_driver = { +static struct driver tap_driver = { .name = "tap", .probe = tap_probe, }; |