On 2019-12-12 09:25 Thomas Lamprecht wrote:
First, thanks for the patch!
Most seems to be adapted from surrounding code, which is OK.
Some comments inline.
Also, a pve-docs patch about this would be nice, to clear up things
like:
* MTU cannot be bigger than those used by the host in it's chain to the
outer network.
* All components of the network need to support this MTU
* one can test it under linux with `ping -M do -s $[9000 - 28] <addr>`
(where 9000 is the MTU and 28 is the ICMP echo packet overhead)
* That only VirtIO-net supports this at the moment (even if the UI
makes it
somewhat clear it's good to state that it's by design and not a bug
were
we just forgot to enable it for e1000e or the like :) )
* Intra-bridge communications can have 64k MTU if the bridge is
configured
to it
I.e., doesn't have to be much, but a few short sentences would be good
to have
for a new feature which can be a bit environment picky :)
I totally agree, but need to find time to do it.
On 12/11/19 6:03 PM, Paul Shepel wrote:
Signed-off-by: Paul Shepel <ta...@tacid.kiev.ua>
---
www/manager6/Parser.js | 5 +++++
www/manager6/qemu/NetworkEdit.js | 36
+++++++++++++++++++++++++++++---
2 files changed, 38 insertions(+), 3 deletions(-)
diff --git a/www/manager6/Parser.js b/www/manager6/Parser.js
index 0790e683..6a9cbb78 100644
--- a/www/manager6/Parser.js
+++ b/www/manager6/Parser.js
@@ -131,6 +131,8 @@ Ext.define('PVE.Parser', { statics: {
res.disconnect = match_res[1];
} else if ((match_res = p.match(/^queues=(\d+)$/)) !== null) {
res.queues = match_res[1];
+ } else if ((match_res = p.match(/^mtu=(\d+)$/)) !== null) {
+ res.mtu = match_res[1];
} else if ((match_res =
p.match(/^trunks=(\d+(?:-\d+)?(?:;\d+(?:-\d+)?)*)$/)) !== null) {
res.trunks = match_res[1];
} else {
@@ -167,6 +169,9 @@ Ext.define('PVE.Parser', { statics: {
if (net.queues) {
netstr += ",queues=" + net.queues;
}
+ if (net.mtu) {
+ netstr += ",mtu=" + net.mtu;
+ }
if (net.disconnect) {
netstr += ",link_down=" + net.disconnect;
}
diff --git a/www/manager6/qemu/NetworkEdit.js
b/www/manager6/qemu/NetworkEdit.js
index abce4903..c66da59c 100644
--- a/www/manager6/qemu/NetworkEdit.js
+++ b/www/manager6/qemu/NetworkEdit.js
@@ -26,6 +26,12 @@ Ext.define('PVE.qemu.NetworkInputPanel', {
delete me.network.rate;
}
+ if (values.mtu) {
+ me.network.mtu = values.mtu;
+ } else {
+ delete me.network.mtu;
+ }
+
var params = {};
params[me.confid] = PVE.Parser.printQemuNetwork(me.network);
@@ -92,7 +98,19 @@ Ext.define('PVE.qemu.NetworkInputPanel', {
xtype: 'proxmoxcheckbox',
fieldLabel: gettext('Disconnect'),
name: 'disconnect'
- }
+ },
+ {
+ xtype: 'numberfield',
+ fieldLabel: gettext('MTU'),
+ minValue: 576,
+ maxValue: 65535,
+ value: '',
+ emptyText: '1500',
+ name: 'mtu',
+ disabled: true,
+ hidden: true,
+ allowBlank: true
+ }
];
if (me.insideWizard) {
@@ -111,7 +129,8 @@ Ext.define('PVE.qemu.NetworkInputPanel', {
'model',
'macaddr',
'rate',
- 'queues'
+ 'queues',
+ 'mtu',
];
fields.forEach(function(fieldname) {
me.down('field[name='+fieldname+']').setDisabled(value);
@@ -150,7 +169,18 @@ Ext.define('PVE.qemu.NetworkInputPanel', {
maxValue: 10*1024,
value: '',
emptyText: 'unlimited',
- allowBlank: true
+ allowBlank: true,
+ listeners: {
+ change: function(f, value) {
+ if (!me.rendered) {
+ return;
+ }
+ var mtuField = me.down('field[name=mtu]');
+ var isVirtioNet = ( value == 'virtio' );
+ mtuField.setDisabled(!isVirtioNet);
+ mtuField.setHidden(!isVirtioNet);
+ }
+ }
1. Indentation is completely off
2. This is on the Ratelimit numberfield, how can this possibly work?
My fault, misplace while adopting running patch to git code.
Of cause change listener should be on model select field.
3. I'd rather go for a viewModel + binding approach, i.e., the
following
change on top of this patch (I ommited the hiding on purpose, we
seldom do
this):
I'm fine with this, this is more elegant and correct way.
Actually, I just failed implement it with bind, so I did it with change
listener
----8<----
diff --git a/www/manager6/qemu/NetworkEdit.js
b/www/manager6/qemu/NetworkEdit.js
index c66da59c..b3801419 100644
--- a/www/manager6/qemu/NetworkEdit.js
+++ b/www/manager6/qemu/NetworkEdit.js
@@ -3,6 +3,14 @@ Ext.define('PVE.qemu.NetworkInputPanel', {
alias: 'widget.pveQemuNetworkInputPanel',
onlineHelp: 'qm_network_device',
+ viewModel: {
+ data: {
+ cardModel: PVE.qemu.OSDefaults.generic.networkCard,
+ },
+ formulas: {
+ cardIsVirtIO: (get) => get('cardModel') === 'virtio',
+ }
+ },
insideWizard: false,
onGetValues: function(values) {
@@ -107,8 +115,9 @@ Ext.define('PVE.qemu.NetworkInputPanel', {
value: '',
emptyText: '1500',
name: 'mtu',
- disabled: true,
- hidden: true,
+ bind: {
+ disabled: '{!cardIsVirtIO}',
+ },
allowBlank: true
}
];
@@ -150,6 +159,9 @@ Ext.define('PVE.qemu.NetworkInputPanel', {
name: 'model',
fieldLabel: gettext('Model'),
value: PVE.qemu.OSDefaults.generic.networkCard,
+ bind: {
+ value: '{cardModel}',
+ },
allowBlank: false
},
{
@@ -170,17 +182,6 @@ Ext.define('PVE.qemu.NetworkInputPanel', {
value: '',
emptyText: 'unlimited',
allowBlank: true,
- listeners: {
- change: function(f, value) {
- if (!me.rendered) {
- return;
- }
- var mtuField = me.down('field[name=mtu]');
- var isVirtioNet = ( value == 'virtio' );
- mtuField.setDisabled(!isVirtioNet);
- mtuField.setHidden(!isVirtioNet);
- }
- }
},
{
xtype: 'proxmoxintegerfield',
---
_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel