diff --git a/virtcontainers/network.go b/virtcontainers/network.go index 613caa68f2..41f3bbe4fe 100644 --- a/virtcontainers/network.go +++ b/virtcontainers/network.go @@ -396,7 +396,7 @@ func newNetwork(networkType NetworkModel) network { } } -func createLink(netHandle *netlink.Handle, name string, expectedLink netlink.Link, numCPUs int) (netlink.Link, []*os.File, error) { +func createLink(netHandle *netlink.Handle, name string, expectedLink netlink.Link, queues int) (netlink.Link, []*os.File, error) { var newLink netlink.Link var fds []*os.File @@ -410,7 +410,7 @@ func createLink(netHandle *netlink.Handle, name string, expectedLink netlink.Lin newLink = &netlink.Tuntap{ LinkAttrs: netlink.LinkAttrs{Name: name}, Mode: netlink.TUNTAP_MODE_TAP, - Queues: numCPUs, + Queues: queues, Flags: netlink.TUNTAP_MULTI_QUEUE_DEFAULTS | netlink.TUNTAP_VNET_HDR, } case (&netlink.Macvtap{}).Type(): @@ -505,7 +505,7 @@ func getLinkByName(netHandle *netlink.Handle, name string, expectedLink netlink. func xConnectVMNetwork(endpoint Endpoint, h hypervisor) error { netPair := endpoint.NetworkPair() - numCPUs := h.hypervisorConfig().NumVCPUs + queues := int(h.hypervisorConfig().NumVCPUs) disableVhostNet := h.hypervisorConfig().DisableVhostNet if netPair.NetInterworkingModel == NetXConnectDefaultModel { @@ -514,11 +514,11 @@ func xConnectVMNetwork(endpoint Endpoint, h hypervisor) error { switch netPair.NetInterworkingModel { case NetXConnectBridgedModel: - return bridgeNetworkPair(endpoint, numCPUs, disableVhostNet) + return bridgeNetworkPair(endpoint, queues, disableVhostNet) case NetXConnectMacVtapModel: - return tapNetworkPair(endpoint, numCPUs, disableVhostNet) + return tapNetworkPair(endpoint, queues, disableVhostNet) case NetXConnectTCFilterModel: - return setupTCFiltering(endpoint, numCPUs, disableVhostNet) + return setupTCFiltering(endpoint, queues, disableVhostNet) case NetXConnectEnlightenedModel: return fmt.Errorf("Unsupported networking model") default: @@ -588,10 +588,10 @@ const linkRange = 0xFFFF // This will allow upto 2^16 containers const linkRetries = 128 // The numbers of time we try to find a non conflicting index const macvtapWorkaround = true -func createMacVtap(netHandle *netlink.Handle, name string, link netlink.Link, numCPUs int) (taplink netlink.Link, err error) { +func createMacVtap(netHandle *netlink.Handle, name string, link netlink.Link, queues int) (taplink netlink.Link, err error) { if !macvtapWorkaround { - taplink, _, err = createLink(netHandle, name, link, numCPUs) + taplink, _, err = createLink(netHandle, name, link, queues) return } @@ -600,7 +600,7 @@ func createMacVtap(netHandle *netlink.Handle, name string, link netlink.Link, nu for i := 0; i < linkRetries; i++ { index := hostLinkOffset + (r.Int() & linkRange) link.Attrs().Index = index - taplink, _, err = createLink(netHandle, name, link, numCPUs) + taplink, _, err = createLink(netHandle, name, link, queues) if err == nil { break } @@ -627,7 +627,7 @@ func setIPs(link netlink.Link, addrs []netlink.Addr) error { return nil } -func tapNetworkPair(endpoint Endpoint, numCPUs uint32, disableVhostNet bool) error { +func tapNetworkPair(endpoint Endpoint, queues int, disableVhostNet bool) error { netHandle, err := netlink.NewHandle() if err != nil { return err @@ -653,7 +653,7 @@ func tapNetworkPair(endpoint Endpoint, numCPUs uint32, disableVhostNet bool) err ParentIndex: attrs.Index, }, }, - }, int(numCPUs)) + }, queues) if err != nil { return fmt.Errorf("Could not create TAP interface: %s", err) @@ -705,13 +705,13 @@ func tapNetworkPair(endpoint Endpoint, numCPUs uint32, disableVhostNet bool) err // Note: The underlying interfaces need to be up prior to fd creation. - netPair.VMFds, err = createMacvtapFds(tapLink.Attrs().Index, int(numCPUs)) + netPair.VMFds, err = createMacvtapFds(tapLink.Attrs().Index, queues) if err != nil { return fmt.Errorf("Could not setup macvtap fds %s: %s", netPair.TAPIface, err) } if !disableVhostNet { - vhostFds, err := createVhostFds(int(numCPUs)) + vhostFds, err := createVhostFds(queues) if err != nil { return fmt.Errorf("Could not setup vhost fds %s : %s", netPair.VirtIface.Name, err) } @@ -721,7 +721,7 @@ func tapNetworkPair(endpoint Endpoint, numCPUs uint32, disableVhostNet bool) err return nil } -func bridgeNetworkPair(endpoint Endpoint, numCPUs uint32, disableVhostNet bool) error { +func bridgeNetworkPair(endpoint Endpoint, queues int, disableVhostNet bool) error { netHandle, err := netlink.NewHandle() if err != nil { return err @@ -730,14 +730,14 @@ func bridgeNetworkPair(endpoint Endpoint, numCPUs uint32, disableVhostNet bool) netPair := endpoint.NetworkPair() - tapLink, fds, err := createLink(netHandle, netPair.TAPIface.Name, &netlink.Tuntap{}, int(numCPUs)) + tapLink, fds, err := createLink(netHandle, netPair.TAPIface.Name, &netlink.Tuntap{}, queues) if err != nil { return fmt.Errorf("Could not create TAP interface: %s", err) } netPair.VMFds = fds if !disableVhostNet { - vhostFds, err := createVhostFds(int(numCPUs)) + vhostFds, err := createVhostFds(queues) if err != nil { return fmt.Errorf("Could not setup vhost fds %s : %s", netPair.VirtIface.Name, err) } @@ -775,7 +775,7 @@ func bridgeNetworkPair(endpoint Endpoint, numCPUs uint32, disableVhostNet bool) } mcastSnoop := false - bridgeLink, _, err := createLink(netHandle, netPair.Name, &netlink.Bridge{MulticastSnooping: &mcastSnoop}, int(numCPUs)) + bridgeLink, _, err := createLink(netHandle, netPair.Name, &netlink.Bridge{MulticastSnooping: &mcastSnoop}, queues) if err != nil { return fmt.Errorf("Could not create bridge: %s", err) } @@ -805,7 +805,7 @@ func bridgeNetworkPair(endpoint Endpoint, numCPUs uint32, disableVhostNet bool) return nil } -func setupTCFiltering(endpoint Endpoint, numCPUs uint32, disableVhostNet bool) error { +func setupTCFiltering(endpoint Endpoint, queues int, disableVhostNet bool) error { netHandle, err := netlink.NewHandle() if err != nil { return err @@ -814,14 +814,14 @@ func setupTCFiltering(endpoint Endpoint, numCPUs uint32, disableVhostNet bool) e netPair := endpoint.NetworkPair() - tapLink, fds, err := createLink(netHandle, netPair.TAPIface.Name, &netlink.Tuntap{}, int(numCPUs)) + tapLink, fds, err := createLink(netHandle, netPair.TAPIface.Name, &netlink.Tuntap{}, queues) if err != nil { return fmt.Errorf("Could not create TAP interface: %s", err) } netPair.VMFds = fds if !disableVhostNet { - vhostFds, err := createVhostFds(int(numCPUs)) + vhostFds, err := createVhostFds(queues) if err != nil { return fmt.Errorf("Could not setup vhost fds %s : %s", netPair.VirtIface.Name, err) }