Skip to content
Snippets Groups Projects
Commit 20b429b0 authored by Simon Glass's avatar Simon Glass Committed by Tom Rini
Browse files

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: default avatarSimon Glass <sjg@chromium.org>
parent dd9999d5
No related branches found
No related tags found
No related merge requests found
...@@ -998,7 +998,7 @@ int smsc95xx_eth_recv(struct udevice *dev, int flags, uchar **packetp) ...@@ -998,7 +998,7 @@ int smsc95xx_eth_recv(struct udevice *dev, int flags, uchar **packetp)
} }
*packetp = ptr + sizeof(packet_len); *packetp = ptr + sizeof(packet_len);
return packet_len; return packet_len - 4;
err: err:
usb_ether_advance_rxbuf(ueth, -1); usb_ether_advance_rxbuf(ueth, -1);
...@@ -1009,7 +1009,7 @@ static int smsc95xx_free_pkt(struct udevice *dev, uchar *packet, int packet_len) ...@@ -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); 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); usb_ether_advance_rxbuf(&priv->ueth, sizeof(u32) + packet_len);
return 0; return 0;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment