diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2022-09-19 10:01:30 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2022-09-19 10:11:12 +0200 |
commit | e8db2b646f49acb5284a089b27dc14319a80417f (patch) | |
tree | 9ca385d9e6e52fb2106eddec1444e1d1e342e75d | |
parent | 1f6f4222ee78dedae936b0ee54ef4f621d915d3b (diff) | |
download | barebox-e8db2b646f49acb5284a089b27dc14319a80417f.tar.gz barebox-e8db2b646f49acb5284a089b27dc14319a80417f.tar.xz |
net: smc91111: 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-7-s.hauer@pengutronix.de
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r-- | drivers/net/smc91111.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/net/smc91111.c b/drivers/net/smc91111.c index d503535c25..3b23bfedfd 100644 --- a/drivers/net/smc91111.c +++ b/drivers/net/smc91111.c @@ -446,6 +446,7 @@ struct smc91c111_priv { int revision; unsigned int control_setup; unsigned int config_setup; + void *rx_buf; }; #if (SMC_DEBUG > 2 ) @@ -1302,14 +1303,14 @@ static int smc91c111_eth_rx(struct eth_device *edev) to send the DWORDs or the bytes first, or some mixture. A mixture might improve already slow PIO performance */ - SMC_insl(priv, SMC91111_DATA_REG , NetRxPackets[0], + SMC_insl(priv, SMC91111_DATA_REG , priv->rx_buf, packet_length >> 2); /* read the left over bytes */ if (packet_length & 3) { int i; unsigned char *tail = - (unsigned char *)(NetRxPackets[0] + + (unsigned char *)(priv->rx_buf + (packet_length & ~3)); unsigned long leftover = SMC_inl(priv, SMC91111_DATA_REG); @@ -1320,7 +1321,7 @@ static int smc91c111_eth_rx(struct eth_device *edev) #if SMC_DEBUG > 2 printf("Receiving Packet\n"); - print_packet( NetRxPackets[0], packet_length ); + print_packet(priv->rx_buf, packet_length ); #endif } else { /* error ... */ @@ -1343,7 +1344,7 @@ static int smc91c111_eth_rx(struct eth_device *edev) if (!is_error) { /* Pass the packet up to the protocol layers. */ - net_receive(edev, NetRxPackets[0], packet_length); + net_receive(edev, priv->rx_buf, packet_length); return 0; } @@ -1445,6 +1446,7 @@ static int smc91c111_probe(struct device_d *dev) priv = edev->priv; priv->a = access_via_32bit; + priv->rx_buf = xmalloc(PKTSIZE); if (dev->platform_data) { struct smc91c111_pdata *pdata = dev->platform_data; |