From: Stephen Warren Date: Thu, 27 Feb 2014 20:27:02 +0000 (-0700) Subject: net: asix: don't pad odd-length TX packets X-Git-Tag: v2014.04-rc2~27 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=9a04a858ebb711767f368c5a752928ffc36ed4de;p=oweals%2Fu-boot.git net: asix: don't pad odd-length TX packets For Ethernet/USB RX packets, the ASIX HW pads odd-sized packets so that they have an even size. Currently, asix_recv() does remove this padding, and asic_send() adds equivalent padding in the TX path. However, the HW does not appear to need this packing for TX packets in practical testing with "ASIX Elec. Corp. AX88x72A 000001" Vendor: 0x0b95 Product 0x7720 Version 0.1. The Linux kernel does no such padding for the TX path. Remove the padding from the TX path: * For consistency with the Linux kernel. * NVIDIA has a Tegra simulator which validates that the length of USB packets sent to an ASIX device matches the packet length value inside the packet data. Having U-Boot and the kernel do the same thing when creating the TX packets simplifies the simulator's validation. Cc: Lucas Stach Cc: Marek Vasut Cc: Simon Glass Signed-off-by: Stephen Warren Acked-by: Simon Glass Acked-by: Marek Vasut Tested-by: Marek Vasut Tested-by: Gerhard Sittig --- diff --git a/drivers/usb/eth/asix.c b/drivers/usb/eth/asix.c index 659533a8d4..ce133f0069 100644 --- a/drivers/usb/eth/asix.c +++ b/drivers/usb/eth/asix.c @@ -468,8 +468,6 @@ static int asix_send(struct eth_device *eth, void *packet, int length) memcpy(msg, &packet_len, sizeof(packet_len)); memcpy(msg + sizeof(packet_len), (void *)packet, length); - if (length & 1) - length++; err = usb_bulk_msg(dev->pusb_dev, usb_sndbulkpipe(dev->pusb_dev, dev->ep_out),