From f0366c36c87632e7ef7deef338ad67e9878548a4 Mon Sep 17 00:00:00 2001 From: Jason Hendry Date: Tue, 28 Oct 2014 20:47:31 +0000 Subject: Adding offload setting management to vyatta-interfaces.pl --- scripts/vyatta-interfaces.pl | 51 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/scripts/vyatta-interfaces.pl b/scripts/vyatta-interfaces.pl index c455bb74..c91cc22c 100755 --- a/scripts/vyatta-interfaces.pl +++ b/scripts/vyatta-interfaces.pl @@ -50,7 +50,7 @@ my ($dev, $mac, $mac_update); my %skip_interface; my ($check_name, $show_names, $vif_name, $warn_name); my ($check_up, $dhcp_command, $allowed_speed); -my (@speed_duplex, @addr_commit, @check_speed); +my (@speed_duplex, @addr_commit, @check_speed, @offload_settings); sub usage { print < --check= $0 --dev= --check-speed=speed,duplex $0 --dev= --allowed-speed $0 --dev= --isup + $0 --dev= --offload-settings=tcp,udp,segmentation,recieve $0 --show= EOF exit 1; @@ -81,6 +82,7 @@ GetOptions("valid-addr-commit=s{,}" => \@addr_commit, "speed-duplex=s{2}" => \@speed_duplex, "check-speed=s{2}" => \@check_speed, "allowed-speed" => \$allowed_speed, + "offload-settings=s{4}" => \@offload_settings, ) or usage(); is_valid_addr_commit($dev, @addr_commit) if (@addr_commit); @@ -94,6 +96,7 @@ is_up($dev) if ($check_up); set_speed_duplex($dev, @speed_duplex) if (@speed_duplex); check_speed_duplex($dev, @check_speed) if (@check_speed); allowed_speed($dev) if ($allowed_speed); +set_offload_settings($dev) if (@offload_settings); exit 0; sub is_ip_configured { @@ -571,3 +574,49 @@ sub allowed_speed { close $ethtool; print 'auto ', join(' ', sort keys %speeds), "\n"; } + +sub get_offload_settings { + my $dev = shift; + + open( my $ethtool, '-|', "$ETHTOOL -k $dev 2>&1" ) or die "ethtool failed: $!\n"; + + my ($tcp, $udp, $segmen, $receive); + + while (<$ethtool>) { + chomp; + my $val = (split(/: /, $_))[1]; + + if ( /^tcp-segmentation-offload:/ ) { + $tcp = $val; + } elsif ( /^udp-fragmentation-offload:/ ) { + $udp = $val; + } elsif ( /^generic-segmentation-offload:/ ) { + $segmen = $val; + } elsif ( /^generic-receive-offload:/ ) { + $receive = $val; + } + } + + close $ethtool; + + return ($tcp, $udp, $segmen, $receive); + +} + +sub set_offload_settings { + my ($intf, $ntcp, $nudp, $nsegmen, $nreceive) = @_; + die "Missing --dev argument\n" unless $intf; + + ($tcp, $udp, $segmen, $receive) = get_offload_settings($intf); + + my $args; + + $args .= " tso $ntcp" if (defined($ntcp) && $ntcp ne $otcp); + $args .= " ufo $nudp" if (defined($nudp) && $nudp ne $oudp); + $args .= " gso $nsegmen" if (defined($nsegmen) && $nsegmen ne $osegmen); + $args .= " gro $nreceive" if (defined($nreceive) && $nreceive ne $oreceive); + + exec "$ETHTOOL -K $intf $args" if (defined($args)); + die "exec of $ETHTOOL failed: $!"; +} + -- cgit v1.2.3 From fe7820e84c720b14591c569e93e6963b58f71820 Mon Sep 17 00:00:00 2001 From: Jason Hendry Date: Wed, 29 Oct 2014 16:04:35 +0000 Subject: Adding templates for tso options. fixing logic in vyatta-interfaces for tso options --- .../offload/generic-receive-offload/node.def | 21 +++++++++++++++++++++ .../offload/generic-segmentation-offload/node.def | 21 +++++++++++++++++++++ .../interfaces/ethernet/node.tag/offload/node.def | 1 + .../offload/tcp-segmentation-offload/node.def | 21 +++++++++++++++++++++ .../offload/udp-segmentation-offload/node.def | 21 +++++++++++++++++++++ 5 files changed, 85 insertions(+) create mode 100644 templates/interfaces/ethernet/node.tag/offload/generic-receive-offload/node.def create mode 100644 templates/interfaces/ethernet/node.tag/offload/generic-segmentation-offload/node.def create mode 100644 templates/interfaces/ethernet/node.tag/offload/node.def create mode 100644 templates/interfaces/ethernet/node.tag/offload/tcp-segmentation-offload/node.def create mode 100644 templates/interfaces/ethernet/node.tag/offload/udp-segmentation-offload/node.def diff --git a/templates/interfaces/ethernet/node.tag/offload/generic-receive-offload/node.def b/templates/interfaces/ethernet/node.tag/offload/generic-receive-offload/node.def new file mode 100644 index 00000000..411565ab --- /dev/null +++ b/templates/interfaces/ethernet/node.tag/offload/generic-receive-offload/node.def @@ -0,0 +1,21 @@ +# +# Configuration template for offload settings +# + +priority: 319 # Failure barrier only - no ordering constraints + +type: txt +default: "on" +help: Configure generic-receive-offload option +val_help: on; Enable generic-receive-offload +val_help: off; Disable generic-receive-offload + +syntax:expression: $VAR(@) == "on" || $VAR(@) == "off" ; "$type must be either 'on' or 'off'" + +update: sudo /opt/vyatta/sbin/vyatta-interfaces.pl --dev=$VAR(../../@) \ + --offload-settings $VAR(../tcp-segmentation-offload/@) \ + $VAR(../udp-segmentation-offload/@) \ + $VAR(../generic-segmentation-offload/@) \ + $VAR(@) + + diff --git a/templates/interfaces/ethernet/node.tag/offload/generic-segmentation-offload/node.def b/templates/interfaces/ethernet/node.tag/offload/generic-segmentation-offload/node.def new file mode 100644 index 00000000..91b1ecf9 --- /dev/null +++ b/templates/interfaces/ethernet/node.tag/offload/generic-segmentation-offload/node.def @@ -0,0 +1,21 @@ +# +# Configuration template for offload settings +# + +priority: 319 # Failure barrier only - no ordering constraints + +type: txt +default: "on" +help: Configure generic-segmentation-offload option +val_help: on; Enable generic-segmentation-offload +val_help: off; Disable generic-segmentation-offload + +syntax:expression: $VAR(@) == "on" || $VAR(@) == "off" ; "$type must be either 'on' or 'off'" + +update: sudo /opt/vyatta/sbin/vyatta-interfaces.pl --dev=$VAR(../../@) \ + --offload-settings $VAR(../tcp-segmentation-offload/@) \ + $VAR(../udp-segmentation-offload/@) \ + $VAR(@) \ + $VAR(../generic-receive-offload/@) + + diff --git a/templates/interfaces/ethernet/node.tag/offload/node.def b/templates/interfaces/ethernet/node.tag/offload/node.def new file mode 100644 index 00000000..180a9e7c --- /dev/null +++ b/templates/interfaces/ethernet/node.tag/offload/node.def @@ -0,0 +1 @@ +help: Configuraable offload settings diff --git a/templates/interfaces/ethernet/node.tag/offload/tcp-segmentation-offload/node.def b/templates/interfaces/ethernet/node.tag/offload/tcp-segmentation-offload/node.def new file mode 100644 index 00000000..641c2c8b --- /dev/null +++ b/templates/interfaces/ethernet/node.tag/offload/tcp-segmentation-offload/node.def @@ -0,0 +1,21 @@ +# +# Configuration template for offload settings +# + +priority: 319 # Failure barrier only - no ordering constraints + +type: txt +default: "on" +help: Configure tcp-segmentation-offload option +val_help: on; Enable tcp-segmentation-offload +val_help: off; Disable tcp-segmentation-offload + +syntax:expression: $VAR(@) == "on" || $VAR(@) == "off" ; "$type must be either 'on' or 'off'" + +update: sudo /opt/vyatta/sbin/vyatta-interfaces.pl --dev=$VAR(../../@) \ + --offload-settings $VAR(@) \ + $VAR(../udp-segmentation-offload/@) \ + $VAR(../generic-segmentation-offload/@) \ + $VAR(../generic-receive-offload/@) + + diff --git a/templates/interfaces/ethernet/node.tag/offload/udp-segmentation-offload/node.def b/templates/interfaces/ethernet/node.tag/offload/udp-segmentation-offload/node.def new file mode 100644 index 00000000..d96b4be5 --- /dev/null +++ b/templates/interfaces/ethernet/node.tag/offload/udp-segmentation-offload/node.def @@ -0,0 +1,21 @@ +# +# Configuration template for offload settings +# + +priority: 319 # Failure barrier only - no ordering constraints + +type: txt +default: "on" +help: Configure udp-segmentation-offload option +val_help: on; Enable udp-segmentation-offload +val_help: off; Disable udp-segmentation-offload + +syntax:expression: $VAR(@) == "on" || $VAR(@) == "off" ; "$type must be either 'on' or 'off'" + +update: sudo /opt/vyatta/sbin/vyatta-interfaces.pl --dev=$VAR(../../@) \ + --offload-settings $VAR(../tcp-segmentation-offload/@) \ + $VAR(@) \ + $VAR(../generic-segmentation-offload/@) \ + $VAR(../generic-receive-offload/@) + + -- cgit v1.2.3 From 5aa57a127af803905e2174a449f8584068fad2ec Mon Sep 17 00:00:00 2001 From: Jason Hendry Date: Wed, 29 Oct 2014 16:53:09 +0000 Subject: Making offload setting changes change on a single option --- scripts/vyatta-interfaces.pl | 61 ++++++++++------------ .../offload/generic-receive-offload/node.def | 6 +-- .../offload/generic-segmentation-offload/node.def | 6 +-- .../offload/tcp-segmentation-offload/node.def | 7 +-- .../offload/udp-segmentation-offload/node.def | 6 +-- 5 files changed, 32 insertions(+), 54 deletions(-) diff --git a/scripts/vyatta-interfaces.pl b/scripts/vyatta-interfaces.pl index c91cc22c..f3792f74 100755 --- a/scripts/vyatta-interfaces.pl +++ b/scripts/vyatta-interfaces.pl @@ -50,7 +50,7 @@ my ($dev, $mac, $mac_update); my %skip_interface; my ($check_name, $show_names, $vif_name, $warn_name); my ($check_up, $dhcp_command, $allowed_speed); -my (@speed_duplex, @addr_commit, @check_speed, @offload_settings); +my (@speed_duplex, @addr_commit, @check_speed, @offload_option); sub usage { print < --check= $0 --dev= --check-speed=speed,duplex $0 --dev= --allowed-speed $0 --dev= --isup - $0 --dev= --offload-settings=tcp,udp,segmentation,recieve + $0 --dev= --offload-settings={tcp,udp,segmentation,receive}={value} $0 --show= EOF exit 1; @@ -82,7 +82,7 @@ GetOptions("valid-addr-commit=s{,}" => \@addr_commit, "speed-duplex=s{2}" => \@speed_duplex, "check-speed=s{2}" => \@check_speed, "allowed-speed" => \$allowed_speed, - "offload-settings=s{4}" => \@offload_settings, + "offload-settings=s{2}" => \@offload_option, ) or usage(); is_valid_addr_commit($dev, @addr_commit) if (@addr_commit); @@ -96,7 +96,7 @@ is_up($dev) if ($check_up); set_speed_duplex($dev, @speed_duplex) if (@speed_duplex); check_speed_duplex($dev, @check_speed) if (@check_speed); allowed_speed($dev) if ($allowed_speed); -set_offload_settings($dev) if (@offload_settings); +set_offload_setting($dev, @offload_option) if (@offload_option); exit 0; sub is_ip_configured { @@ -575,48 +575,43 @@ sub allowed_speed { print 'auto ', join(' ', sort keys %speeds), "\n"; } -sub get_offload_settings { - my $dev = shift; +sub get_offload_setting { + my ($dev, $option) = @_; + my ($val); open( my $ethtool, '-|', "$ETHTOOL -k $dev 2>&1" ) or die "ethtool failed: $!\n"; - - my ($tcp, $udp, $segmen, $receive); - while (<$ethtool>) { + next if ($_ !~ m/$option:/); chomp; - my $val = (split(/: /, $_))[1]; - - if ( /^tcp-segmentation-offload:/ ) { - $tcp = $val; - } elsif ( /^udp-fragmentation-offload:/ ) { - $udp = $val; - } elsif ( /^generic-segmentation-offload:/ ) { - $segmen = $val; - } elsif ( /^generic-receive-offload:/ ) { - $receive = $val; - } + $val = (split(/: /, $_))[1]; } - close $ethtool; - - return ($tcp, $udp, $segmen, $receive); + return ($val); } -sub set_offload_settings { - my ($intf, $ntcp, $nudp, $nsegmen, $nreceive) = @_; +sub set_offload_setting { + my ($intf, $option, $nvalue) = @_; die "Missing --dev argument\n" unless $intf; - ($tcp, $udp, $segmen, $receive) = get_offload_settings($intf); + my $ovalue = get_offload_setting($intf, $option); + my $args = ''; - my $args; + my %ethtool_opts = ( 'generic-receive-offload' => 'gro', + 'generic-segmentation-offload' => 'gso', + 'tcp-segmentation-offload' => 'tso', + 'udp-segmentation-offload' => 'ufo', + ); - $args .= " tso $ntcp" if (defined($ntcp) && $ntcp ne $otcp); - $args .= " ufo $nudp" if (defined($nudp) && $nudp ne $oudp); - $args .= " gso $nsegmen" if (defined($nsegmen) && $nsegmen ne $osegmen); - $args .= " gro $nreceive" if (defined($nreceive) && $nreceive ne $oreceive); + $args = "$ethtool_opts{$option} $nvalue" if (defined($nvalue) && $nvalue ne $ovalue); - exec "$ETHTOOL -K $intf $args" if (defined($args)); - die "exec of $ETHTOOL failed: $!"; + if ($args ne '') { + my $cmd = "$ETHTOOL -K $intf $args"; + system($cmd); + + if ($? >> 8) { + die "exec of $ETHTOOL failed: '$cmd'"; + } + } } diff --git a/templates/interfaces/ethernet/node.tag/offload/generic-receive-offload/node.def b/templates/interfaces/ethernet/node.tag/offload/generic-receive-offload/node.def index 411565ab..4970f2de 100644 --- a/templates/interfaces/ethernet/node.tag/offload/generic-receive-offload/node.def +++ b/templates/interfaces/ethernet/node.tag/offload/generic-receive-offload/node.def @@ -12,10 +12,6 @@ val_help: off; Disable generic-receive-offload syntax:expression: $VAR(@) == "on" || $VAR(@) == "off" ; "$type must be either 'on' or 'off'" -update: sudo /opt/vyatta/sbin/vyatta-interfaces.pl --dev=$VAR(../../@) \ - --offload-settings $VAR(../tcp-segmentation-offload/@) \ - $VAR(../udp-segmentation-offload/@) \ - $VAR(../generic-segmentation-offload/@) \ - $VAR(@) +update: sudo /opt/vyatta/sbin/vyatta-interfaces.pl --dev=$VAR(../../@) --offload-settings generic-receive-offload $VAR(@) diff --git a/templates/interfaces/ethernet/node.tag/offload/generic-segmentation-offload/node.def b/templates/interfaces/ethernet/node.tag/offload/generic-segmentation-offload/node.def index 91b1ecf9..727d91ff 100644 --- a/templates/interfaces/ethernet/node.tag/offload/generic-segmentation-offload/node.def +++ b/templates/interfaces/ethernet/node.tag/offload/generic-segmentation-offload/node.def @@ -12,10 +12,6 @@ val_help: off; Disable generic-segmentation-offload syntax:expression: $VAR(@) == "on" || $VAR(@) == "off" ; "$type must be either 'on' or 'off'" -update: sudo /opt/vyatta/sbin/vyatta-interfaces.pl --dev=$VAR(../../@) \ - --offload-settings $VAR(../tcp-segmentation-offload/@) \ - $VAR(../udp-segmentation-offload/@) \ - $VAR(@) \ - $VAR(../generic-receive-offload/@) +update: sudo /opt/vyatta/sbin/vyatta-interfaces.pl --dev=$VAR(../../@) --offload-settings generic-segmentation-offload $VAR(@) diff --git a/templates/interfaces/ethernet/node.tag/offload/tcp-segmentation-offload/node.def b/templates/interfaces/ethernet/node.tag/offload/tcp-segmentation-offload/node.def index 641c2c8b..4046139c 100644 --- a/templates/interfaces/ethernet/node.tag/offload/tcp-segmentation-offload/node.def +++ b/templates/interfaces/ethernet/node.tag/offload/tcp-segmentation-offload/node.def @@ -12,10 +12,5 @@ val_help: off; Disable tcp-segmentation-offload syntax:expression: $VAR(@) == "on" || $VAR(@) == "off" ; "$type must be either 'on' or 'off'" -update: sudo /opt/vyatta/sbin/vyatta-interfaces.pl --dev=$VAR(../../@) \ - --offload-settings $VAR(@) \ - $VAR(../udp-segmentation-offload/@) \ - $VAR(../generic-segmentation-offload/@) \ - $VAR(../generic-receive-offload/@) - +update: sudo /opt/vyatta/sbin/vyatta-interfaces.pl --dev=$VAR(../../@) --offload-settings tcp-segmentation-offload $VAR(@) diff --git a/templates/interfaces/ethernet/node.tag/offload/udp-segmentation-offload/node.def b/templates/interfaces/ethernet/node.tag/offload/udp-segmentation-offload/node.def index d96b4be5..86a7abe1 100644 --- a/templates/interfaces/ethernet/node.tag/offload/udp-segmentation-offload/node.def +++ b/templates/interfaces/ethernet/node.tag/offload/udp-segmentation-offload/node.def @@ -12,10 +12,6 @@ val_help: off; Disable udp-segmentation-offload syntax:expression: $VAR(@) == "on" || $VAR(@) == "off" ; "$type must be either 'on' or 'off'" -update: sudo /opt/vyatta/sbin/vyatta-interfaces.pl --dev=$VAR(../../@) \ - --offload-settings $VAR(../tcp-segmentation-offload/@) \ - $VAR(@) \ - $VAR(../generic-segmentation-offload/@) \ - $VAR(../generic-receive-offload/@) +update: sudo /opt/vyatta/sbin/vyatta-interfaces.pl --dev=$VAR(../../@) --offload-settings udp-segmentation-offload $VAR(@) -- cgit v1.2.3 From fe6f9b548b8482056f54d446e05aea32653349fa Mon Sep 17 00:00:00 2001 From: Jason Hendry Date: Wed, 29 Oct 2014 17:12:27 +0000 Subject: Updating comments so they make a bit more sense --- scripts/vyatta-interfaces.pl | 2 +- .../ethernet/node.tag/offload/generic-receive-offload/node.def | 2 +- .../ethernet/node.tag/offload/generic-segmentation-offload/node.def | 2 +- .../ethernet/node.tag/offload/tcp-segmentation-offload/node.def | 2 +- .../ethernet/node.tag/offload/udp-segmentation-offload/node.def | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/scripts/vyatta-interfaces.pl b/scripts/vyatta-interfaces.pl index f3792f74..14f0a125 100755 --- a/scripts/vyatta-interfaces.pl +++ b/scripts/vyatta-interfaces.pl @@ -62,7 +62,7 @@ Usage: $0 --dev= --check= $0 --dev= --check-speed=speed,duplex $0 --dev= --allowed-speed $0 --dev= --isup - $0 --dev= --offload-settings={tcp,udp,segmentation,receive}={value} + $0 --dev= --offload-settings={tcp,udp,segmentation,receive} {value} $0 --show= EOF exit 1; diff --git a/templates/interfaces/ethernet/node.tag/offload/generic-receive-offload/node.def b/templates/interfaces/ethernet/node.tag/offload/generic-receive-offload/node.def index 4970f2de..f44a3ad5 100644 --- a/templates/interfaces/ethernet/node.tag/offload/generic-receive-offload/node.def +++ b/templates/interfaces/ethernet/node.tag/offload/generic-receive-offload/node.def @@ -10,7 +10,7 @@ help: Configure generic-receive-offload option val_help: on; Enable generic-receive-offload val_help: off; Disable generic-receive-offload -syntax:expression: $VAR(@) == "on" || $VAR(@) == "off" ; "$type must be either 'on' or 'off'" +syntax:expression: $VAR(@) == "on" || $VAR(@) == "off" ; "Must be either 'on' or 'off'" update: sudo /opt/vyatta/sbin/vyatta-interfaces.pl --dev=$VAR(../../@) --offload-settings generic-receive-offload $VAR(@) diff --git a/templates/interfaces/ethernet/node.tag/offload/generic-segmentation-offload/node.def b/templates/interfaces/ethernet/node.tag/offload/generic-segmentation-offload/node.def index 727d91ff..fa6f85d8 100644 --- a/templates/interfaces/ethernet/node.tag/offload/generic-segmentation-offload/node.def +++ b/templates/interfaces/ethernet/node.tag/offload/generic-segmentation-offload/node.def @@ -10,7 +10,7 @@ help: Configure generic-segmentation-offload option val_help: on; Enable generic-segmentation-offload val_help: off; Disable generic-segmentation-offload -syntax:expression: $VAR(@) == "on" || $VAR(@) == "off" ; "$type must be either 'on' or 'off'" +syntax:expression: $VAR(@) == "on" || $VAR(@) == "off" ; "Must be either 'on' or 'off'" update: sudo /opt/vyatta/sbin/vyatta-interfaces.pl --dev=$VAR(../../@) --offload-settings generic-segmentation-offload $VAR(@) diff --git a/templates/interfaces/ethernet/node.tag/offload/tcp-segmentation-offload/node.def b/templates/interfaces/ethernet/node.tag/offload/tcp-segmentation-offload/node.def index 4046139c..6abdf4cd 100644 --- a/templates/interfaces/ethernet/node.tag/offload/tcp-segmentation-offload/node.def +++ b/templates/interfaces/ethernet/node.tag/offload/tcp-segmentation-offload/node.def @@ -10,7 +10,7 @@ help: Configure tcp-segmentation-offload option val_help: on; Enable tcp-segmentation-offload val_help: off; Disable tcp-segmentation-offload -syntax:expression: $VAR(@) == "on" || $VAR(@) == "off" ; "$type must be either 'on' or 'off'" +syntax:expression: $VAR(@) == "on" || $VAR(@) == "off" ; "Must be either 'on' or 'off'" update: sudo /opt/vyatta/sbin/vyatta-interfaces.pl --dev=$VAR(../../@) --offload-settings tcp-segmentation-offload $VAR(@) diff --git a/templates/interfaces/ethernet/node.tag/offload/udp-segmentation-offload/node.def b/templates/interfaces/ethernet/node.tag/offload/udp-segmentation-offload/node.def index 86a7abe1..c8da4de9 100644 --- a/templates/interfaces/ethernet/node.tag/offload/udp-segmentation-offload/node.def +++ b/templates/interfaces/ethernet/node.tag/offload/udp-segmentation-offload/node.def @@ -10,7 +10,7 @@ help: Configure udp-segmentation-offload option val_help: on; Enable udp-segmentation-offload val_help: off; Disable udp-segmentation-offload -syntax:expression: $VAR(@) == "on" || $VAR(@) == "off" ; "$type must be either 'on' or 'off'" +syntax:expression: $VAR(@) == "on" || $VAR(@) == "off" ; "Must be either 'on' or 'off'" update: sudo /opt/vyatta/sbin/vyatta-interfaces.pl --dev=$VAR(../../@) --offload-settings udp-segmentation-offload $VAR(@) -- cgit v1.2.3 From 34b43c530857bb7bd7407b3ae8964405342b6a2d Mon Sep 17 00:00:00 2001 From: Jason Hendry Date: Wed, 29 Oct 2014 17:39:39 +0000 Subject: Removing default settings offload values --- .../ethernet/node.tag/offload/generic-receive-offload/node.def | 1 - .../ethernet/node.tag/offload/generic-segmentation-offload/node.def | 1 - .../ethernet/node.tag/offload/tcp-segmentation-offload/node.def | 1 - .../ethernet/node.tag/offload/udp-segmentation-offload/node.def | 1 - 4 files changed, 4 deletions(-) diff --git a/templates/interfaces/ethernet/node.tag/offload/generic-receive-offload/node.def b/templates/interfaces/ethernet/node.tag/offload/generic-receive-offload/node.def index f44a3ad5..3491e074 100644 --- a/templates/interfaces/ethernet/node.tag/offload/generic-receive-offload/node.def +++ b/templates/interfaces/ethernet/node.tag/offload/generic-receive-offload/node.def @@ -5,7 +5,6 @@ priority: 319 # Failure barrier only - no ordering constraints type: txt -default: "on" help: Configure generic-receive-offload option val_help: on; Enable generic-receive-offload val_help: off; Disable generic-receive-offload diff --git a/templates/interfaces/ethernet/node.tag/offload/generic-segmentation-offload/node.def b/templates/interfaces/ethernet/node.tag/offload/generic-segmentation-offload/node.def index fa6f85d8..1ed7133b 100644 --- a/templates/interfaces/ethernet/node.tag/offload/generic-segmentation-offload/node.def +++ b/templates/interfaces/ethernet/node.tag/offload/generic-segmentation-offload/node.def @@ -5,7 +5,6 @@ priority: 319 # Failure barrier only - no ordering constraints type: txt -default: "on" help: Configure generic-segmentation-offload option val_help: on; Enable generic-segmentation-offload val_help: off; Disable generic-segmentation-offload diff --git a/templates/interfaces/ethernet/node.tag/offload/tcp-segmentation-offload/node.def b/templates/interfaces/ethernet/node.tag/offload/tcp-segmentation-offload/node.def index 6abdf4cd..95a37369 100644 --- a/templates/interfaces/ethernet/node.tag/offload/tcp-segmentation-offload/node.def +++ b/templates/interfaces/ethernet/node.tag/offload/tcp-segmentation-offload/node.def @@ -5,7 +5,6 @@ priority: 319 # Failure barrier only - no ordering constraints type: txt -default: "on" help: Configure tcp-segmentation-offload option val_help: on; Enable tcp-segmentation-offload val_help: off; Disable tcp-segmentation-offload diff --git a/templates/interfaces/ethernet/node.tag/offload/udp-segmentation-offload/node.def b/templates/interfaces/ethernet/node.tag/offload/udp-segmentation-offload/node.def index c8da4de9..8c263af9 100644 --- a/templates/interfaces/ethernet/node.tag/offload/udp-segmentation-offload/node.def +++ b/templates/interfaces/ethernet/node.tag/offload/udp-segmentation-offload/node.def @@ -5,7 +5,6 @@ priority: 319 # Failure barrier only - no ordering constraints type: txt -default: "on" help: Configure udp-segmentation-offload option val_help: on; Enable udp-segmentation-offload val_help: off; Disable udp-segmentation-offload -- cgit v1.2.3 From d5abe669e936f67df62554b6c8fafded32836e4d Mon Sep 17 00:00:00 2001 From: Jason Hendry Date: Wed, 29 Oct 2014 17:50:59 +0000 Subject: Cleaning up ethtool execution code --- scripts/vyatta-interfaces.pl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/vyatta-interfaces.pl b/scripts/vyatta-interfaces.pl index 14f0a125..9271e871 100755 --- a/scripts/vyatta-interfaces.pl +++ b/scripts/vyatta-interfaces.pl @@ -603,15 +603,15 @@ sub set_offload_setting { 'udp-segmentation-offload' => 'ufo', ); - $args = "$ethtool_opts{$option} $nvalue" if (defined($nvalue) && $nvalue ne $ovalue); + if (defined($nvalue) && $nvalue ne $ovalue) { - if ($args ne '') { - my $cmd = "$ETHTOOL -K $intf $args"; + my $cmd = "$ETHTOOL -K $intf $ethtool_opts{$option} $nvalue"; system($cmd); if ($? >> 8) { die "exec of $ETHTOOL failed: '$cmd'"; } } + } -- cgit v1.2.3 From 1af7957d088b73d5629dba03076fb99efafb5453 Mon Sep 17 00:00:00 2001 From: Jason Hendry Date: Wed, 29 Oct 2014 20:19:53 +0000 Subject: Correcting udp offload option name form segmentation to fragmentation --- scripts/vyatta-interfaces.pl | 2 +- .../node.tag/offload/udp-fragmentation-offload/node.def | 16 ++++++++++++++++ .../node.tag/offload/udp-segmentation-offload/node.def | 16 ---------------- 3 files changed, 17 insertions(+), 17 deletions(-) create mode 100644 templates/interfaces/ethernet/node.tag/offload/udp-fragmentation-offload/node.def delete mode 100644 templates/interfaces/ethernet/node.tag/offload/udp-segmentation-offload/node.def diff --git a/scripts/vyatta-interfaces.pl b/scripts/vyatta-interfaces.pl index 9271e871..b602dda6 100755 --- a/scripts/vyatta-interfaces.pl +++ b/scripts/vyatta-interfaces.pl @@ -600,7 +600,7 @@ sub set_offload_setting { my %ethtool_opts = ( 'generic-receive-offload' => 'gro', 'generic-segmentation-offload' => 'gso', 'tcp-segmentation-offload' => 'tso', - 'udp-segmentation-offload' => 'ufo', + 'udp-fragmentation-offload' => 'ufo', ); if (defined($nvalue) && $nvalue ne $ovalue) { diff --git a/templates/interfaces/ethernet/node.tag/offload/udp-fragmentation-offload/node.def b/templates/interfaces/ethernet/node.tag/offload/udp-fragmentation-offload/node.def new file mode 100644 index 00000000..796c791d --- /dev/null +++ b/templates/interfaces/ethernet/node.tag/offload/udp-fragmentation-offload/node.def @@ -0,0 +1,16 @@ +# +# Configuration template for offload settings +# + +priority: 319 # Failure barrier only - no ordering constraints + +type: txt +help: Configure udp-fragmentation-offload option +val_help: on; Enable udp-fragmentation-offload +val_help: off; Disable udp-fragmentation-offload + +syntax:expression: $VAR(@) == "on" || $VAR(@) == "off" ; "Must be either 'on' or 'off'" + +update: sudo /opt/vyatta/sbin/vyatta-interfaces.pl --dev=$VAR(../../@) --offload-settings udp-fragmentation-offload $VAR(@) + + diff --git a/templates/interfaces/ethernet/node.tag/offload/udp-segmentation-offload/node.def b/templates/interfaces/ethernet/node.tag/offload/udp-segmentation-offload/node.def deleted file mode 100644 index 8c263af9..00000000 --- a/templates/interfaces/ethernet/node.tag/offload/udp-segmentation-offload/node.def +++ /dev/null @@ -1,16 +0,0 @@ -# -# Configuration template for offload settings -# - -priority: 319 # Failure barrier only - no ordering constraints - -type: txt -help: Configure udp-segmentation-offload option -val_help: on; Enable udp-segmentation-offload -val_help: off; Disable udp-segmentation-offload - -syntax:expression: $VAR(@) == "on" || $VAR(@) == "off" ; "Must be either 'on' or 'off'" - -update: sudo /opt/vyatta/sbin/vyatta-interfaces.pl --dev=$VAR(../../@) --offload-settings udp-segmentation-offload $VAR(@) - - -- cgit v1.2.3 From 2f97a9155cda583132408bbd29637010386177ed Mon Sep 17 00:00:00 2001 From: Jason Hendry Date: Wed, 29 Oct 2014 20:54:30 +0000 Subject: Removing unsed variable from declaration --- scripts/vyatta-interfaces.pl | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/scripts/vyatta-interfaces.pl b/scripts/vyatta-interfaces.pl index b602dda6..621596a0 100755 --- a/scripts/vyatta-interfaces.pl +++ b/scripts/vyatta-interfaces.pl @@ -595,7 +595,6 @@ sub set_offload_setting { die "Missing --dev argument\n" unless $intf; my $ovalue = get_offload_setting($intf, $option); - my $args = ''; my %ethtool_opts = ( 'generic-receive-offload' => 'gro', 'generic-segmentation-offload' => 'gso', @@ -604,10 +603,9 @@ sub set_offload_setting { ); if (defined($nvalue) && $nvalue ne $ovalue) { - my $cmd = "$ETHTOOL -K $intf $ethtool_opts{$option} $nvalue"; - system($cmd); + system($cmd); if ($? >> 8) { die "exec of $ETHTOOL failed: '$cmd'"; } -- cgit v1.2.3