From patchwork Mon Jan 12 15:50:43 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Jastrzebski X-Patchwork-Id: 2236 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 24F955AC3; Mon, 12 Jan 2015 16:53:37 +0100 (CET) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id 471F65AC0 for ; Mon, 12 Jan 2015 16:53:32 +0100 (CET) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga101.jf.intel.com with ESMTP; 12 Jan 2015 07:53:18 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.07,744,1413270000"; d="scan'208";a="668498600" Received: from unknown (HELO Sent) ([10.217.248.81]) by orsmga002.jf.intel.com with SMTP; 12 Jan 2015 07:53:16 -0800 Received: by Sent (sSMTP sendmail emulation); Mon, 12 Jan 2015 16:52:34 +0200 From: Michal Jastrzebski To: dev@dpdk.org Date: Mon, 12 Jan 2015 16:50:43 +0100 Message-Id: <1421077843-8492-3-git-send-email-michalx.k.jastrzebski@intel.com> X-Mailer: git-send-email 2.1.1 In-Reply-To: <1421077843-8492-1-git-send-email-michalx.k.jastrzebski@intel.com> References: <1421077843-8492-1-git-send-email-michalx.k.jastrzebski@intel.com> Subject: [dpdk-dev] [PATCH 2/2] testpmd: fix dcb in vt mode X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Pawel Wodkowski This patch incorporate fixes to support DCB in SRIOV mode for testpmd. It also clean up some old code that is not needed or wrong. Signed-off-by: Pawel Wodkowski --- app/test-pmd/cmdline.c | 4 ++-- app/test-pmd/testpmd.c | 39 +++++++++++++++++++++++++++++---------- app/test-pmd/testpmd.h | 10 ---------- 3 files changed, 31 insertions(+), 22 deletions(-) diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index 882a5a2..3c60087 100644 --- a/app/test-pmd/cmdline.c +++ b/app/test-pmd/cmdline.c @@ -1947,9 +1947,9 @@ cmd_config_dcb_parsed(void *parsed_result, /* DCB in VT mode */ if (!strncmp(res->vt_en, "on",2)) - dcb_conf.dcb_mode = DCB_VT_ENABLED; + dcb_conf.vt_en = 1; else - dcb_conf.dcb_mode = DCB_ENABLED; + dcb_conf.vt_en = 0; if (!strncmp(res->pfc_en, "on",2)) { dcb_conf.pfc_en = 1; diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index 8c69756..6677a5e 100644 --- a/app/test-pmd/testpmd.c +++ b/app/test-pmd/testpmd.c @@ -1733,7 +1733,8 @@ const uint16_t vlan_tags[] = { }; static int -get_eth_dcb_conf(struct rte_eth_conf *eth_conf, struct dcb_config *dcb_conf) +get_eth_dcb_conf(struct rte_eth_conf *eth_conf, struct dcb_config *dcb_conf, + uint16_t sriov) { uint8_t i; @@ -1741,7 +1742,7 @@ get_eth_dcb_conf(struct rte_eth_conf *eth_conf, struct dcb_config *dcb_conf) * Builds up the correct configuration for dcb+vt based on the vlan tags array * given above, and the number of traffic classes available for use. */ - if (dcb_conf->dcb_mode == DCB_VT_ENABLED) { + if (dcb_conf->vt_en == 1) { struct rte_eth_vmdq_dcb_conf vmdq_rx_conf; struct rte_eth_vmdq_dcb_tx_conf vmdq_tx_conf; @@ -1758,9 +1759,17 @@ get_eth_dcb_conf(struct rte_eth_conf *eth_conf, struct dcb_config *dcb_conf) vmdq_rx_conf.pool_map[i].vlan_id = vlan_tags[ i ]; vmdq_rx_conf.pool_map[i].pools = 1 << (i % vmdq_rx_conf.nb_queue_pools); } - for (i = 0; i < ETH_DCB_NUM_USER_PRIORITIES; i++) { - vmdq_rx_conf.dcb_queue[i] = i; - vmdq_tx_conf.dcb_queue[i] = i; + + if (sriov == 0) { + for (i = 0; i < ETH_DCB_NUM_USER_PRIORITIES; i++) { + vmdq_rx_conf.dcb_queue[i] = i; + vmdq_tx_conf.dcb_queue[i] = i; + } + } else { + for (i = 0; i < ETH_DCB_NUM_USER_PRIORITIES; i++) { + vmdq_rx_conf.dcb_queue[i] = i % dcb_conf->num_tcs; + vmdq_tx_conf.dcb_queue[i] = i % dcb_conf->num_tcs; + } } /*set DCB mode of RX and TX of multiple queues*/ @@ -1818,22 +1827,32 @@ init_port_dcb_config(portid_t pid,struct dcb_config *dcb_conf) uint16_t nb_vlan; uint16_t i; - /* rxq and txq configuration in dcb mode */ - nb_rxq = 128; - nb_txq = 128; rx_free_thresh = 64; + rte_port = &ports[pid]; memset(&port_conf,0,sizeof(struct rte_eth_conf)); /* Enter DCB configuration status */ dcb_config = 1; nb_vlan = sizeof( vlan_tags )/sizeof( vlan_tags[ 0 ]); /*set configuration of DCB in vt mode and DCB in non-vt mode*/ - retval = get_eth_dcb_conf(&port_conf, dcb_conf); + retval = get_eth_dcb_conf(&port_conf, dcb_conf, rte_port->dev_info.max_vfs); + + /* rxq and txq configuration in dcb mode */ + nb_rxq = rte_port->dev_info.max_rx_queues; + nb_txq = rte_port->dev_info.max_tx_queues; + + if (rte_port->dev_info.max_vfs) { + if (port_conf.rxmode.mq_mode == ETH_MQ_RX_VMDQ_DCB) + nb_rxq /= port_conf.rx_adv_conf.vmdq_dcb_conf.nb_queue_pools; + + if (port_conf.txmode.mq_mode == ETH_MQ_TX_VMDQ_DCB) + nb_txq /= port_conf.tx_adv_conf.vmdq_dcb_tx_conf.nb_queue_pools; + } + if (retval < 0) return retval; - rte_port = &ports[pid]; memcpy(&rte_port->dev_conf, &port_conf,sizeof(struct rte_eth_conf)); rte_port->rx_conf.rx_thresh = rx_thresh; diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h index f8b0740..8976acc 100644 --- a/app/test-pmd/testpmd.h +++ b/app/test-pmd/testpmd.h @@ -227,20 +227,10 @@ struct fwd_config { portid_t nb_fwd_ports; /**< Nb. of ports involved. */ }; -/** - * DCB mode enable - */ -enum dcb_mode_enable -{ - DCB_VT_ENABLED, - DCB_ENABLED -}; - /* * DCB general config info */ struct dcb_config { - enum dcb_mode_enable dcb_mode; uint8_t vt_en; enum rte_eth_nb_tcs num_tcs; uint8_t pfc_en;