From patchwork Mon Oct 14 14:50:04 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Wang, Haiyue" X-Patchwork-Id: 61121 X-Patchwork-Delegate: xiaolong.ye@intel.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C2ADE1C2B2; Mon, 14 Oct 2019 16:56:01 +0200 (CEST) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id 8F2EE1C2B2 for ; Mon, 14 Oct 2019 16:55:59 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 14 Oct 2019 07:55:58 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.67,296,1566889200"; d="scan'208";a="194242376" Received: from npg-dpdk-haiyue-1.sh.intel.com ([10.67.119.153]) by fmsmga008.fm.intel.com with ESMTP; 14 Oct 2019 07:55:57 -0700 From: Haiyue Wang To: dev@dpdk.org Cc: Haiyue Wang Date: Mon, 14 Oct 2019 22:50:04 +0800 Message-Id: <20191014145005.94650-2-haiyue.wang@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191014145005.94650-1-haiyue.wang@intel.com> References: <20191009130716.80418-1-haiyue.wang@intel.com> <20191014145005.94650-1-haiyue.wang@intel.com> Subject: [dpdk-dev] [PATCH v2 1/2] net/ice: fix the missed memory free when dev is closed X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" The original protocol extraction memory free is removed by introducing new design for releasing port upon close. Fixes: bd513ece3c40 ("net/ice: release port upon close") Signed-off-by: Haiyue Wang --- drivers/net/ice/ice_ethdev.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c index 022b58c01..880d2679b 100644 --- a/drivers/net/ice/ice_ethdev.c +++ b/drivers/net/ice/ice_ethdev.c @@ -2126,6 +2126,8 @@ ice_dev_close(struct rte_eth_dev *dev) rte_free(hw->port_info); hw->port_info = NULL; ice_shutdown_all_ctrlq(hw); + rte_free(pf->proto_xtr); + pf->proto_xtr = NULL; dev->dev_ops = NULL; dev->rx_pkt_burst = NULL; From patchwork Mon Oct 14 14:50:05 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Wang, Haiyue" X-Patchwork-Id: 61123 X-Patchwork-Delegate: xiaolong.ye@intel.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 7C5AB1C438; Mon, 14 Oct 2019 16:56:07 +0200 (CEST) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id 2FC3F1C2E8 for ; Mon, 14 Oct 2019 16:56:00 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 14 Oct 2019 07:55:59 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.67,296,1566889200"; d="scan'208";a="194242382" Received: from npg-dpdk-haiyue-1.sh.intel.com ([10.67.119.153]) by fmsmga008.fm.intel.com with ESMTP; 14 Oct 2019 07:55:58 -0700 From: Haiyue Wang To: dev@dpdk.org Cc: Haiyue Wang Date: Mon, 14 Oct 2019 22:50:05 +0800 Message-Id: <20191014145005.94650-3-haiyue.wang@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191014145005.94650-1-haiyue.wang@intel.com> References: <20191009130716.80418-1-haiyue.wang@intel.com> <20191014145005.94650-1-haiyue.wang@intel.com> Subject: [dpdk-dev] [PATCH v2 2/2] net/ice: avoid the parsed devargs value being overwritten X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" If the default dev args 'proto_xtr' is not in the first position, it will overwrite the parsed queue map value, so use an new variable to save the default. And enhance the error message printing to show the right information. Signed-off-by: Haiyue Wang --- drivers/net/ice/ice_ethdev.c | 42 +++++++++++++++++++++++++----------- drivers/net/ice/ice_ethdev.h | 1 + 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c index 880d2679b..440203247 100644 --- a/drivers/net/ice/ice_ethdev.c +++ b/drivers/net/ice/ice_ethdev.c @@ -428,8 +428,7 @@ parse_queue_proto_xtr(const char *queues, struct ice_devargs *devargs) if (xtr_type < 0) return -1; - memset(devargs->proto_xtr, xtr_type, - sizeof(devargs->proto_xtr)); + devargs->proto_xtr_dflt = xtr_type; return 0; } @@ -1369,12 +1368,36 @@ ice_interrupt_handler(void *param) rte_intr_ack(dev->intr_handle); } +static void +ice_init_proto_xtr(struct rte_eth_dev *dev) +{ + struct ice_adapter *ad = + ICE_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private); + struct ice_pf *pf = ICE_DEV_PRIVATE_TO_PF(dev->data->dev_private); + struct ice_hw *hw = ICE_PF_TO_HW(pf); + uint16_t i; + + if (!ice_proto_xtr_support(hw)) { + PMD_DRV_LOG(NOTICE, "Protocol extraction is not supported"); + return; + } + + pf->proto_xtr = rte_zmalloc(NULL, pf->lan_nb_qps, 0); + if (unlikely(pf->proto_xtr == NULL)) { + PMD_DRV_LOG(ERR, "No memory for setting up protocol extraction table"); + return; + } + + for (i = 0; i < pf->lan_nb_qps; i++) + pf->proto_xtr[i] = ad->devargs.proto_xtr[i] != PROTO_XTR_NONE ? + ad->devargs.proto_xtr[i] : + ad->devargs.proto_xtr_dflt; +} + /* Initialize SW parameters of PF */ static int ice_pf_sw_init(struct rte_eth_dev *dev) { - struct ice_adapter *ad = - ICE_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private); struct ice_pf *pf = ICE_DEV_PRIVATE_TO_PF(dev->data->dev_private); struct ice_hw *hw = ICE_PF_TO_HW(pf); @@ -1384,15 +1407,7 @@ ice_pf_sw_init(struct rte_eth_dev *dev) pf->lan_nb_qps = pf->lan_nb_qp_max; - if (ice_proto_xtr_support(hw)) - pf->proto_xtr = rte_zmalloc(NULL, pf->lan_nb_qps, 0); - - if (pf->proto_xtr != NULL) - rte_memcpy(pf->proto_xtr, ad->devargs.proto_xtr, - RTE_MIN((size_t)pf->lan_nb_qps, - sizeof(ad->devargs.proto_xtr))); - else - PMD_DRV_LOG(NOTICE, "Protocol extraction is disabled"); + ice_init_proto_xtr(dev); return 0; } @@ -1805,6 +1820,7 @@ static int ice_parse_devargs(struct rte_eth_dev *dev) return -EINVAL; } + ad->devargs.proto_xtr_dflt = PROTO_XTR_NONE; memset(ad->devargs.proto_xtr, PROTO_XTR_NONE, sizeof(ad->devargs.proto_xtr)); diff --git a/drivers/net/ice/ice_ethdev.h b/drivers/net/ice/ice_ethdev.h index 182c6f611..2fd98817b 100644 --- a/drivers/net/ice/ice_ethdev.h +++ b/drivers/net/ice/ice_ethdev.h @@ -288,6 +288,7 @@ struct ice_pf { */ struct ice_devargs { int safe_mode_support; + uint8_t proto_xtr_dflt; uint8_t proto_xtr[ICE_MAX_QUEUE_NUM]; };