[PATCH v3 6/9] net: smc911x: Fix amount of words read from RX FIFO

Sascha Hauer s.hauer at pengutronix.de
Tue May 28 01:58:03 PDT 2024


According to the datasheet the packet length field contains the packet
length in bytes (and it's also used like this in the driver). This means
the number of dwords to read from the FIFO is one quarter of that, or,
if we account for non dword aligned packet lengths, as:

	len = (pktlen + 3) / 4.

I have no idea why the code has an additional + 2 when calculating the
number of dwords. The corresponding U-Boot driver also does not have
this additional + 2, so drop it from the barebox driver as well.

Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
---
 drivers/net/smc911x.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/smc911x.c b/drivers/net/smc911x.c
index 767d51761b..1fca58ab84 100644
--- a/drivers/net/smc911x.c
+++ b/drivers/net/smc911x.c
@@ -459,7 +459,7 @@ static int smc911x_eth_rx(struct eth_device *edev)
 
 		smc911x_reg_write(priv, RX_CFG, 0);
 
-		tmplen = (pktlen + 2 + 3) / 4;
+		tmplen = (pktlen + 3) / 4;
 		while(tmplen--)
 			*data++ = smc911x_reg_read(priv, RX_DATA_FIFO);
 
-- 
2.39.2




More information about the barebox mailing list