lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Thu, 13 Jan 2022 16:56:10 +0100
From:   Frank Wunderlich <frank-w@...lic-files.de>
To:     Alvin Šipraga <ALSI@...g-olufsen.dk>
Cc:     Luiz Angelo Daros de Luca <luizluca@...il.com>,
        "netdev@...r.kernel.org" <netdev@...r.kernel.org>,
        "linus.walleij@...aro.org" <linus.walleij@...aro.org>,
        "andrew@...n.ch" <andrew@...n.ch>,
        "vivien.didelot@...il.com" <vivien.didelot@...il.com>,
        "f.fainelli@...il.com" <f.fainelli@...il.com>,
        "olteanv@...il.com" <olteanv@...il.com>,
        "arinc.unal@...nc9.com" <arinc.unal@...nc9.com>
Subject: Aw: Re:  Re:  Re: [PATCH net-next v4 11/11] net: dsa: realtek:
 rtl8365mb: multiple cpu ports, non cpu extint

Hi,

the problem is checksum offloading on the gmac (soc-side)

root@...-r64:~# ethtool -k eth1 | grep checksum                                                                                                  
rx-checksumming: on                                                                                                                              
tx-checksumming: on                                                                                                                              
        tx-checksum-ipv4: on    #<<<<<<<<<<<<<                           
        tx-checksum-ip-generic: off [fixed]                                                                                                      
        tx-checksum-ipv6: on    #<<<<<<<<<<<<<                          
        tx-checksum-fcoe-crc: off [fixed]                                                                                                        
        tx-checksum-sctp: off [fixed]

in my case i tried ipv4....and after disabling the offload i get a connection

root@...-r64:~# ethtool -K eth1 rx off tx off                                                                                                    
Actual changes:                                                                                                                                  
tx-checksum-ipv4: off                                                                                                                            
tx-checksum-ipv6: off                                                                                                                            
tx-tcp-segmentation: off [not requested]                                                                                                         
tx-tcp6-segmentation: off [not requested]                                                                                                        
rx-checksum: off                                                                                                                                 
root@...-r64:~# telnet 192.168.1.1 22                                                                                                            
Trying 192.168.1.1...                                                                                                                            
Connected to 192.168.1.1.                                                                                                                        
Escape character is '^]'.                                                                                                                        
SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.3                                                                                                          
^C

regards Frank


> Gesendet: Donnerstag, 13. Januar 2022 um 13:37 Uhr
> Von: "Alvin Šipraga" <ALSI@...g-olufsen.dk>
> An: "Frank Wunderlich" <frank-w@...lic-files.de>
> Cc: "Luiz Angelo Daros de Luca" <luizluca@...il.com>, "netdev@...r.kernel.org" <netdev@...r.kernel.org>, "linus.walleij@...aro.org" <linus.walleij@...aro.org>, "andrew@...n.ch" <andrew@...n.ch>, "vivien.didelot@...il.com" <vivien.didelot@...il.com>, "f.fainelli@...il.com" <f.fainelli@...il.com>, "olteanv@...il.com" <olteanv@...il.com>, "arinc.unal@...nc9.com" <arinc.unal@...nc9.com>
> Betreff: Re: Aw: Re:  Re: [PATCH net-next v4 11/11] net: dsa: realtek: rtl8365mb: multiple cpu ports, non cpu extint
>
> Frank Wunderlich <frank-w@...lic-files.de> writes:
> 
> > Hi,
> >
> >> Gesendet: Dienstag, 11. Januar 2022 um 19:17 Uhr
> >> Von: "Alvin Šipraga" <ALSI@...g-olufsen.dk>
> >
> >> Luiz, any comments regarding this? I suppose if the chip ID/revision is
> >> the same for both 67S and 67RB, they should work pretty much the same,
> >> right?
> >
> > my phy driver is same for both devices and afaik only do different
> > RX/TX delays. With the chip-rev-patch 0x0020 i can init the switch,
> > but have no technical documentation except the phy driver code.
> >
> >> Ping working but TCP not working is a bit strange. You could check the
> >> output of ethtool -S and see if that meets your expectations. If you
> >> have a relatively modern ethtool you can also append --all-groups to the
> >> comment to get a more standard output.
> >
> > as far as i see in tcpdump (suggested by luiz) on target it is a checksum error where checksum is always 0x8382 (maybe some kind of fixed tag).
> >
> > 16:39:07.994825 IP (tos 0x10, ttl 64, id 54002, offset 0, flags [DF], proto TCP (6), length 60)
> >     192.168.1.2.43284 > 192.168.1.1.22: Flags [S], cksum 0x8382
> > (incorrect -> 0xa6f6), seq 3231275121, win 64240, options [mss
> > 1460,sackOK,TS val 1615921214 ecr 0,nop,wscale 7], length 0
> > 16:39:12.154790 IP (tos 0x10, ttl 64, id 54003, offset 0, flags [DF], proto TCP (6), length 60)
> >     192.168.1.2.43284 > 192.168.1.1.22: Flags [S], cksum 0x8382
> > (incorrect -> 0x96b6), seq 3231275121, win 64240, options [mss
> > 1460,sackOK,TS val 1615925374 ecr 0,nop,wscale 7], length 0
> 
> That's weird, I must admit I do not recognize this issue at all. Try
> dumping the whole packet with -x and maybe you can see what kind of data
> you are getting.

