Refactor asix_send_common() to closer match the Linux variant.

This change has no intended functional change, it only makes the code
closer match the Linux ASIX AX88xxx driver.

Signed-off-by: Jonas Karlman <[email protected]>
---
 drivers/usb/eth/asix88179.c | 43 +++++++++++++++----------------------
 1 file changed, 17 insertions(+), 26 deletions(-)

diff --git a/drivers/usb/eth/asix88179.c b/drivers/usb/eth/asix88179.c
index 7d7cdeb60ebf..a9dff23e83bb 100644
--- a/drivers/usb/eth/asix88179.c
+++ b/drivers/usb/eth/asix88179.c
@@ -487,40 +487,31 @@ static int asix_send_common(struct ueth_data *dev,
                            struct asix_private *dev_priv,
                            void *packet, int length)
 {
-       int err;
-       u32 packet_len, tx_hdr2;
-       int actual_len, framesize;
-       ALLOC_CACHE_ALIGN_BUFFER(unsigned char, msg,
-                                PKTSIZE + (2 * sizeof(packet_len)));
+       u32 tx_hdr1, tx_hdr2;
+       int actual_len, ret;
+       ALLOC_CACHE_ALIGN_BUFFER(unsigned char, msg, PKTSIZE + 8);
 
        debug("** %s(), len %d\n", __func__, length);
 
-       packet_len = length;
-       cpu_to_le32s(&packet_len);
-
-       memcpy(msg, &packet_len, sizeof(packet_len));
-       framesize = dev_priv->maxpacketsize;
+       tx_hdr1 = length;
        tx_hdr2 = 0;
-       if (((length + 8) % framesize) == 0)
+       if (((length + 8) % dev_priv->maxpacketsize) == 0)
                tx_hdr2 |= 0x80008000;  /* Enable padding */
 
-       cpu_to_le32s(&tx_hdr2);
-
-       memcpy(msg + sizeof(packet_len), &tx_hdr2, sizeof(tx_hdr2));
+       put_unaligned_le32(tx_hdr1, msg);
+       put_unaligned_le32(tx_hdr2, msg + 4);
+       memcpy(msg + 8, packet, length);
 
-       memcpy(msg + sizeof(packet_len) + sizeof(tx_hdr2),
-              (void *)packet, length);
+       ret = usb_bulk_msg(dev->pusb_dev,
+                          usb_sndbulkpipe(dev->pusb_dev, dev->ep_out),
+                          msg,
+                          length + 8,
+                          &actual_len,
+                          USB_BULK_SEND_TIMEOUT);
+       debug("Tx: len = %u, actual = %u, err = %d\n",
+             length + 8, actual_len, ret);
 
-       err = usb_bulk_msg(dev->pusb_dev,
-                               usb_sndbulkpipe(dev->pusb_dev, dev->ep_out),
-                               (void *)msg,
-                               length + sizeof(packet_len) + sizeof(tx_hdr2),
-                               &actual_len,
-                               USB_BULK_SEND_TIMEOUT);
-       debug("Tx: len = %zu, actual = %u, err = %d\n",
-             length + sizeof(packet_len), actual_len, err);
-
-       return err;
+       return ret;
 }
 
 static int ax88179_eth_start(struct udevice *dev)
-- 
2.52.0

Reply via email to