diff --git a/src/etc/inc/interfaces.inc b/src/etc/inc/interfaces.inc index 1f52b6199..92203ad1f 100644 --- a/src/etc/inc/interfaces.inc +++ b/src/etc/inc/interfaces.inc @@ -272,13 +272,16 @@ function interface_vlan_configure(&$vlan) } } - foreach ($members as $member) { - // set one tag at a time to avoid driver issues - foreach (array('vlanmtu', 'vlanhwtag', 'vlanhwfilter', 'vlanhwcsum', 'vlanhwtso') as $tag) { - if (!isset($config['system']['disablevlanhwfilter'])) { - legacy_interface_flags($member, $tag); - } else { - legacy_interface_flags($member, '-'.$tag); + // disable/enable hardware vlan tags, will be skipped when "Leave default" (option 2) is selected + if (!isset($config['system']['disablevlanhwfilter']) || $config['system']['disablevlanhwfilter'] == 1) { + foreach ($members as $member) { + // set one tag at a time to avoid driver issues + foreach (array('vlanmtu', 'vlanhwtag', 'vlanhwfilter', 'vlanhwcsum', 'vlanhwtso') as $tag) { + if (!isset($config['system']['disablevlanhwfilter'])) { + legacy_interface_flags($member, $tag); + } else { + legacy_interface_flags($member, '-'.$tag); + } } } } diff --git a/src/www/system_advanced_network.php b/src/www/system_advanced_network.php index 5e5e605ac..3be251bef 100644 --- a/src/www/system_advanced_network.php +++ b/src/www/system_advanced_network.php @@ -46,7 +46,11 @@ if ($_SERVER['REQUEST_METHOD'] === 'GET') { $pconfig['disablechecksumoffloading'] = isset($config['system']['disablechecksumoffloading']); $pconfig['disablesegmentationoffloading'] = isset($config['system']['disablesegmentationoffloading']); $pconfig['disablelargereceiveoffloading'] = isset($config['system']['disablelargereceiveoffloading']); - $pconfig['disablevlanhwfilter'] = isset($config['system']['disablevlanhwfilter']); + if (!isset($config['system']['disablevlanhwfilter'])) { + $pconfig['disablevlanhwfilter'] = "0"; + } else { + $pconfig['disablevlanhwfilter'] = $config['system']['disablevlanhwfilter']; + } $pconfig['sharednet'] = isset($config['system']['sharednet']); } elseif ($_SERVER['REQUEST_METHOD'] === 'POST') { $pconfig = $_POST; @@ -107,13 +111,12 @@ if ($_SERVER['REQUEST_METHOD'] === 'GET') { } if (!empty($_POST['disablevlanhwfilter'])) { - $config['system']['disablevlanhwfilter'] = true; + $config['system']['disablevlanhwfilter'] = $pconfig['disablevlanhwfilter']; } elseif(isset($config['system']['disablevlanhwfilter'])) { unset($config['system']['disablevlanhwfilter']); } if (count($input_errors) == 0) { - setup_polling(); if (isset($config['system']['sharednet'])) { system_disable_arp_wrong_if(); @@ -126,10 +129,10 @@ if ($_SERVER['REQUEST_METHOD'] === 'GET') { } write_config(); - $savemsg = get_std_save_message(); - prefer_ipv4_or_ipv6(); filter_configure(); + header("Location: system_advanced_network.php"); + exit; } } @@ -278,8 +281,17 @@ include("head.inc");