From db58834c62a224232a327e98916b44f21c38294e Mon Sep 17 00:00:00 2001 From: Marcelo Guerrero Date: Wed, 8 Nov 2023 09:54:24 +0100 Subject: [PATCH] Refactor vfGroup lookup in configSriovDevice Signed-off-by: Marcelo Guerrero --- pkg/utils/utils.go | 37 ++++++++++++++++--------------------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/pkg/utils/utils.go b/pkg/utils/utils.go index cfc8e02ff3..045edbd004 100644 --- a/pkg/utils/utils.go +++ b/pkg/utils/utils.go @@ -458,28 +458,23 @@ func configSriovDevice(iface *sriovnetworkv1.Interface, ifaceStatus *sriovnetwor } for _, addr := range vfAddrs { - var group sriovnetworkv1.VfGroup - i := 0 - var dpdkDriver string - var isRdma bool - found := false + var group *sriovnetworkv1.VfGroup + vfID, err := dputils.GetVFID(addr) - for i, group = range iface.VfGroups { - if err != nil { - log.Log.Error(err, "configSriovDevice(): unable to get VF id", "device", iface.PciAddress) - } + if err != nil { + log.Log.Error(err, "configSriovDevice(): unable to get VF id", "device", iface.PciAddress) + continue + } + + for i := range iface.VfGroups { if sriovnetworkv1.IndexInRange(vfID, group.VfRange) { - found = true - isRdma = group.IsRdma - if sriovnetworkv1.StringInArray(group.DeviceType, DpdkDrivers) { - dpdkDriver = group.DeviceType - } + group = &iface.VfGroups[i] break } } - // Do not configure VF which is not part of any VF Group. - if !found { + // VF group not found. + if group == nil { continue } @@ -521,26 +516,26 @@ func configSriovDevice(iface *sriovnetworkv1.Interface, ifaceStatus *sriovnetwor } } - if err = unbindDriverIfNeeded(addr, isRdma); err != nil { + if err = unbindDriverIfNeeded(addr, group.IsRdma); err != nil { return err } - if dpdkDriver == "" { + if !sriovnetworkv1.StringInArray(group.DeviceType, DpdkDrivers) { if err := BindDefaultDriver(addr); err != nil { log.Log.Error(err, "configSriovDevice(): fail to bind default driver for device", "device", addr) return err } // only set MTU for VF with default driver - if iface.VfGroups[i].Mtu > 0 { + if group.Mtu > 0 { if err := setNetdevMTU(addr, iface.VfGroups[i].Mtu); err != nil { log.Log.Error(err, "configSriovDevice(): fail to set mtu for VF", "address", addr) return err } } } else { - if err := BindDpdkDriver(addr, dpdkDriver); err != nil { + if err := BindDpdkDriver(addr, group.DeviceType); err != nil { log.Log.Error(err, "configSriovDevice(): fail to bind driver for device", - "driver", dpdkDriver, "device", addr) + "driver", group.DeviceType, "device", addr) return err } }