diff mbox

[U-Boot,v5,01/19] net: smsc95xx: Correct free_pkt() implementation

Message ID 20170401180556.2416-2-sjg@chromium.org
State Accepted
Commit 20b429b013c97cb3d253274003d52bbe8c9c4da1
Delegated to: Tom Rini
Headers show

Commit Message

Simon Glass April 1, 2017, 6:05 p.m. UTC
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>
---

Changes in v5:
- Add new patch for smsc95xx to correct free_pkt() implementation

Changes in v4: None
Changes in v3: None

 drivers/usb/eth/smsc95xx.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Joe Hershberger April 2, 2017, 5:46 p.m. UTC | #1
On Sat, Apr 1, 2017 at 1:05 PM, Simon Glass <sjg@chromium.org> wrote:
> 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>

Acked-by: Joe Hershberger <joe.hershberger@ni.com>
diff mbox

Patch

diff --git a/drivers/usb/eth/smsc95xx.c b/drivers/usb/eth/smsc95xx.c
index d4c8ea4a98..26000a5a45 100644
--- a/drivers/usb/eth/smsc95xx.c
+++ b/drivers/usb/eth/smsc95xx.c
@@ -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;