[PATCH 4/6] usb: eth: asix88179: Refactor asix_send_common() to closer match Linux

Jonas Karlman jonas at kwiboo.se
Fri Jan 30 01:29:29 CET 2026


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 <jonas at kwiboo.se>
---
 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



More information about the U-Boot mailing list