mirror of
https://github.com/u-boot/u-boot.git
synced 2024-11-26 21:54:37 +08:00
net: smsc95xx: Correct free_pkt() implementation
On further review this returns the wrong packet length from the driver. It may not be noticed since protocols will take care of it. Fix it by subtracting the header length from the packet length returned. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
dd9999d5f4
commit
20b429b013
@ -998,7 +998,7 @@ int smsc95xx_eth_recv(struct udevice *dev, int flags, uchar **packetp)
|
||||
}
|
||||
|
||||
*packetp = ptr + sizeof(packet_len);
|
||||
return packet_len;
|
||||
return packet_len - 4;
|
||||
|
||||
err:
|
||||
usb_ether_advance_rxbuf(ueth, -1);
|
||||
@ -1009,7 +1009,7 @@ static int smsc95xx_free_pkt(struct udevice *dev, uchar *packet, int packet_len)
|
||||
{
|
||||
struct smsc95xx_private *priv = dev_get_priv(dev);
|
||||
|
||||
packet_len = ALIGN(packet_len, 4);
|
||||
packet_len = ALIGN(packet_len + sizeof(u32), 4);
|
||||
usb_ether_advance_rxbuf(&priv->ueth, sizeof(u32) + packet_len);
|
||||
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user