[FS#3562] no packet flow on AR 8035 based ports (LAN3, LAN4) of lantiq xrx200 integrated switch (with fix)

OpenWrt Bugs openwrt-bugs at lists.openwrt.org
Mon Jan 4 09:32:15 EST 2021


THIS IS AN AUTOMATED MESSAGE, DO NOT REPLY.

A new Flyspray task has been opened.  Details are below. 

User who did this - kestrel1974 (kestrel1974) 

Attached to Project - OpenWrt/LEDE Project
Summary - no packet flow on AR 8035 based ports (LAN3, LAN4) of lantiq xrx200 integrated switch (with fix)
Task Type - Bug Report
Category - Kernel
Status - Unconfirmed
Assigned To - 
Operating System - All
Severity - Medium
Priority - Very Low
Reported Version - Trunk
Due in Version - Undecided
Due Date - Undecided
Details - The device is fritzbox 7362sl.
It works until kernel 4.19.
The explicit calls to at803x_disable_rx_delay(phydev) and at803x_disable_tx_delay(phydev) seem to clobber the AR8035 registers 0 and 5 with values that make the two LAN ports not transporting anything anymore. Plugging and unplugging cables is still recognized.

I have used a small patch to revert the at803x_config_init function to how it was on kernel 4.19 and the two ports work since then:


 --- a/drivers/net/phy/at803x.c
 +++ b/drivers/net/phy/at803x.c
 @@ -289,20 +289,20 @@ static int at803x_config_init(struct phy_
  	 */

  	if (phydev->interface == PHY_INTERFACE_MODE_RGMII_ID ||
 -	    phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID)
 +	    phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID) {
  		ret = at803x_enable_rx_delay(phydev);
 -	else
 -		ret = at803x_disable_rx_delay(phydev);
 -	if (ret < 0)
 -		return ret;
 +		if (ret < 0)
 +			return ret;
 +	}

  	if (phydev->interface == PHY_INTERFACE_MODE_RGMII_ID ||
 -	    phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID)
 +	    phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID) {
  		ret = at803x_enable_tx_delay(phydev);
 -	else
 -		ret = at803x_disable_tx_delay(phydev);
 +		if (ret < 0)
 +			return ret;
 +	}

 -	return ret;
 +	return 0;
  }

  static int at803x_ack_interrupt(struct phy_device *phydev)

But, maybe the explicit call to at803x_disable_??_delay was added for some other device to work. I have experimented with pll-data first, but unlike newer kernels, like 5.10 this is nowhere referenced in the driver for the 5.4 kernel.

Actually, removing the disable calls and using just RGMII is effectivly similar to not touching the AT8035 registers 0 and 5 at all.

More information can be found at the following URL:
https://bugs.openwrt.org/index.php?do=details&task_id=3562

You are receiving this message because you have requested it from the Flyspray bugtracking system.  If you did not expect this message or don't want to receive mails in future, you can change your notification settings at the URL shown above.



More information about the openwrt-bugs mailing list