"I looked into it deeper, the driver does rxvlan offloading."

Is this part of the driver upstream or are you using a vendor tree from
Freescale which has that change included?

On 8/4/2020 7:14 AM, Gaube, Marvin (THSE-TL1) wrote:
> Hello,
> I looked into it deeper, the driver does rxvlan offloading. 
> By disabling it manually trough ethtool, the behavior becomes as expected.
> 
> I've taken "net: dsa: sja1105: disable rxvlan offload for the DSA master" 
> from 
> (https://lore.kernel.org/netdev/20200512234921.25460-1-olte...@gmail.com/) 
> and also applied it to the KSZ9477-Driver, which fixes the problem.
> It's probably a workaround, but fixes the VLAN behavior for now. I would 
> suggest also applying "ds->disable_master_rxvlan = true;" to KSZ9477 after 
> the mentioned patch is merged.
> 
> Best Regards
> Marvin Gaube
> 
> -----Ursprüngliche Nachricht-----
> Von: Gaube, Marvin (THSE-TL1) 
> Gesendet: Donnerstag, 30. Juli 2020 11:35
> An: 'Florian Fainelli' <f.faine...@gmail.com>; Woojung Huh 
> <woojung....@microchip.com>; Microchip Linux Driver Support 
> <unglinuxdri...@microchip.com>
> Cc: netdev@vger.kernel.org
> Betreff: AW: AW: PROBLEM: (DSA/Microchip): 802.1Q-Header lost on KSZ9477-DSA 
> ingress without bridge
> 
> Hello,
> the following was tested:
> 
> ip link add name br0 type bridge
> echo 1 >/sys/class/net/br0/bridge/vlan_filtering
> ip link set dev lan1 master br0
> ip link set dev lan1 up
> ip link set dev br0 up
> bridge vlan show
>> port              vlan-id  
>> lan1              1 PVID Egress Untagged
>> br0               1 PVID Egress Untagged
> tcpdump -i br0 -e
>> de:1c:87:(..) (oui Unknown) > 33:33:00:01:00:06 (oui Unknown), ethertype 
>> IPv6 (0x86dd), length 308 ...
> bridge vlan del dev lan1 vid 1
> bridge vlan add dev lan1 vid 21 tagged
> bridge vlan show
>> port              vlan-id  
>> lan1              21
>> br0               1 PVID Egress Untagged
> tcpdump -i br0 -e
>> Nothing. The frames with VLAN 21 ingress should appear here
> bridge vlan del dev lan1 vid 21
> bridge vlan add dev lan1 vid 25 pvid
> bridge vlan show
>> port              vlan-id  
>> lan1              25 PVID
>> br0               1 PVID Egress Untagged
> tcpdump -i br0 -e
>> de:1c:87:(..) (oui Unknown) > 33:33:00:01:00:06 (oui Unknown), ethertype 
>> 802.1Q (0x8100), length 312: vlan 25, p 0, ethertype IPv6 ...
> 
> When I tcpdump onto eth1, I see the packets with 0x8100 vid 21 all the time.
> 
> The MAC driver is freescale/fec on imx7d (compatible string in device tree: 
> "fsl,imx7d-fecfsl,imx6sx-fec"). 
> It seems, that it not sets NETIF_F_HW_VLAN_CTAG_FILTER.
> 
> Best Regards
> Marvin Gaube
> 
> -----Ursprüngliche Nachricht-----
> Von: Florian Fainelli <f.faine...@gmail.com> 
> Gesendet: Mittwoch, 29. Juli 2020 17:03
> An: Gaube, Marvin (THSE-TL1) <marvin.ga...@tesat.de>; Woojung Huh 
> <woojung....@microchip.com>; Microchip Linux Driver Support 
> <unglinuxdri...@microchip.com>
> Cc: netdev@vger.kernel.org
> Betreff: Re: AW: PROBLEM: (DSA/Microchip): 802.1Q-Header lost on KSZ9477-DSA 
> ingress without bridge
> 
> 
> 
> On 7/29/2020 7:49 AM, Gaube, Marvin (THSE-TL1) wrote:
>> Hello,
>> I just tried a VLAN-enabled bridge.
>> All ingress packets definitely have the 802.1q-Tag on CPU ingress, 
>> double-checked that. Tried again with VLAN21-Tagged frames coming in the 
>> physical port.
>> It seems that the bridge also handles all packets from lan1 as untagged. 
>> When I add lan1 to the bridge, the following happens:
>>
>> If lan1 has (only) VLAN 21 tagged on the bridge, no packet appears.
>> As soon as I add an untagged/pvid VLAN to lan1 on the bridge, all packets 
>> appear on the bridge with whichever VLAN I added.
>> I checked simultaneously with the CPU Ingress-Port (eth1), the same packets 
>> had Ethertype 8100 with VLAN 21 when they entered CPU.
> 
> Can you share the commands you use to set-up your bridge with VLAN filtering 
> and VLAN21 added to the VLAN database of the bridge for lan1?
> 
>>
>> With Switchport 1, the physical switch port of the KSZ is meant.
> 
> OK.
> 
>>
>> About the last thing: VLAN tagged frames are definitively passed to the CPU.
>> If I "tcpdump -xx" onto eth1, I see for example "(12 byte MAC) 8100 0015 
>> 86dd (IPv6-Payload)". The tail tag is also visible.
>> Exactly the same frame appears on lan1 as "(12 byte MAC) 86dd 
>> (IPv6-Payload)", so the 802.1q-Header is present on CPU ingress.
>> Therefore the VLAN tag probably is lost between eth1 (Ingress) and the 
>> respective DSA-Interface, and is not filtered on the KSZ9477.
> 
> What Ethernet controller driver is eth1, does it support VLAN receive filter 
> (NETIF_F_HW_VLAN_CTAG_FILTER)?
> 
>>
>> Best Regards
>> Marvin Gaube
>>
>> -----Ursprüngliche Nachricht-----
>> Von: Florian Fainelli <f.faine...@gmail.com>
>> Gesendet: Mittwoch, 29. Juli 2020 15:48
>> An: Gaube, Marvin (THSE-TL1) <marvin.ga...@tesat.de>; Woojung Huh 
>> <woojung....@microchip.com>; Microchip Linux Driver Support 
>> <unglinuxdri...@microchip.com>
>> Cc: netdev@vger.kernel.org
>> Betreff: Re: PROBLEM: (DSA/Microchip): 802.1Q-Header lost on 
>> KSZ9477-DSA ingress without bridge
>>
>>
>>
>> On 7/28/2020 11:05 PM, Gaube, Marvin (THSE-TL1) wrote:
>>> Summary: 802.1Q-Header lost on KSZ9477-DSA ingress without bridge
>>> Keywords: networking, dsa, microchip, 802.1q, vlan Full description:
>>>
>>> Hello,
>>> we're trying to get 802.1Q-Tagged Ethernet Frames through an KSZ9477 
>>> DSA-enabled switch without creating a bridge on the kernel side.
>>
>> Does it work if you have a bridge that is VLAN aware though? If it does, 
>> this would suggest that the default VLAN behavior without a bridge is too 
>> restrictive and needs changing.
>>
>>> Following setup:
>>> Switchport 1 <-- KSZ9477 --> eth1 (CPU-Port) <---> lan1
>>
>> This representation is confusing, is switchport 1 a network device or is 
>> this meant to be physical switch port number of 1 of the KSZ9477?
>>
>>>
>>> No bridge is configured, only the interface directly. Untagged packets are 
>>> working without problems. The Switch uses the ksz9477-DSA-Driver with 
>>> Tail-Tagging ("DSA_TAG_PROTO_KSZ9477").
>>> When sending packets with 802.1Q-Header (tagged VLAN) into the Switchport, 
>>> I see them including the 802.1Q-Header on eth1.
>>> They also appear on lan1, but with the 802.1Q-Header missing.
>>> When I create an VLAN-Interface over lan1 (e.g. lan1.21), nothing arrives 
>>> there.
>>> The other way around, everything works fine: Packets transmitted into 
>>> lan1.21 are appearing in 802.1Q-VLAN 21 on the Switchport 1.
>>>
>>> I assume that is not the intended behavior.
>>> I haven't found an obvious reason for this behavior yet, but I suspect the 
>>> VLAN-Header gets stripped of anywhere around "dsa_switch_rcv" in 
>>> net/dsa/dsa.c or "ksz9477_rcv" in net/dsa/tag_ksz.c.
>>
>> Not sure how though, ksz9477_rcv() only removes the trail tag, this should 
>> leave any header intact. It seems to me that the switch is incorrectly 
>> configured and is not VLAN aware at all, nor passing VLAN tagged frames 
>> through on ingress to CPU when it should.
>> --
>> Florian
>>
>> ________________________________
>>
>> Tesat-Spacecom GmbH & Co. KG
>> Sitz: Backnang; Registergericht: Amtsgericht Stuttgart HRA 270977 
>> Persoenlich haftender Gesellschafter: Tesat-Spacecom 
>> Geschaeftsfuehrungs GmbH;
>> Sitz: Backnang; Registergericht: Amtsgericht Stuttgart HRB 271658;
>> Geschaeftsfuehrung: Dr. Marc Steckling, Kerstin Basche, Ralf 
>> Zimmermann
>>
>> [banner]
>>
> 
> --
> Florian
> 

-- 
Florian

Reply via email to