aparcar / openwrt

Staging tree of Paul Spooren
Other
8 stars 1 forks source link

FS#631 - AR8327 switch link state change check not working on TL-WR1043ND v3 (QCA9558) #630

Open aparcar opened 7 years ago

aparcar commented 7 years ago

VittGam:

Hello,

On my TP-LINK TL-WR1043ND v3 (ar71xx QCA9558) with today's LEDE snapshot, the AR8327 switch isn't sending port change interrupt events to the CPU.

The ar8xxx_check_link_states function in target/linux/generic/files/drivers/net/phy/ar8216.c is not being called at all, since not only the messages about port link status change aren't printed to the dmesg, but the ARL table isn't getting cleaned either. I don't understand why this is happening...

This regression is not present in other routers with the same AR8327 switch chip (but rev. 2 instead of rev. 4), such as TP-LINK TL-WDR4300 v1 (ar71xx) and TP-LINK TL-WDR4900 v1 (mpc85xx).

(Latest LEDE stable release also does exibit the regression.)

Below you can see a session with LEDE; and a session with OpenWrt CC 15.05.1 release, which does not exibit the problem.

(The CC image is for the TL-WR1043ND v2, since v3 images weren't built yet at that time; v2 and v3 are the same hardware, as it can be seen from the FCC docs, where TP-LINK requested an ID change from v2 to v3.)

Please let me know if there's anything I can try to help debug this problem!

BusyBox v1.26.2 () built-in shell (ash)

     _________
    /        /\      _    ___ ___  ___
   /  LE    /  \    | |  | __|   \| __|
  /    DE  /    \   | |__| _|| |) | _|
 /________/  LE  \  |____|___|___/|___|                      lede-project.org
 \        \   DE /
  \    LE  \    /  -----------------------------------------------------------
   \  DE    \  /    Reboot (SNAPSHOT, r1-2f09a1e)
    \________\/    -----------------------------------------------------------

=== WARNING! =====================================
There is no root password defined on this device!
Use the "passwd" command to set up a new password
in order to prevent unauthorized SSH logins.
--------------------------------------------------
root@LEDE:~# dmesg | grep 8327
[    0.815273] switch0: Atheros AR8327 rev. 4 switch registered on ag71xx-mdio.0
root@LEDE:~# dmesg | grep 8216
[    2.046658] ag71xx ag71xx.0: connected to PHY at ag71xx-mdio.0:00 [uid=004dd034, driver=Atheros AR8216/AR8236/AR8316]
root@LEDE:~# swconfig dev switch0 get arl_table
address resolution table
Port 0: MAC <router_lan_macaddr>
Port 4: MAC <my_laptop_macaddr>
Port 4: MAC <other_macaddr>
Port 6: MAC <router_wan_macaddr>

root@LEDE:~# dmesg | grep 8216
[    2.046658] ag71xx ag71xx.0: connected to PHY at ag71xx-mdio.0:00 [uid=004dd034, driver=Atheros AR8216/AR8236/AR8316]
root@LEDE:~# swconfig dev switch0 get arl_table
address resolution table
Port 0: MAC <router_lan_macaddr>
Port 3: MAC <my_laptop_macaddr>
Port 4: MAC <other_macaddr>
Port 6: MAC <router_wan_macaddr>

root@LEDE:~# 
BusyBox v1.23.2 (2016-01-02 18:01:44 CET) built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 CHAOS CALMER (15.05.1, r48532)
 -----------------------------------------------------
  * 1 1/2 oz Gin            Shake with a glassful
  * 1/4 oz Triple Sec       of broken ice and pour
  * 3/4 oz Lime Juice       unstrained into a goblet.
  * 1 1/2 oz Orange Juice
  * 1 tsp. Grenadine Syrup
 -----------------------------------------------------
root@OpenWrt:/# dmesg | grep 8327
[    0.750000] switch0: Atheros AR8327 rev. 4 switch registered on ag71xx-mdio.0
root@OpenWrt:/# dmesg | grep 8216
[    1.440000] ag71xx ag71xx.0: connected to PHY at ag71xx-mdio.0:00 [uid=004dd034, driver=Atheros AR8216/AR8236/AR8316]
[   24.680000] Atheros AR8216/AR8236/AR8316 ag71xx-mdio.0:00: Port 4 is up

root@OpenWrt:/# swconfig dev switch0 get arl_table
address resolution table
Port 0: MAC <router_lan_macaddr>
Port 4: MAC <my_laptop_macaddr>
Port 4: MAC <other_macaddr>
Port 6: MAC <router_wan_macaddr>

root@OpenWrt:/# dmesg | grep 8216
[    1.440000] ag71xx ag71xx.0: connected to PHY at ag71xx-mdio.0:00 [uid=004dd034, driver=Atheros AR8216/AR8236/AR8316]
[   24.680000] Atheros AR8216/AR8236/AR8316 ag71xx-mdio.0:00: Port 4 is up
[ 1306.510000] Atheros AR8216/AR8236/AR8316 ag71xx-mdio.0:00: Port 4 is down
[ 1310.530000] Atheros AR8216/AR8236/AR8316 ag71xx-mdio.0:00: Port 3 is up
root@OpenWrt:/# swconfig dev switch0 get arl_table
address resolution table
Port 0: MAC <router_lan_macaddr>
Port 3: MAC <my_laptop_macaddr>
Port 6: MAC <router_wan_macaddr>

