From 27f2b32dc625fec41ecdd71ed48bb2d5feaa2f54 Mon Sep 17 00:00:00 2001 From: Alex Forster Date: Mon, 4 May 2020 14:12:33 -0500 Subject: [PATCH] Configure numrxqueues/numtxqueues on veth peer (fixes #536) --- link_linux.go | 6 ++++++ link_test.go | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/link_linux.go b/link_linux.go index ec6840d2..688e1476 100644 --- a/link_linux.go +++ b/link_linux.go @@ -1282,6 +1282,12 @@ func (h *Handle) linkModify(link Link, flags int) error { if base.TxQLen >= 0 { peer.AddRtAttr(unix.IFLA_TXQLEN, nl.Uint32Attr(uint32(base.TxQLen))) } + if base.NumTxQueues > 0 { + peer.AddRtAttr(unix.IFLA_NUM_TX_QUEUES, nl.Uint32Attr(uint32(base.NumTxQueues))) + } + if base.NumRxQueues > 0 { + peer.AddRtAttr(unix.IFLA_NUM_RX_QUEUES, nl.Uint32Attr(uint32(base.NumRxQueues))) + } if base.MTU > 0 { peer.AddRtAttr(unix.IFLA_MTU, nl.Uint32Attr(uint32(base.MTU))) } diff --git a/link_test.go b/link_test.go index 1ea9906c..7206c8aa 100644 --- a/link_test.go +++ b/link_test.go @@ -93,6 +93,12 @@ func testLinkAddDel(t *testing.T, link Link) { if peer.TxQLen != testTxQLen { t.Fatalf("TxQLen of peer is %d, should be %d", peer.TxQLen, testTxQLen) } + if peer.NumTxQueues != testTxQueues { + t.Fatalf("NumTxQueues of peer is %d, should be %d", peer.NumTxQueues, testTxQueues) + } + if peer.NumRxQueues != testRxQueues { + t.Fatalf("NumRxQueues of peer is %d, should be %d", peer.NumRxQueues, testRxQueues) + } if !bytes.Equal(peer.Attrs().HardwareAddr, original.PeerHardwareAddr) { t.Fatalf("Peer MAC addr is %s, should be %s", peer.Attrs().HardwareAddr, original.PeerHardwareAddr) }