Opened 3 years ago

Last modified 2 years ago

#19498 new defect

Packet loss on ALFA Hornet-UB on one port

Reported by: anonymous Owned by: developers
Priority: normal Milestone:
Component: packages Version: Trunk
Keywords: Cc:


Tested current trunk and it seems I have some packet loss when sending a lot of packets through on port but works fine on the other. I could not find a single version were it worked.

I've added both eth1 and eth0 to br-lan. Then I've configured br-lan to be in the network The cable was attached to both ports (not at the same time) and following commands were run

ping -s 65507

The first one worked perfectly fine on both ports. The second one worked fine on port eth1. BUT it didn't work on eth0. The receiving PC ( isn't receiving some of the fragments. He only replies with an "ICMP Fragment reassembly time exceeded" packet.

The same happens when the device is pinged with the same commands. It receives the fragments from the PC and starts to reply. But again, some of the (reply) ICMP fragments are not received by the PC.

Attachments (0)

Change History (3)

comment:1 Changed 3 years ago by anonymous

I was able to reproduce the same problem on an OM2P. But the OM2P had a problem with port eth1 and it worked with eth0.

Maybe it is a general problem with the AR71xx drivers from OpenWrt and the internal MAC/PHY/ethernet? For example the WDR4300 v1.7 doesn't have the problems but also doesn't use the internal ethernet device/PHY thing.

I've already tried it with different PCs and switches.

comment:2 Changed 3 years ago by anonymous

I got reports that this works with QCA OS-SDK. But I know no one with access to the source of this SDK

comment:3 Changed 2 years ago by Sven Eckelmann <sven.eckelmann@…>

It looks like MAC_CFG1_INIT has to be slightly modified. Right now it is:


And it works by adding MAC_CFG1_TFC + MAC_CFG1_RFC

--- a/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c
+++ b/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c
@@ -455,7 +455,11 @@ static void ag71xx_hw_setup(struct ag71xx *ag)
 	struct ag71xx_platform_data *pdata = ag71xx_get_pdata(ag);
 	/* setup MAC configuration registers */
-	ag71xx_wr(ag, AG71XX_REG_MAC_CFG1, MAC_CFG1_INIT);
+       if (pdata->is_ar724x)
+               ag71xx_wr(ag, AG71XX_REG_MAC_CFG1,
+                         MAC_CFG1_INIT | MAC_CFG1_TFC | MAC_CFG1_RFC);
+       else
+               ag71xx_wr(ag, AG71XX_REG_MAC_CFG1, MAC_CFG1_INIT);
 	ag71xx_sb(ag, AG71XX_REG_MAC_CFG2,

This basically enables flow control for the internal switch port of these devices. This was already enabled before for ar724x in the past but Felix disabled it with r27034 because he had problems with it (see the commit description for more details).

Add Comment

Modify Ticket

as new .

E-mail address and user name can be saved in the Preferences.

Note: See TracTickets for help on using tickets.