File tree Expand file tree Collapse file tree 3 files changed +38
-1
lines changed
tools/testing/selftests/net Expand file tree Collapse file tree 3 files changed +38
-1
lines changed Original file line number Diff line number Diff line change @@ -407,6 +407,8 @@ int vlan_vids_add_by_dev(struct net_device *dev,
407
407
return 0 ;
408
408
409
409
list_for_each_entry (vid_info , & vlan_info -> vid_list , list ) {
410
+ if (!vlan_hw_filter_capable (by_dev , vid_info -> proto ))
411
+ continue ;
410
412
err = vlan_vid_add (dev , vid_info -> proto , vid_info -> vid );
411
413
if (err )
412
414
goto unwind ;
@@ -417,6 +419,8 @@ int vlan_vids_add_by_dev(struct net_device *dev,
417
419
list_for_each_entry_continue_reverse (vid_info ,
418
420
& vlan_info -> vid_list ,
419
421
list ) {
422
+ if (!vlan_hw_filter_capable (by_dev , vid_info -> proto ))
423
+ continue ;
420
424
vlan_vid_del (dev , vid_info -> proto , vid_info -> vid );
421
425
}
422
426
@@ -436,8 +440,11 @@ void vlan_vids_del_by_dev(struct net_device *dev,
436
440
if (!vlan_info )
437
441
return ;
438
442
439
- list_for_each_entry (vid_info , & vlan_info -> vid_list , list )
443
+ list_for_each_entry (vid_info , & vlan_info -> vid_list , list ) {
444
+ if (!vlan_hw_filter_capable (by_dev , vid_info -> proto ))
445
+ continue ;
440
446
vlan_vid_del (dev , vid_info -> proto , vid_info -> vid );
447
+ }
441
448
}
442
449
EXPORT_SYMBOL (vlan_vids_del_by_dev );
443
450
Original file line number Diff line number Diff line change @@ -91,6 +91,7 @@ TEST_PROGS += test_bridge_neigh_suppress.sh
91
91
TEST_PROGS += test_vxlan_nolocalbypass.sh
92
92
TEST_PROGS += test_bridge_backup_port.sh
93
93
TEST_PROGS += fdb_flush.sh
94
+ TEST_PROGS += vlan_hw_filter.sh
94
95
95
96
TEST_FILES := settings
96
97
Original file line number Diff line number Diff line change
1
+ #! /bin/sh
2
+ # SPDX-License-Identifier: GPL-2.0
3
+
4
+ readonly NETNS=" ns-$( mktemp -u XXXXXX) "
5
+
6
+ ret=0
7
+
8
+ cleanup () {
9
+ ip netns del $NETNS
10
+ }
11
+
12
+ trap cleanup EXIT
13
+
14
+ fail () {
15
+ echo " ERROR: ${1:- unexpected return code} (ret: $_ )" >&2
16
+ ret=1
17
+ }
18
+
19
+ ip netns add ${NETNS}
20
+ ip netns exec ${NETNS} ip link add bond0 type bond mode 0
21
+ ip netns exec ${NETNS} ip link add bond_slave_1 type veth peer veth2
22
+ ip netns exec ${NETNS} ip link set bond_slave_1 master bond0
23
+ ip netns exec ${NETNS} ethtool -K bond0 rx-vlan-filter off
24
+ ip netns exec ${NETNS} ip link add link bond_slave_1 name bond_slave_1.0 type vlan id 0
25
+ ip netns exec ${NETNS} ip link add link bond0 name bond0.0 type vlan id 0
26
+ ip netns exec ${NETNS} ip link set bond_slave_1 nomaster
27
+ ip netns exec ${NETNS} ip link del veth2 || fail " Please check vlan HW filter function"
28
+
29
+ exit $ret
You can’t perform that action at this time.
0 commit comments