2 example packets from tcpdump (if you still want to see it)

$ sudo tcpdump -i enx00131100063c -vvv -nn -x
tcpdump: listening on enx00131100063c, link-type EN10MB (Ethernet), capture size 262144 bytes


16:43:50.297259 IP (tos 0x10, ttl 64, id 19802, offset 0, flags [DF], proto TCP (6), length 60)
    192.168.1.2.38278 > 192.168.1.1.22: Flags [S], cksum 0x8382 (incorrect -> 0xb704), seq 2565260294, win 64240, options [mss 1460,sackOK,TS val 2917954112 ecr 0,nop,wscale 7], length 0
	0x0000:  4510 003c 4d5a 4000 4006 69fe c0a8 0102
	0x0010:  c0a8 0101 9586 0016 98e6 c406 0000 0000
	0x0020:  a002 faf0 8382 0000 0204 05b4 0402 080a
	0x0030:  adec 7240 0000 0000 0103 0307
16:43:51.324255 IP (tos 0x10, ttl 64, id 19803, offset 0, flags [DF], proto TCP (6), length 60)
    192.168.1.2.38278 > 192.168.1.1.22: Flags [S], cksum 0x8382 (incorrect -> 0xb300), seq 2565260294, win 64240, options [mss 1460,sackOK,TS val 2917955140 ecr 0,nop,wscale 7], length 0
	0x0000:  4510 003c 4d5b 4000 4006 69fd c0a8 0102
	0x0010:  c0a8 0101 9586 0016 98e6 c406 0000 0000
	0x0020:  a002 faf0 8382 0000 0204 05b4 0402 080a
	0x0030:  adec 7644 0000 0000 0103 0307


> >> You can also try adjusting the RGMII TX/RX delay and pause settings -
> >> that might help for the R2 where you aren't getting any packets
> >> through.
> >
> > r2pro i got working by setting both delays to 0 as phy-driver does the same (after some calculation).
> >
> > on r64 this is a bit more tricky, because the phy driver uses  tx=1 and rx=3 with this calculation for reg-value
> >
> > regData = (regData & 0xFFF0) | ((txDelay << 3) & 0x0008) | (rxDelay & 0x0007);
> >
> > but in dts i need the values in picosends (?) and here i do not know
> > how to calculate them
> 
> Try:
> 
>     tx-internal-delay-ps = <2000>;
>     rx-internal-delay-ps = <1000>;
> 
> This should correspond to internal values tx=1 and rx=3.

thanks i've found out and used tx=2000 and rx=900 (your 1000 is rounded to 3), but only disabling checksum-offloading fixed the problem. need to look how to make it persistent.

Afaik switch driver does not do any Checksum-handling so problem lies in the SOC ethernet driver (here i guess the mtk_soc_eth.c for mt7622). maybe i find an option to disable the offloading in dts because boards with mt7531 switch  working. maybe DSA-Tag handling can be changed, but this is no breaking point from my POV.

regards Frank

Powered by blists - more mailing lists