Re: [PATCH net-next] net: dsa: Do not configure VLAN ID 0

From: Florian Fainelli
Date: Fri Mar 01 2019 - 12:52:22 EST


On 3/1/19 2:34 AM, Michal VokÃÄ wrote:
> On 01. 03. 19 0:49, Florian Fainelli wrote:
>> Because we skip the prepare phase, we would not get a chance to have the
>> port_vlan_prepare() callback return -EOPNOTSUPP and tell us about that.
>> This causes problems with mv88e6xxx which specifically checks for VLAN
>> ID = 0. Turns out we do not actually need to program that VLAN ID since
>> it should be the default one for switches anyway.
>>
>> Reported-by: Heiner Kallweit <hkallweit1@xxxxxxxxx>
>> Fixes: 061f6a505ac3 ("net: dsa: Add ndo_vlan_rx_{add, kill}_vid
>> implementation")
>> Signed-off-by: Florian Fainelli <f.fainelli@xxxxxxxxx>
>> ---
>> Â net/dsa/slave.c | 6 ++++++
>> Â 1 file changed, 6 insertions(+)
>>
>> diff --git a/net/dsa/slave.c b/net/dsa/slave.c
>> index 1808a2cd6872..ec54d579645a 100644
>> --- a/net/dsa/slave.c
>> +++ b/net/dsa/slave.c
>> @@ -996,6 +996,9 @@ static int dsa_slave_vlan_rx_add_vid(struct
>> net_device *dev, __be16 proto,
>> ÂÂÂÂÂ struct bridge_vlan_info info;
>> ÂÂÂÂÂ int ret;
>> Â +ÂÂÂ if (vid == 0)
>> +ÂÂÂÂÂÂÂ return 0;
>> +
>> ÂÂÂÂÂ /* Check for a possible bridge VLAN entry now since there is no
>> ÂÂÂÂÂÂ * need to emulate the switchdev prepare + commit phase.
>> ÂÂÂÂÂÂ */
>> @@ -1029,6 +1032,9 @@ static int dsa_slave_vlan_rx_kill_vid(struct
>> net_device *dev, __be16 proto,
>> ÂÂÂÂÂ struct bridge_vlan_info info;
>> ÂÂÂÂÂ int ret;
>> Â +ÂÂÂ if (vid == 0)
>> +ÂÂÂÂÂÂÂ return 0;
>> +
>> ÂÂÂÂÂ /* Check for a possible bridge VLAN entry now since there is no
>> ÂÂÂÂÂÂ * need to emulate the switchdev prepare + commit phase.
>> ÂÂÂÂÂÂ */
>>
>
> Tested-by: Michal VokÃÄ <michal.vokac@xxxxxxxxx>
>
> I am not sure what was the original problem as I could not find the
> thread where Heiner reported the issue but with the latest version
> next-20190228 I get this error with QCA8334 switch:

Thanks Michal. There is still a lingering issue though, because we
currently skip the prepare phase (we don't have a switchdev_trans
structure that would make sense here), we are not checking that the
underlying switch device driver does actually support
port_vlan_add/port_vlan_del, and qca8k currently does not. I will submit
a v2 patch that also takes care of that.

>
> root@hydraco:~# ifconfig eth0 up
> [ÂÂ 58.323015] Generic PHY fixed-0:00: attached PHY driver [Generic PHY]
> (mii_bus:phy_addr=fixed-0:00, irq=POLL)
> [ÂÂ 58.333960] fec 2188000.ethernet eth0: Link is Up - 1Gbps/Full - flow
> control off
> [ÂÂ 58.352092] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
>
> root@hydraco:~# ifconfig eth1 up
> [ÂÂ 63.560167] qca8k 2188000.ethernet-1:00 eth1: configuring for phy/
> link mode
> [ÂÂ 63.568613] qca8k 2188000.ethernet-1:00 eth1: Link is Up - 1Gbps/Full
> - flow control rx/tx
> [ÂÂ 63.574751] 8021q: adding VLAN 0 to HW filter on device eth1
> [ÂÂ 63.587791] Unable to handle kernel NULL pointer dereference at
> virtual address 00000000
> [ÂÂ 63.595901] pgd = (ptrval)
> [ÂÂ 63.598930] [00000000] *pgd=78d90831, *pte=00000000, *ppte=00000000
> [ÂÂ 63.605234] Internal error: Oops: 80000007 [#1] PREEMPT SMP ARM
> [ÂÂ 63.611170] CPU: 1 PID: 375 Comm: ifconfig Not tainted
> 5.0.0-rc8-next-20190228-00001-g760ce972e969 #96
> [ÂÂ 63.620484] Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
> [ÂÂ 63.627019] PC is atÂÂ (null)
> [ÂÂ 63.630007] LR is at dsa_switch_event+0x3ec/0x5a0
> [ÂÂ 63.634716] pc : [<00000000>]ÂÂÂ lr : [<80a630b8>]ÂÂÂ psr: 200e0013
> [ÂÂ 63.640987] sp : e9201b50Â ip : 00000000Â fp : e9201b7c
> [ 63.646216] r10: e8a3ce1c r9 : 00000000 r8 : 00000000
> [ÂÂ 63.651446] r7 : e9201bf8Â r6 : e8a3c840Â r5 : e8a3c884Â r4 : e8a3c84c
> [ÂÂ 63.657976] r3 : 00000000Â r2 : e9201bf8Â r1 : 00000000Â r0 : e8a3c840
> [ 63.664508] Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARMÂ
> Segment none
> [ 63.671648] Control: 10c5387d Table: 7920804a DAC: 00000051
> [ÂÂ 63.677401] Process ifconfig (pid: 375, stack limit = 0x(ptrval))
> [ÂÂ 63.683502] Stack: (0xe9201b50 to 0xe9202000)
> [ÂÂ 63.687867] 1b40:ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ 80a62ccc
> ffffffff 00000000 e9201bc4
> [ÂÂ 63.696053] 1b60: 00000007 00000000 e8a3f000 00000001 e9201ba4
> e9201b80 8014ab0c 80a62cd8
> [ÂÂ 63.704238] 1b80: 8100a548 e8a3ca00 00000200 00000000 00000000
> e8a3f000 e9201bbc e9201ba8
> [ÂÂ 63.712424] 1ba0: 8014b15c 8014aac0 00000000 801543f4 e9201bec
> e9201bc0 80a6089c 8014b140
> [ÂÂ 63.720609] 1bc0: 8017dd48 e9201bf8 00000000 00000000 00000003
> ec6c7ddd 8100a548 e8a3ca00
> [ÂÂ 63.728794] 1be0: e9201c2c e9201bf0 80a61774 80a60830 8016e8a0
> 80286558 00000000 00000000
> [ÂÂ 63.736978] 1c00: 00000000 00000000 00000000 00000000 00000000
> ec6c7ddd 00004220 00010000
> [ÂÂ 63.745165] 1c20: e9201c4c e9201c30 80ae8b6c 80a616fc e8b778c0
> e8c44750 00000081 e8c44700
> [ÂÂ 63.753350] 1c40: e9201c8c e9201c50 80ae9374 80ae8b1c e9201c7c
> e9201c60 8017e9d4 e8a3f000
> [ÂÂ 63.761536] 1c60: e9201c84 ffffffee e8a3f000 00000001 00000000
> 8100a548 e9201c9c 00000000
> [ÂÂ 63.769721] 1c80: e9201cdc e9201c90 80aea10c 80ae9290 e8b59000
> 80a37860 81097500 e9201c9c
> [ÂÂ 63.777905] 1ca0: e9201c9c e9201cb0 80a37860 ec6c7ddd 00a377a8
> ffffffee 810a321c e9201d40
> [ÂÂ 63.786090] 1cc0: 00000001 00000000 00000000 00000000 e9201d04
> e9201ce0 8014ab0c 80ae9954
> [ÂÂ 63.794275] 1ce0: 00000001 e9201d40 00000001 e8a3f138 00000000
> 00000000 e9201d1c e9201d08
> [ÂÂ 63.802459] 1d00: 8014b15c 8014aac0 00000000 8086478c e9201d3c
> e9201d20 808647a4 8014b140
> [ÂÂ 63.810644] 1d20: 00000a20 00000000 8100a548 e8a3f000 e9201d6c
> e9201d40 8086ffc8 80864774
> [ÂÂ 63.818829] 1d40: e8a3f000 00000000 e8a3f000 ec6c7ddd 00000000
> e8a3f000 00000001 00000000
> [ÂÂ 63.827014] 1d60: e9201d94 e9201d70 808707ec 8086ff68 e9201e00
> 00000000 8100a548 e88bba0c
> [ÂÂ 63.835198] 1d80: 00008914 00000000 e9201dfc e9201d98 809abebc
> 808707a8 40070093 00000cc0
> [ÂÂ 63.843383] 1da0: e9201e00 ec6c7ddd ebf9b1e4 e88bba00 e8a3f000
> 00000014 00000cc0 00001043
> [ÂÂ 63.851568] 1dc0: 00000000 0007077c 000000ab ec6c7ddd 80154330
> 8100a548 7ee7ebc8 00008914
> [ÂÂ 63.859753] 1de0: 81097500 00000051 00000003 00000036 e9201e7c
> e9201e00 809ae278 809ab8f4
> [ÂÂ 63.867938] 1e00: 31687465 00000000 00000000 00000000 00001043
> 00000000 0007077c 000000ab
> [ÂÂ 63.876123] 1e20: 808678f4 8089e04c e8a3f000 808678ac e9201e54
> e9201e40 808678f4 8089e450
> [ÂÂ 63.884309] 1e40: e9201e8c 00000000 e9201e7c e9201e58 8089e450
> ec6c7ddd 00008914 8100a548
> [ÂÂ 63.892493] 1e60: 7ee7ebc8 81097500 e68ac020 00000003 e9201ed4
> e9201e80 808486f4 809ae070
> [ÂÂ 63.900678] 1e80: e8d8d300 00000001 e8da4080 31687465 00000000
> 00000000 00000000 00001002
> [ÂÂ 63.908863] 1ea0: 00000000 0007077c 000000ab ec6c7ddd 8100a548
> 7ee7ebc8 e8d8d300 00008914
> [ÂÂ 63.917049] 1ec0: e68ac020 00000003 e9201f6c e9201ed8 802b3d68
> 808484e4 8100a548 e8022b10
> [ÂÂ 63.925234] 1ee0: 80cad950 e68ac020 e9201f3c e9201ef8 802a0bd4
> 802a0a1c e8022b10 e67db440
> [ÂÂ 63.933419] 1f00: e9201f2c e9201f10 80154330 801752cc e8da2100
> 00000003 e8d8d300 802c0910
> [ÂÂ 63.941605] 1f20: e9201f4c e9201f30 802c0910 801543f4 00000000
> 8100a548 00000000 ec6c7ddd
> [ÂÂ 63.949790] 1f40: e9201f5c e8d8d300 e8d8d300 00000003 00008914
> 7ee7ebc8 e9200000 00000036
> [ÂÂ 63.957975] 1f60: e9201f94 e9201f70 802b45e4 802b3cb4 00065534
> 7ee7edac 7ee7eec7 00000036
> [ÂÂ 63.966160] 1f80: 80101204 e9200000 e9201fa4 e9201f98 802b4620
> 802b45ac 00000000 e9201fa8
> [ÂÂ 63.974345] 1fa0: 80101000 802b4614 00065534 7ee7edac 00000003
> 00008914 7ee7ebc8 00065534
> [ÂÂ 63.982530] 1fc0: 00065534 7ee7edac 7ee7eec7 00000036 7ee7edac
> 00000004 7ee7ebc8 00000003
> [ÂÂ 63.990714] 1fe0: 00083648 7ee7eb64 000183f5 76ea408c 20070010
> 00000003 00000000 00000000
> [ÂÂ 63.998892] Backtrace:
> [ÂÂ 64.001360] [<80a62ccc>] (dsa_switch_event) from [<8014ab0c>]
> (notifier_call_chain+0x58/0x94)
> [ÂÂ 64.009895]Â r10:00000001 r9:e8a3f000 r8:00000000 r7:00000007
> r6:e9201bc4 r5:00000000
> [ÂÂ 64.017728]Â r4:ffffffff r3:80a62ccc
> [ÂÂ 64.021315] [<8014aab4>] (notifier_call_chain) from [<8014b15c>]
> (raw_notifier_call_chain+0x28/0x30)
> [ÂÂ 64.030456]Â r9:e8a3f000 r8:00000000 r7:00000000 r6:00000200
> r5:e8a3ca00 r4:8100a548
> [ÂÂ 64.038210] [<8014b134>] (raw_notifier_call_chain) from [<80a6089c>]
> (dsa_port_vlan_add+0x78/0xa8)
> [ÂÂ 64.047180] [<80a60824>] (dsa_port_vlan_add) from [<80a61774>]
> (dsa_slave_vlan_rx_add_vid+0x84/0xb0)
> [ÂÂ 64.056318]Â r5:e8a3ca00 r4:8100a548
> [ÂÂ 64.059911] [<80a616f0>] (dsa_slave_vlan_rx_add_vid) from
> [<80ae8b6c>] (vlan_add_rx_filter_info+0x5c/0x84)
> [ÂÂ 64.069567]Â r5:00010000 r4:00004220
> [ÂÂ 64.073155] [<80ae8b10>] (vlan_add_rx_filter_info) from [<80ae9374>]
> (vlan_vid_add+0xf0/0x1bc)
> [ÂÂ 64.081773]Â r7:e8c44700 r6:00000081 r5:e8c44750 r4:e8b778c0
> [ÂÂ 64.087442] [<80ae9284>] (vlan_vid_add) from [<80aea10c>]
> (vlan_device_event+0x7c4/0x7c8)
> [ÂÂ 64.095626]Â r10:00000000 r9:e9201c9c r8:8100a548 r7:00000000
> r6:00000001 r5:e8a3f000
> [ÂÂ 64.103459]Â r4:ffffffee
> [ÂÂ 64.106001] [<80ae9948>] (vlan_device_event) from [<8014ab0c>]
> (notifier_call_chain+0x58/0x94)
> [ÂÂ 64.114620]Â r10:00000000 r9:00000000 r8:00000000 r7:00000001
> r6:e9201d40 r5:810a321c
> [ÂÂ 64.122451]Â r4:ffffffee
> [ÂÂ 64.124993] [<8014aab4>] (notifier_call_chain) from [<8014b15c>]
> (raw_notifier_call_chain+0x28/0x30)
> [ÂÂ 64.134133]Â r9:00000000 r8:00000000 r7:e8a3f138 r6:00000001
> r5:e9201d40 r4:00000001
> [ÂÂ 64.141892] [<8014b134>] (raw_notifier_call_chain) from [<808647a4>]
> (call_netdevice_notifiers_info+0x3c/0x88)
> [ÂÂ 64.151904] [<80864768>] (call_netdevice_notifiers_info) from
> [<8086ffc8>] (__dev_notify_flags+0x6c/0xe4)
> [ÂÂ 64.161474]Â r5:e8a3f000 r4:8100a548
> [ÂÂ 64.165058] [<8086ff5c>] (__dev_notify_flags) from [<808707ec>]
> (dev_change_flags+0x50/0x58)
> [ÂÂ 64.173502]Â r6:00000000 r5:00000001 r4:e8a3f000
> [ÂÂ 64.178133] [<8087079c>] (dev_change_flags) from [<809abebc>]
> (devinet_ioctl+0x5d4/0x72c)
> [ÂÂ 64.186318]Â r9:00000000 r8:00008914 r7:e88bba0c r6:8100a548
> r5:00000000 r4:e9201e00
> [ÂÂ 64.194071] [<809ab8e8>] (devinet_ioctl) from [<809ae278>]
> (inet_ioctl+0x214/0x3c0)
> [ÂÂ 64.201735]Â r10:00000036 r9:00000003 r8:00000051 r7:81097500
> r6:00008914 r5:7ee7ebc8
> [ÂÂ 64.209567]Â r4:8100a548
> [ÂÂ 64.212118] [<809ae064>] (inet_ioctl) from [<808486f4>]
> (sock_ioctl+0x21c/0x488)
> [ÂÂ 64.219521]Â r9:00000003 r8:e68ac020 r7:81097500 r6:7ee7ebc8
> r5:8100a548 r4:00008914
> [ÂÂ 64.227276] [<808484d8>] (sock_ioctl) from [<802b3d68>]
> (do_vfs_ioctl+0xc0/0x8f8)
> [ÂÂ 64.234766]Â r9:00000003 r8:e68ac020 r7:00008914 r6:e8d8d300
> r5:7ee7ebc8 r4:8100a548
> [ÂÂ 64.242517] [<802b3ca8>] (do_vfs_ioctl) from [<802b45e4>]
> (ksys_ioctl+0x44/0x68)
> [ÂÂ 64.249920]Â r10:00000036 r9:e9200000 r8:7ee7ebc8 r7:00008914
> r6:00000003 r5:e8d8d300
> [ÂÂ 64.257752]Â r4:e8d8d300
> [ÂÂ 64.260294] [<802b45a0>] (ksys_ioctl) from [<802b4620>]
> (sys_ioctl+0x18/0x1c)
> [ÂÂ 64.267437]Â r9:e9200000 r8:80101204 r7:00000036 r6:7ee7eec7
> r5:7ee7edac r4:00065534
> [ÂÂ 64.275192] [<802b4608>] (sys_ioctl) from [<80101000>]
> (ret_fast_syscall+0x0/0x54)
> [ÂÂ 64.282765] Exception stack(0xe9201fa8 to 0xe9201ff0)
> [ÂÂ 64.287825] 1fa0:ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ 00065534 7ee7edac 00000003
> 00008914 7ee7ebc8 00065534
> [ÂÂ 64.296011] 1fc0: 00065534 7ee7edac 7ee7eec7 00000036 7ee7edac
> 00000004 7ee7ebc8 00000003
> [ÂÂ 64.304192] 1fe0: 00083648 7ee7eb64 000183f5 76ea408c
> [ÂÂ 64.309253] Code: bad PC value
> [ÂÂ 64.313351] ---[ end trace f18ee16759e4e878 ]---
>
> I tracked it down to commit 061f6a505ac3 ("net: dsa: Add
> ndo_vlan_rx_{add, kill}_vid
> implementation") and this patch fixes it for me.
>
> Thank you,
> Michal


--
Florian