summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Warren <swarren@nvidia.com>2014-02-27 13:27:02 -0700
committerTom Rini <trini@ti.com>2014-03-07 10:59:06 -0500
commit9a04a858ebb711767f368c5a752928ffc36ed4de (patch)
treea43ced06f4c3e93104a7701c974b1a5c0ae69bec
parente4b87e5b1d026bd010e2ba3abbf89561e8320287 (diff)
downloadu-boot-imx-9a04a858ebb711767f368c5a752928ffc36ed4de.zip
u-boot-imx-9a04a858ebb711767f368c5a752928ffc36ed4de.tar.gz
u-boot-imx-9a04a858ebb711767f368c5a752928ffc36ed4de.tar.bz2
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 <dev@lynxeye.de> Cc: Marek Vasut <marex@denx.de> Cc: Simon Glass <sjg@chromium.org> Signed-off-by: Stephen Warren <swarren@nvidia.com> Acked-by: Simon Glass <sjg@chromium.org> Acked-by: Marek Vasut <marex@denx.de> Tested-by: Marek Vasut <marex@denx.de> Tested-by: Gerhard Sittig <gsi@denx.de>
-rw-r--r--drivers/usb/eth/asix.c2
1 files changed, 0 insertions, 2 deletions
diff --git a/drivers/usb/eth/asix.c b/drivers/usb/eth/asix.c
index 659533a..ce133f0 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),