From: Alexandre Derumier <aderumier@odiso.com>
To: pve-devel@lists.proxmox.com
Subject: [pve-devel] [PATCH v2 pve-common 1/1] network_interfaces: disable rx-vlan-filter for physical interfaces ports of a vlan-aware bridge
Date: Tue, 27 Jun 2023 08:53:51 +0200 [thread overview]
Message-ID: <20230627065351.1348117-2-aderumier@odiso.com> (raw)
In-Reply-To: <20230627065351.1348117-1-aderumier@odiso.com>
some nic like mellanox connectx or intel i40e don't work well vlan-aware bridge
because they are limited in number of vlan filtering in hardware
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
---
src/PVE/INotify.pm | 15 +++++++++++++++
test/etc_network_interfaces/t.parsed_options.pl | 7 +++++++
2 files changed, 22 insertions(+)
diff --git a/src/PVE/INotify.pm b/src/PVE/INotify.pm
index bc33a8f..c4dd85d 100644
--- a/src/PVE/INotify.pm
+++ b/src/PVE/INotify.pm
@@ -963,6 +963,7 @@ sub __read_etc_network_interfaces {
'vxlan-svcnodeip' => 1,
'vxlan-physdev' => 1,
'vxlan-local-tunnelip' => 1,
+ 'rx-vlan-filter' => 1,
};
if ($id eq 'address' || $id eq 'netmask' || $id eq 'broadcast' || $id eq 'gateway') {
@@ -1514,6 +1515,7 @@ sub __write_etc_network_interfaces {
}
# check bond
+ my $bondslaves = {};
foreach my $iface (keys %$ifaces) {
my $d = $ifaces->{$iface};
next if !($d->{type} eq 'bond' && $d->{slaves});
@@ -1529,6 +1531,7 @@ sub __write_etc_network_interfaces {
$check_mtu->($ifaces, $iface, $p);
$bond_primary_is_slave = 1 if $d->{'bond-primary'} && $d->{'bond-primary'} eq $p;
+ $bondslaves->{$p} = $iface;
}
die "bond '$iface' - bond-primary interface is not a slave" if $d->{'bond-primary'} && !$bond_primary_is_slave;
}
@@ -1658,6 +1661,18 @@ sub __write_etc_network_interfaces {
}
}
+ # disable rx-vlan-filter if physical nic is port of a vlan-aware bridge
+ foreach my $iface (keys %$ifaces) {
+ next if $iface !~ /^$PVE::Network::PHYSICAL_NIC_RE/;
+ my $phys_iface = $iface;
+ $iface = $bondslaves->{$iface} if $bondslaves->{$iface};
+ if ($bridgeports->{$iface} && $bridges->{$bridgeports->{$iface}}->{bridge_vlan_aware}) {
+ $ifaces->{$phys_iface}->{'rx-vlan-filter'} = 'off' if !defined($ifaces->{$phys_iface}->{'rx-vlan-filter'});
+ } else {
+ delete $ifaces->{$phys_iface}->{'rx-vlan-filter'};
+ }
+ }
+
my $raw = <<'NETWORKDOC';
# network interface settings; autogenerated
# Please do NOT modify this file directly, unless you know what
diff --git a/test/etc_network_interfaces/t.parsed_options.pl b/test/etc_network_interfaces/t.parsed_options.pl
index bbb2a27..fbedf6a 100644
--- a/test/etc_network_interfaces/t.parsed_options.pl
+++ b/test/etc_network_interfaces/t.parsed_options.pl
@@ -15,6 +15,7 @@ my $gw6 = 'fc05::1';
# Load
my $cfg = load('base') . <<"CHECK";
iface eth1 inet manual
+ rx-vlan-filter off
auto vmbr0
iface vmbr0 inet static
@@ -23,6 +24,12 @@ iface vmbr0 inet static
bridge-ports eth0
bridge-stp off
bridge-fd 0
+
+auto vmbr1
+iface vmbr1 inet manual
+ bridge-ports eth1
+ bridge-stp off
+ bridge-fd 0
bridge-vlan-aware yes
bridge-vids 2-4094
--
2.39.2
prev parent reply other threads:[~2023-06-27 6:54 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-27 6:53 [pve-devel] [PATCH v2 pve-common 0/1] disable rx-vlan-filter on iface in vlan-aware-bridge Alexandre Derumier
2023-06-27 6:53 ` Alexandre Derumier [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230627065351.1348117-2-aderumier@odiso.com \
--to=aderumier@odiso.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.