From patchwork Mon Mar 14 15:18:19 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ilya Maximets X-Patchwork-Id: 597103 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from archives.nicira.com (archives.nicira.com [96.126.127.54]) by ozlabs.org (Postfix) with ESMTP id 3qP1dL6vsQz9t0t for ; Tue, 15 Mar 2016 02:19:50 +1100 (AEDT) Received: from archives.nicira.com (localhost [127.0.0.1]) by archives.nicira.com (Postfix) with ESMTP id 7118C102E9; Mon, 14 Mar 2016 08:19:05 -0700 (PDT) X-Original-To: dev@openvswitch.org Delivered-To: dev@openvswitch.org Received: from mx1e4.cudamail.com (mx1.cudamail.com [69.90.118.67]) by archives.nicira.com (Postfix) with ESMTPS id 39FEA102E9 for ; Mon, 14 Mar 2016 08:19:04 -0700 (PDT) Received: from bar5.cudamail.com (unknown [192.168.21.12]) by mx1e4.cudamail.com (Postfix) with ESMTPS id ADEBE1E00DE for ; Mon, 14 Mar 2016 09:19:03 -0600 (MDT) X-ASG-Debug-ID: 1457968743-09eadd060e1fd4a0001-byXFYA Received: from mx1-pf2.cudamail.com ([192.168.24.2]) by bar5.cudamail.com with ESMTP id jDFWmSIQeplYV2cj (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Mon, 14 Mar 2016 09:19:03 -0600 (MDT) X-Barracuda-Envelope-From: i.maximets@samsung.com X-Barracuda-RBL-Trusted-Forwarder: 192.168.24.2 Received: from unknown (HELO mailout1.w1.samsung.com) (210.118.77.11) by mx1-pf2.cudamail.com with ESMTPS (DHE-RSA-AES128-SHA encrypted); 14 Mar 2016 15:19:02 -0000 Received-SPF: none (mx1-pf2.cudamail.com: domain at samsung.com does not designate permitted sender hosts) X-Barracuda-Apparent-Source-IP: 210.118.77.11 X-Barracuda-RBL-IP: 210.118.77.11 Received: from eucpsbgm2.samsung.com (unknown [203.254.199.245]) by mailout1.w1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0O41000A0BVOFA30@mailout1.w1.samsung.com> for dev@openvswitch.org; Mon, 14 Mar 2016 15:19:00 +0000 (GMT) X-AuditID: cbfec7f5-f79b16d000005389-3f-56e6d6649d42 Received: from eusync3.samsung.com ( [203.254.199.213]) by eucpsbgm2.samsung.com (EUCPMTA) with SMTP id 06.F6.21385.466D6E65; Mon, 14 Mar 2016 15:19:00 +0000 (GMT) Received: from imaximets.rnd.samsung.ru ([106.109.129.180]) by eusync3.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0O4100K1TBUOWN50@eusync3.samsung.com>; Mon, 14 Mar 2016 15:19:00 +0000 (GMT) X-CudaMail-Envelope-Sender: i.maximets@samsung.com From: Ilya Maximets To: dev@openvswitch.org X-CudaMail-MID: CM-E2-313034239 X-CudaMail-DTE: 031416 X-CudaMail-Originating-IP: 210.118.77.11 Date: Mon, 14 Mar 2016 18:18:19 +0300 X-ASG-Orig-Subj: [##CM-E2-313034239##][PATCH 09/10] netdev-dummy: Add fake multiqueue support to dummy_pmd. Message-id: <1457968700-23125-10-git-send-email-i.maximets@samsung.com> X-Mailer: git-send-email 2.5.0 In-reply-to: <1457968700-23125-1-git-send-email-i.maximets@samsung.com> References: <1457968700-23125-1-git-send-email-i.maximets@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupgluLIzCtJLcpLzFFi42I5/e/4Vd2Ua8/CDOY/E7Z4NbmB0eLo6T3M Fi+777FbXGn/yW7x9eg2JovJs6Uc2Dye3fzP6PH8Wg+LR9+WVYwe7+a/ZQtgieKySUnNySxL LdK3S+DKOH51AXPBFbmKmdcOsTQwPhTpYuTkkBAwkThy7igzhC0mceHeejYQW0hgKaPEhKu1 XYxcQHYrk8TM1k0sIAk2AR2JU6uPMILYIgLiEts7ljKDFDELbGeUmHZ4AitIQljAT+Le2eVA kzg4WARUJd4tLQYJ8wq4S9zfvZQRJCwhICex4EI6SJgTKNyz/xYLxF43ic9LD7BMYORdwMiw ilE0tTS5oDgpPddIrzgxt7g0L10vOT93EyMkfL7uYFx6zOoQowAHoxIP7481T8OEWBPLiitz DzFKcDArifAmXnkWJsSbklhZlVqUH19UmpNafIhRmoNFSZx35q73IUIC6YklqdmpqQWpRTBZ Jg5OqQbGyL5lRbsEJGT2SPWdebDzxRmevNe20Us05Q/p5La7fNTJkXp7y+v9FWbv577Re3IS tN3MNNv5dswX+PLeyVuhsWQDd9MG+Q/dc74W3z+3wpfnwI2Km/tf6s6z7DQrK7ow34BPRyVr 1tELKUr3YmMu8kTf77qnaNFkOs3Y0PbooeLjL969TBFQYinOSDTUYi4qTgQAlghHnxsCAAA= X-GBUdb-Analysis: 0, 210.118.77.11, Ugly c=0 p=0 Source New X-MessageSniffer-Rules: 0-0-0-9539-c X-Barracuda-Connect: UNKNOWN[192.168.24.2] X-Barracuda-Start-Time: 1457968743 X-Barracuda-Encrypted: DHE-RSA-AES256-SHA X-Barracuda-URL: https://web.cudamail.com:443/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at cudamail.com X-Barracuda-BRTS-Status: 1 X-ASG-Whitelist: EmailCat (corporate) Cc: Ilya Maximets , Dyasly Sergey Subject: [ovs-dev] [PATCH 09/10] netdev-dummy: Add fake multiqueue support to dummy_pmd. X-BeenThere: dev@openvswitch.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: dev-bounces@openvswitch.org Sender: "dev" Signed-off-by: Ilya Maximets --- lib/netdev-dummy.c | 42 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/lib/netdev-dummy.c b/lib/netdev-dummy.c index 4903e56..f427965 100644 --- a/lib/netdev-dummy.c +++ b/lib/netdev-dummy.c @@ -700,9 +700,9 @@ netdev_dummy_dealloc(struct netdev *netdev_) } static int -netdev_dummy_get_config(const struct netdev *netdev_, struct smap *args) +netdev_dummy_get_config(const struct netdev *dev, struct smap *args) { - struct netdev_dummy *netdev = netdev_dummy_cast(netdev_); + struct netdev_dummy *netdev = netdev_dummy_cast(dev); ovs_mutex_lock(&netdev->mutex); @@ -712,6 +712,10 @@ netdev_dummy_get_config(const struct netdev *netdev_, struct smap *args) dummy_packet_conn_get_config(&netdev->conn, args); + smap_add_format(args, "requested_rx_queues", "%d", dev->requested_n_rxq); + smap_add_format(args, "configured_rx_queues", "%d", dev->n_rxq); + smap_add_format(args, "requested_tx_queues", "%d", dev->n_txq); + ovs_mutex_unlock(&netdev->mutex); return 0; } @@ -801,6 +805,9 @@ netdev_dummy_set_config(struct netdev *netdev_, const struct smap *args) } } + netdev_->requested_n_rxq = MAX(smap_get_int(args, "n_rxq", + netdev_->requested_n_rxq), 1); + netdev_change_seq_changed(netdev_); ovs_mutex_unlock(&netdev->mutex); return 0; @@ -812,6 +819,27 @@ netdev_dummy_get_numa_id(const struct netdev *netdev_ OVS_UNUSED) return 0; } +/* Sets the number of tx queues and rx queues for the dummy PMD interface. + * Implements fake multiqueue support. */ +static int +netdev_dummy_set_multiq(struct netdev *netdev_, unsigned int n_txq, + unsigned int n_rxq) +{ + struct netdev_dummy *netdev = netdev_dummy_cast(netdev_); + + ovs_mutex_lock(&netdev->mutex); + + if (netdev_->n_txq == n_txq && netdev_->n_rxq == n_rxq) { + goto out; + } + + netdev_->n_txq = n_txq; + netdev_->n_rxq = n_rxq; +out: + ovs_mutex_unlock(&netdev->mutex); + return 0; +} + static struct netdev_rxq * netdev_dummy_rxq_alloc(void) { @@ -1199,7 +1227,7 @@ netdev_dummy_update_flags(struct netdev *netdev_, /* Helper functions. */ -#define NETDEV_DUMMY_CLASS(PMD) \ +#define NETDEV_DUMMY_CLASS(PMD, MULTIQ) \ { \ "dummy", \ PMD, /* is_pmd */ \ @@ -1218,7 +1246,7 @@ netdev_dummy_update_flags(struct netdev *netdev_, NULL, /* push header */ \ NULL, /* pop header */ \ netdev_dummy_get_numa_id, \ - NULL, /* set_multiq */ \ + MULTIQ, /* set_multiq */ \ \ netdev_dummy_send, /* send */ \ NULL, /* send_wait */ \ @@ -1269,8 +1297,10 @@ netdev_dummy_update_flags(struct netdev *netdev_, netdev_dummy_rxq_drain, \ } -static const struct netdev_class dummy_class = NETDEV_DUMMY_CLASS(false); -static const struct netdev_class dummy_pmd_class = NETDEV_DUMMY_CLASS(true); +static const struct netdev_class dummy_class = + NETDEV_DUMMY_CLASS(false, NULL); +static const struct netdev_class dummy_pmd_class = + NETDEV_DUMMY_CLASS(true, netdev_dummy_set_multiq); static void pkt_list_delete(struct ovs_list *l)