Skip to content

Commit 579fe5d

Browse files
Allow in place update of physical link settings? (#272)
1 parent 50ed531 commit 579fe5d

1 file changed

Lines changed: 6 additions & 14 deletions

File tree

dpd/src/port_settings.rs

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -396,27 +396,17 @@ impl PortSettingsDiff {
396396
spec: &Modify<LinkSpec>,
397397
rb: &mut Rollback,
398398
) -> DpdResult<()> {
399-
// unsupported things
400-
// XXX: we actually could support this now, as the reconciler task will
401-
// do the necessary cleanup before attempting to apply the changes.
402-
if spec.before.speed != spec.after.speed {
403-
return Err(DpdError::Invalid(
404-
"changing link speed not supported, recreate required".into(),
405-
));
406-
}
407-
if spec.before.fec != spec.after.fec {
408-
return Err(DpdError::Invalid(
409-
"changing link fec not supported, recreate required".into(),
410-
));
411-
}
412-
413399
let link_lock = ctx.link(link_id)?;
414400
let mut link = link_lock.lock().unwrap();
415401

402+
let speed_before = spec.before.speed;
403+
let fec_before = spec.before.fec;
416404
let an_before = spec.before.autoneg;
417405
let kr_before = spec.before.kr;
418406
let txeq_before = spec.before.tx_eq;
419407
let delete_before = spec.before.delete_me;
408+
link.config.speed = spec.after.speed;
409+
link.config.fec = spec.after.fec;
420410
link.config.autoneg = spec.after.autoneg;
421411
link.config.kr = spec.after.kr;
422412
link.tx_eq = spec.after.tx_eq;
@@ -427,6 +417,8 @@ impl PortSettingsDiff {
427417
rb.wind(move |ctx: &mut Context<'_>| -> DpdResult<()> {
428418
let link_lock = ctx.link(link_id)?;
429419
let mut link = link_lock.lock().unwrap();
420+
link.config.speed = speed_before;
421+
link.config.fec = fec_before;
430422
link.config.autoneg = an_before;
431423
link.config.kr = kr_before;
432424
link.tx_eq = txeq_before;

0 commit comments

Comments
 (0)