From ed79e40429eefafc99a32c96318f22b73191ae0d Mon Sep 17 00:00:00 2001 From: wanyaoqi <18528551+wanyaoqi@users.noreply.github.com> Date: Sun, 31 Dec 2023 12:30:31 +0800 Subject: [PATCH] fix(region): ovs offload interface get ifname from isolated devices tlb (#19147) Signed-off-by: wanyaoqi --- pkg/compute/models/guestnetworks.go | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/pkg/compute/models/guestnetworks.go b/pkg/compute/models/guestnetworks.go index bc9067478e..aca7d1e0df 100644 --- a/pkg/compute/models/guestnetworks.go +++ b/pkg/compute/models/guestnetworks.go @@ -611,7 +611,7 @@ func (gn *SGuestnetwork) getJsonDesc() *api.GuestnetworkJsonDesc { if routes != nil && len(routes) > 0 { desc.Routes = jsonutils.Marshal(routes) } - desc.Ifname = gn.Ifname + desc.Masklen = net.GuestIpMask desc.Driver = gn.Driver desc.NumQueues = gn.NumQueues @@ -626,6 +626,11 @@ func (gn *SGuestnetwork) getJsonDesc() *api.GuestnetworkJsonDesc { desc.TeamWith = gn.TeamWith guest := gn.getGuest() + if ifname, ok := gn.OvsOffloadIfname(); ok { + desc.Ifname = ifname + } else { + desc.Ifname = gn.Ifname + } if guest.GetHypervisor() != api.HYPERVISOR_KVM { manual := true desc.Manual = &manual @@ -657,6 +662,16 @@ func (gn *SGuestnetwork) IsSriovWithoutOffload() bool { return true } +func (gn *SGuestnetwork) OvsOffloadIfname() (string, bool) { + if gn.Driver != api.NETWORK_DRIVER_VFIO { + return "", false + } + if dev, _ := gn.GetIsolatedDevice(); dev != nil && dev.OvsOffloadInterface != "" { + return dev.OvsOffloadInterface, true + } + return "", false +} + func (gn *SGuestnetwork) UpdateNicTrafficUsed(rx, tx int64) error { _, err := db.Update(gn, func() error { gn.RxTrafficUsed = rx