root@OpenWrt:/# uname -a
Linux OpenWrt 3.18.23 #1 Sun Jan 31 18:39:35 CET 2016 mips GNU/Linux
root@OpenWrt:/# 

Cheers, Vittorio

aparcar commented 7 years ago

VittGam:

Hmmm... Obviously markdown syntax for blocks isn't supported here, but I can't see a way for me to edit the description...

BusyBox v1.26.2 () built-in shell (ash)

 _________
/        /\      _    ___ ___  ___

/ LE / \ | | | | | | / DE / \ | || || |) | | /__/ LE \ |__|__|/|_| lede-project.org \ \ DE / \ LE \ / ----------------------------------------------------------- \ DE \ / Reboot (SNAPSHOT, r1-2f09a1e) ______\/ -----------------------------------------------------------

=== WARNING! ===================================== There is no root password defined on this device! Use the "passwd" command to set up a new password in order to prevent unauthorized SSH logins.

root@LEDE:~# dmesg | grep 8327 [ 0.815273] switch0: Atheros AR8327 rev. 4 switch registered on ag71xx-mdio.0 root@LEDE:~# dmesg | grep 8216 [ 2.046658] ag71xx ag71xx.0: connected to PHY at ag71xx-mdio.0:00 [uid=004dd034, driver=Atheros AR8216/AR8236/AR8316] root@LEDE:~# swconfig dev switch0 get arl_table address resolution table Port 0: MAC Port 4: MAC Port 4: MAC Port 6: MAC

root@LEDE:~# dmesg | grep 8216 [ 2.046658] ag71xx ag71xx.0: connected to PHY at ag71xx-mdio.0:00 [uid=004dd034, driver=Atheros AR8216/AR8236/AR8316] root@LEDE:~# swconfig dev switch0 get arl_table address resolution table Port 0: MAC Port 3: MAC Port 4: MAC Port 6: MAC

root@LEDE:~#

BusyBox v1.23.2 (2016-01-02 18:01:44 CET) built-in shell (ash)


| |.-----.-----.-----.| | | |.----.| | | - || | -| || | | || || | |___|| |_||||____||| |__| |__| W I R E L E S S F R E E D O M

CHAOS CALMER (15.05.1, r48532)

  • 1 1/2 oz Gin Shake with a glassful
  • 1/4 oz Triple Sec of broken ice and pour
  • 3/4 oz Lime Juice unstrained into a goblet.
  • 1 1/2 oz Orange Juice
  • 1 tsp. Grenadine Syrup

    root@OpenWrt:/# dmesg | grep 8327 [ 0.750000] switch0: Atheros AR8327 rev. 4 switch registered on ag71xx-mdio.0 root@OpenWrt:/# dmesg | grep 8216 [ 1.440000] ag71xx ag71xx.0: connected to PHY at ag71xx-mdio.0:00 [uid=004dd034, driver=Atheros AR8216/AR8236/AR8316] [ 24.680000] Atheros AR8216/AR8236/AR8316 ag71xx-mdio.0:00: Port 4 is up

root@OpenWrt:/# swconfig dev switch0 get arl_table address resolution table Port 0: MAC Port 4: MAC Port 4: MAC Port 6: MAC

root@OpenWrt:/# dmesg | grep 8216 [ 1.440000] ag71xx ag71xx.0: connected to PHY at ag71xx-mdio.0:00 [uid=004dd034, driver=Atheros AR8216/AR8236/AR8316] [ 24.680000] Atheros AR8216/AR8236/AR8316 ag71xx-mdio.0:00: Port 4 is up [ 1306.510000] Atheros AR8216/AR8236/AR8316 ag71xx-mdio.0:00: Port 4 is down [ 1310.530000] Atheros AR8216/AR8236/AR8316 ag71xx-mdio.0:00: Port 3 is up root@OpenWrt:/# swconfig dev switch0 get arl_table address resolution table Port 0: MAC Port 3: MAC Port 6: MAC

root@OpenWrt:/# uname -a Linux OpenWrt 3.18.23 #1 Sun Jan 31 18:39:35 CET 2016 mips GNU/Linux root@OpenWrt:/#

aparcar commented 7 years ago

storchi:

same problem: #604 polling solution: http://centaur.sch.bme.hu/~leait/projects/openwrt/ seems included in CC regards cs

aparcar commented 7 years ago

VittGam:

Hmmm, I should re-test with my WDR3600 and WDR4300 then. I might have messed up with my tests on those routers, since I observed that it didn't happen on WDR4300...

By the way, polling is not the solution here, since the switch sends the change notifications as IRQs, and the kernel picked them up correctly with OpenWrt CC 15.05.1 release (which does not seem to have that polling patch you linked)...

aparcar commented 7 years ago

VittGam:

Oh and by the way, this problem does not happen on a TL-WR1043ND v4, which has a QCA956x SoC and an AR8337 rev 2 switch chip.