From patchwork Tue Aug 11 06:29:11 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steve Yang X-Patchwork-Id: 75365 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id A7704A04D8; Tue, 11 Aug 2020 08:49:30 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 874E11C01F; Tue, 11 Aug 2020 08:49:30 +0200 (CEST) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id 75BD31C00D for ; Tue, 11 Aug 2020 08:49:28 +0200 (CEST) IronPort-SDR: yWEMOwdmIvcDkFjamda/QvcXdrKKP3wp3ns8YSMGNqLnwLy04kEKV/ndrjRd9vWJPPnSxocZ4G AdZdUnDOyQuw== X-IronPort-AV: E=McAfee;i="6000,8403,9709"; a="171722150" X-IronPort-AV: E=Sophos;i="5.75,460,1589266800"; d="scan'208";a="171722150" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Aug 2020 23:49:26 -0700 IronPort-SDR: 9w3EE83yZ8msbP4Vadbn4nRD0SPycum1Br2ygBtUTIdX8TH+gz0CG1UZ5QLoE1sfKv6MKS4+Rr nXiAT2y4A/ew== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,460,1589266800"; d="scan'208";a="398445735" Received: from intel-npg-odc-srv01.cd.intel.com ([10.240.178.134]) by fmsmga001.fm.intel.com with ESMTP; 10 Aug 2020 23:49:25 -0700 From: SteveX Yang To: jingjing.wu@intel.com, beilei.xing@intel.com, dev@dpdk.org Cc: SteveX Yang Date: Tue, 11 Aug 2020 06:29:11 +0000 Message-Id: <20200811062917.7007-2-stevex.yang@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200811062917.7007-1-stevex.yang@intel.com> References: <20200811062917.7007-1-stevex.yang@intel.com> Subject: [dpdk-dev] [PATCH 1/7] net/iavf: fix scattered Rx enabling 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" No need to add additional vlan tag size for max packet size, since for i40e, the queue's Rx Max Frame Size (rxq->max_pkt_len) already includes the vlan header size. Fixes: 69dd4c3d0898 ("net/avf: enable queue and device") Signed-off-by: SteveX Yang --- drivers/net/iavf/iavf_ethdev.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c index c3aa4cd72..f9dd5710c 100644 --- a/drivers/net/iavf/iavf_ethdev.c +++ b/drivers/net/iavf/iavf_ethdev.c @@ -253,7 +253,7 @@ iavf_init_rxq(struct rte_eth_dev *dev, struct iavf_rx_queue *rxq) rxq->max_pkt_len = max_pkt_len; if ((dev_data->dev_conf.rxmode.offloads & DEV_RX_OFFLOAD_SCATTER) || - (rxq->max_pkt_len + 2 * IAVF_VLAN_TAG_SIZE) > buf_size) { + rxq->max_pkt_len > buf_size) { dev_data->scattered_rx = 1; } IAVF_PCI_REG_WRITE(rxq->qrx_tail, rxq->nb_rx_desc - 1); From patchwork Tue Aug 11 06:29:12 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steve Yang X-Patchwork-Id: 75366 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id C7B11A04D8; Tue, 11 Aug 2020 08:49:37 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id E9B3A1C07D; Tue, 11 Aug 2020 08:49:31 +0200 (CEST) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id 750AE1C00D for ; Tue, 11 Aug 2020 08:49:29 +0200 (CEST) IronPort-SDR: PlbekWEbxeilZ5doQPj/hrcxksrHR7fEV7XIJwNMsYvlS07uTyUcv7F2TG2Qkf61X/qH7eIYT1 YWOsoodKcMSg== X-IronPort-AV: E=McAfee;i="6000,8403,9709"; a="171722156" X-IronPort-AV: E=Sophos;i="5.75,460,1589266800"; d="scan'208";a="171722156" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Aug 2020 23:49:29 -0700 IronPort-SDR: +cYmaH/yrmcWowajs2Ab7e1ChY/m1TYppkWQJRF0GlMdX1Xeb1IWXOHYZjkWEXi8Gx16t8//2d dMa3DiULQRlg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,460,1589266800"; d="scan'208";a="398445740" Received: from intel-npg-odc-srv01.cd.intel.com ([10.240.178.134]) by fmsmga001.fm.intel.com with ESMTP; 10 Aug 2020 23:49:27 -0700 From: SteveX Yang To: jingjing.wu@intel.com, beilei.xing@intel.com, dev@dpdk.org Cc: SteveX Yang Date: Tue, 11 Aug 2020 06:29:12 +0000 Message-Id: <20200811062917.7007-3-stevex.yang@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200811062917.7007-1-stevex.yang@intel.com> References: <20200811062917.7007-1-stevex.yang@intel.com> Subject: [dpdk-dev] [PATCH 2/7] net/iavf: set speed to undefined for default case 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" During PF/VF link update, a default speed value of 100M will be set if get_link_info has failed or speed is unknown. Consequently if PF is put in no-carrier state, VFs will switch to "in carrier" state due to a link up + a link speed set to 100M (default value if no speed detected). To be consistent with linux drivers on which PF and VFs are in same carrier state, sets default speed to undefined (instead of 100M) and updates a link status of VF only if link is up and speed is different from undefined. Fixes: 48de41ca11f0 ("net/avf: enable link status update") Signed-off-by: SteveX Yang --- drivers/net/iavf/iavf_ethdev.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c index f9dd5710c..ae508f2f0 100644 --- a/drivers/net/iavf/iavf_ethdev.c +++ b/drivers/net/iavf/iavf_ethdev.c @@ -620,8 +620,9 @@ iavf_dev_link_update(struct rte_eth_dev *dev, } new_link.link_duplex = ETH_LINK_FULL_DUPLEX; - new_link.link_status = vf->link_up ? ETH_LINK_UP : - ETH_LINK_DOWN; + new_link.link_status = (vf->link_up && + new_link.link_speed != ETH_SPEED_NUM_NONE) + ? ETH_LINK_UP : ETH_LINK_DOWN; new_link.link_autoneg = !(dev->data->dev_conf.link_speeds & ETH_LINK_SPEED_FIXED); From patchwork Tue Aug 11 06:29:13 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steve Yang X-Patchwork-Id: 75367 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id C6E26A04D8; Tue, 11 Aug 2020 08:49:47 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 3A0C11C0AF; Tue, 11 Aug 2020 08:49:33 +0200 (CEST) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id A785B1C032 for ; Tue, 11 Aug 2020 08:49:31 +0200 (CEST) IronPort-SDR: K+vs7XEJTxajyqMcCibPy3cqrsIZ9Xs08twtzSPiY/e0rWIK5rwygFS6+wp8SAtZEjnJzhmPBM Y3oeFE0XPlbg== X-IronPort-AV: E=McAfee;i="6000,8403,9709"; a="171722159" X-IronPort-AV: E=Sophos;i="5.75,460,1589266800"; d="scan'208";a="171722159" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Aug 2020 23:49:31 -0700 IronPort-SDR: gtBTlbhD7nMZPnFQDeC6otdWnIJGYHnanLhzTlTn4E44ozuXoQX2qqL98co4FTr8zqqe8vzFeA agRfioVbwNIg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,460,1589266800"; d="scan'208";a="398445746" Received: from intel-npg-odc-srv01.cd.intel.com ([10.240.178.134]) by fmsmga001.fm.intel.com with ESMTP; 10 Aug 2020 23:49:29 -0700 From: SteveX Yang To: jingjing.wu@intel.com, beilei.xing@intel.com, dev@dpdk.org Cc: SteveX Yang Date: Tue, 11 Aug 2020 06:29:13 +0000 Message-Id: <20200811062917.7007-4-stevex.yang@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200811062917.7007-1-stevex.yang@intel.com> References: <20200811062917.7007-1-stevex.yang@intel.com> Subject: [dpdk-dev] [PATCH 3/7] net/iavf: fix port start during configuration restore 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 configuring VF promiscuous mode is not supported, return -ENOTSUP error code in .promiscuous_enable/disable dev_ops. This is to fix the port start during configuration restore, where if .promiscuous_enable/disable dev_ops exists and return any value other than -ENOTSUP, start will fail. Same is done for .allmulticast_enable/disable dev_ops. Fixes: ca041cd44fcc ("ethdev: change allmulticast callbacks to return status") Fixes: 9039c8125730 ("ethdev: change promiscuous callbacks to return status") Signed-off-by: SteveX Yang --- drivers/net/iavf/iavf_ethdev.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c index ae508f2f0..349c82cae 100644 --- a/drivers/net/iavf/iavf_ethdev.c +++ b/drivers/net/iavf/iavf_ethdev.c @@ -648,6 +648,8 @@ iavf_dev_promiscuous_enable(struct rte_eth_dev *dev) ret = iavf_config_promisc(adapter, true, vf->promisc_multicast_enabled); if (!ret) vf->promisc_unicast_enabled = true; + else if (ret == IAVF_NOT_SUPPORTED) + ret = -ENOTSUP; else ret = -EAGAIN; @@ -669,6 +671,8 @@ iavf_dev_promiscuous_disable(struct rte_eth_dev *dev) vf->promisc_multicast_enabled); if (!ret) vf->promisc_unicast_enabled = false; + else if (ret == IAVF_NOT_SUPPORTED) + ret = -ENOTSUP; else ret = -EAGAIN; @@ -689,6 +693,8 @@ iavf_dev_allmulticast_enable(struct rte_eth_dev *dev) ret = iavf_config_promisc(adapter, vf->promisc_unicast_enabled, true); if (!ret) vf->promisc_multicast_enabled = true; + else if (ret == IAVF_NOT_SUPPORTED) + ret = -ENOTSUP; else ret = -EAGAIN; @@ -709,6 +715,8 @@ iavf_dev_allmulticast_disable(struct rte_eth_dev *dev) ret = iavf_config_promisc(adapter, vf->promisc_unicast_enabled, false); if (!ret) vf->promisc_multicast_enabled = false; + else if (ret == IAVF_NOT_SUPPORTED) + ret = -ENOTSUP; else ret = -EAGAIN; From patchwork Tue Aug 11 06:29:14 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steve Yang X-Patchwork-Id: 75368 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 6DC8DA04D8; Tue, 11 Aug 2020 08:49:58 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 8B15D1C0B5; Tue, 11 Aug 2020 08:49:35 +0200 (CEST) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id E6CD31C0B3 for ; Tue, 11 Aug 2020 08:49:33 +0200 (CEST) IronPort-SDR: iCj3oov0SAu0Kmao/9AJft7U7B845WT6MegGlyIU41Ke1e6zsijVJ1QmxswlwU6CiRgkDe/NEx Ov1HyIBIK9Nw== X-IronPort-AV: E=McAfee;i="6000,8403,9709"; a="171722167" X-IronPort-AV: E=Sophos;i="5.75,460,1589266800"; d="scan'208";a="171722167" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Aug 2020 23:49:33 -0700 IronPort-SDR: uea6Jhikq0m6mJPQGszsQDcJBoBX4l42wPAnzGFYKR8yw0nxfGEN1g709QcYeuG6CYWSp8OZMS o4WsJ8z4l0YA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,460,1589266800"; d="scan'208";a="398445751" Received: from intel-npg-odc-srv01.cd.intel.com ([10.240.178.134]) by fmsmga001.fm.intel.com with ESMTP; 10 Aug 2020 23:49:32 -0700 From: SteveX Yang To: jingjing.wu@intel.com, beilei.xing@intel.com, dev@dpdk.org Cc: SteveX Yang Date: Tue, 11 Aug 2020 06:29:14 +0000 Message-Id: <20200811062917.7007-5-stevex.yang@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200811062917.7007-1-stevex.yang@intel.com> References: <20200811062917.7007-1-stevex.yang@intel.com> Subject: [dpdk-dev] [PATCH 4/7] net/iavf: fix setting of MAC address on iavf 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" When setting the MAC address, the ethdev layer copies the new mac address in dev->data->mac_addrs[0] before calling the dev_ops. Therefore, is_same_ether_addr(mac_addr, dev->data->mac_addrs) was always true, and the MAC was never set. Remove this test to fix the issue. Fixes: 538da7a1cad2 ("net: add rte prefix to ether functions") Signed-off-by: SteveX Yang --- drivers/net/iavf/iavf_ethdev.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c index 349c82cae..f16aff531 100644 --- a/drivers/net/iavf/iavf_ethdev.c +++ b/drivers/net/iavf/iavf_ethdev.c @@ -978,9 +978,6 @@ iavf_dev_set_default_mac_addr(struct rte_eth_dev *dev, old_addr = (struct rte_ether_addr *)hw->mac.addr; perm_addr = (struct rte_ether_addr *)hw->mac.perm_addr; - if (rte_is_same_ether_addr(mac_addr, old_addr)) - return 0; - /* If the MAC address is configured by host, skip the setting */ if (rte_is_valid_assigned_ether_addr(perm_addr)) return -EPERM; From patchwork Tue Aug 11 06:29:15 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steve Yang X-Patchwork-Id: 75369 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 42BCFA04D8; Tue, 11 Aug 2020 08:50:08 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id CFABA1C0BD; Tue, 11 Aug 2020 08:49:37 +0200 (CEST) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id 2A6731C0B8 for ; Tue, 11 Aug 2020 08:49:36 +0200 (CEST) IronPort-SDR: x1CdAa8La+/yB1zB0rXdfTg2QShgqxmxcb2NmVevbY+86+8SIS4U3CARCNF77QN9Jsj3B0+R0j JVTz/XYbuKOg== X-IronPort-AV: E=McAfee;i="6000,8403,9709"; a="171722172" X-IronPort-AV: E=Sophos;i="5.75,460,1589266800"; d="scan'208";a="171722172" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Aug 2020 23:49:35 -0700 IronPort-SDR: Y5WjR9cRJsyKybMa9Nm2sclJjFQ7j1ufoekpMkf3fhlc3cSjXE5WIvCfOQmrGsOB76I0sMPY9s Mt4kbj9D+ZWw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,460,1589266800"; d="scan'208";a="398445756" Received: from intel-npg-odc-srv01.cd.intel.com ([10.240.178.134]) by fmsmga001.fm.intel.com with ESMTP; 10 Aug 2020 23:49:34 -0700 From: SteveX Yang To: jingjing.wu@intel.com, beilei.xing@intel.com, dev@dpdk.org Cc: SteveX Yang Date: Tue, 11 Aug 2020 06:29:15 +0000 Message-Id: <20200811062917.7007-6-stevex.yang@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200811062917.7007-1-stevex.yang@intel.com> References: <20200811062917.7007-1-stevex.yang@intel.com> Subject: [dpdk-dev] [PATCH 5/7] net/iavf: fix multiple interrupts for VF 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" Interrupt mapping should be 1:n queue(s).This patch fixes the logic of interrupt bind by code reconstruction. Fixes: 69dd4c3d0898 ("net/avf: enable queue and device") Signed-off-by: SteveX Yang --- drivers/net/iavf/iavf_vchnl.c | 56 ++++++++++++++++++++++++++++------- 1 file changed, 45 insertions(+), 11 deletions(-) diff --git a/drivers/net/iavf/iavf_vchnl.c b/drivers/net/iavf/iavf_vchnl.c index 33acea54a..614ea7e79 100644 --- a/drivers/net/iavf/iavf_vchnl.c +++ b/drivers/net/iavf/iavf_vchnl.c @@ -18,6 +18,7 @@ #include #include #include +#include #include "iavf.h" #include "iavf_rxtx.h" @@ -686,20 +687,53 @@ int iavf_config_irq_map(struct iavf_adapter *adapter) { struct iavf_info *vf = IAVF_DEV_PRIVATE_TO_VF(adapter); + struct iavf_cmd_info args; + uint8_t *cmd_buffer = NULL; struct virtchnl_irq_map_info *map_info; struct virtchnl_vector_map *vecmap; - struct iavf_cmd_info args; - int len, i, err; + struct rte_eth_dev *dev = adapter->eth_dev; + struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev); + struct rte_intr_handle *intr_handle = &pci_dev->intr_handle; + uint32_t vec, cmd_buffer_size, max_vectors, nb_msix, msix_base, i; + uint16_t rxq_map[vf->vf_res->max_vectors]; + int err; - len = sizeof(struct virtchnl_irq_map_info) + - sizeof(struct virtchnl_vector_map) * vf->nb_msix; + memset(rxq_map, 0, sizeof(rxq_map)); + if (dev->data->dev_conf.intr_conf.rxq && + rte_intr_allow_others(intr_handle)) { + msix_base = IAVF_RX_VEC_START; + max_vectors = vf->vf_res->max_vectors - 1; + nb_msix = RTE_MIN(max_vectors, intr_handle->nb_efd); + + vec = msix_base; + for (i = 0; i < dev->data->nb_rx_queues; i++) { + rxq_map[vec] |= 1 << i; + intr_handle->intr_vec[i] = vec++; + if (vec >= vf->vf_res->max_vectors) + vec = msix_base; + } + } else { + msix_base = IAVF_MISC_VEC_ID; + nb_msix = 1; - map_info = rte_zmalloc("map_info", len, 0); - if (!map_info) - return -ENOMEM; + for (i = 0; i < dev->data->nb_rx_queues; i++) { + rxq_map[msix_base] |= 1 << i; + if (rte_intr_dp_is_en(intr_handle)) + intr_handle->intr_vec[i] = msix_base; + } + } - map_info->num_vectors = vf->nb_msix; - for (i = 0; i < vf->nb_msix; i++) { + cmd_buffer_size = sizeof(struct virtchnl_irq_map_info) + + sizeof(struct virtchnl_vector_map) * nb_msix; + cmd_buffer = rte_zmalloc("iavf", cmd_buffer_size, 0); + if (!cmd_buffer) { + PMD_DRV_LOG(ERR, "Failed to allocate memory"); + return IAVF_ERR_NO_MEMORY; + } + + map_info = (struct virtchnl_irq_map_info *)cmd_buffer; + map_info->num_vectors = nb_msix; + for (i = 0; i < nb_msix; i++) { vecmap = &map_info->vecmap[i]; vecmap->vsi_id = vf->vsi_res->vsi_id; vecmap->rxitr_idx = IAVF_ITR_INDEX_DEFAULT; @@ -709,8 +743,8 @@ iavf_config_irq_map(struct iavf_adapter *adapter) } args.ops = VIRTCHNL_OP_CONFIG_IRQ_MAP; - args.in_args = (u8 *)map_info; - args.in_args_size = len; + args.in_args = (u8 *)cmd_buffer; + args.in_args_size = cmd_buffer_size; args.out_buffer = vf->aq_resp; args.out_size = IAVF_AQ_BUF_SZ; err = iavf_execute_vf_cmd(adapter, &args); From patchwork Tue Aug 11 06:29:16 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steve Yang X-Patchwork-Id: 75370 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id C79A5A04D8; Tue, 11 Aug 2020 08:50:19 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 16F4B1C0C3; Tue, 11 Aug 2020 08:49:40 +0200 (CEST) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id 6C8B81C0C2 for ; Tue, 11 Aug 2020 08:49:38 +0200 (CEST) IronPort-SDR: R+ENUZ7UkpB6vkzdUnbZjnoDpppxXnQBfEOtdt/iOF3q7tNItQ5uOc+3Usm0eNzg7DXYlWKL2B cwvBLYYvySYw== X-IronPort-AV: E=McAfee;i="6000,8403,9709"; a="171722174" X-IronPort-AV: E=Sophos;i="5.75,460,1589266800"; d="scan'208";a="171722174" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Aug 2020 23:49:38 -0700 IronPort-SDR: QujR1AuXygCGG7k4EAr97Xy6e2/zcUGLwRuaLs4QnKL3cexHm5jIaSYKp7SNCkfcs2obD5y1P7 Xce63N+bG9Dg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,460,1589266800"; d="scan'208";a="398445761" Received: from intel-npg-odc-srv01.cd.intel.com ([10.240.178.134]) by fmsmga001.fm.intel.com with ESMTP; 10 Aug 2020 23:49:36 -0700 From: SteveX Yang To: jingjing.wu@intel.com, beilei.xing@intel.com, dev@dpdk.org Cc: SteveX Yang Date: Tue, 11 Aug 2020 06:29:16 +0000 Message-Id: <20200811062917.7007-7-stevex.yang@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200811062917.7007-1-stevex.yang@intel.com> References: <20200811062917.7007-1-stevex.yang@intel.com> Subject: [dpdk-dev] [PATCH 6/7] net/iavf: downgrade error log 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" When receiving the unsupported AQ messages, it's taken as an error. It's not appropriate and triggers too much unnecessary print. Fixes: 22b123a36d07 ("net/avf: initialize PMD") Signed-off-by: SteveX Yang --- drivers/net/iavf/iavf_vchnl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/iavf/iavf_vchnl.c b/drivers/net/iavf/iavf_vchnl.c index 614ea7e79..06eaae0e4 100644 --- a/drivers/net/iavf/iavf_vchnl.c +++ b/drivers/net/iavf/iavf_vchnl.c @@ -266,7 +266,7 @@ iavf_handle_virtchnl_msg(struct rte_eth_dev *dev) } break; default: - PMD_DRV_LOG(ERR, "Request %u is not supported yet", + PMD_DRV_LOG(DEBUG, "Request %u is not supported yet", aq_opc); break; } From patchwork Tue Aug 11 06:29:17 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steve Yang X-Patchwork-Id: 75371 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 01810A04D8; Tue, 11 Aug 2020 08:50:33 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id A91D71C0D0; Tue, 11 Aug 2020 08:49:42 +0200 (CEST) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id 5BD551C0CD for ; Tue, 11 Aug 2020 08:49:41 +0200 (CEST) IronPort-SDR: FtvVC/5yRl78P1AWKZLKOvN5HkARrEAYxqMZNx5Z7qEmRBEw3xaTaLhPNQFopUeYK4PJZ3XRBH Uqg/a/aTnrhA== X-IronPort-AV: E=McAfee;i="6000,8403,9709"; a="171722177" X-IronPort-AV: E=Sophos;i="5.75,460,1589266800"; d="scan'208";a="171722177" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Aug 2020 23:49:41 -0700 IronPort-SDR: VSWGZzg5G+wHeME0jj1jZOCBMFa+HM5DIDra2uoO6gb7T1FwVzNzrG8mJKT3KMRRbu1vt9hmY7 NDtiexQj0g6g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,460,1589266800"; d="scan'208";a="398445765" Received: from intel-npg-odc-srv01.cd.intel.com ([10.240.178.134]) by fmsmga001.fm.intel.com with ESMTP; 10 Aug 2020 23:49:39 -0700 From: SteveX Yang To: jingjing.wu@intel.com, beilei.xing@intel.com, dev@dpdk.org Cc: "Zhang, RobinX" , SteveX Yang Date: Tue, 11 Aug 2020 06:29:17 +0000 Message-Id: <20200811062917.7007-8-stevex.yang@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200811062917.7007-1-stevex.yang@intel.com> References: <20200811062917.7007-1-stevex.yang@intel.com> Subject: [dpdk-dev] [PATCH 7/7] net/iavf: fix port close 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" From: "Zhang, RobinX" Port reset will call iavf_dev_uninit() to release resources. It wants to call iavf_dev_close() to release resources. So there will be a call conflict if calling iavf_dev_reset() and iavf_dev_close() at the same time. This patch added adapter->closed flag in iavf_dev_close() to control the status of close. Fixes: 83fe5e80692a ("net/iavf: move device state flag") Signed-off-by: SteveX Yang --- drivers/net/iavf/iavf.h | 1 + drivers/net/iavf/iavf_ethdev.c | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/drivers/net/iavf/iavf.h b/drivers/net/iavf/iavf.h index 9be8a2381..06cbe6089 100644 --- a/drivers/net/iavf/iavf.h +++ b/drivers/net/iavf/iavf.h @@ -161,6 +161,7 @@ struct iavf_adapter { bool tx_vec_allowed; const uint32_t *ptype_tbl; bool stopped; + bool closed; uint16_t fdir_ref_cnt; }; diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c index f16aff531..b58e57b07 100644 --- a/drivers/net/iavf/iavf_ethdev.c +++ b/drivers/net/iavf/iavf_ethdev.c @@ -1367,6 +1367,7 @@ iavf_dev_init(struct rte_eth_dev *eth_dev) hw->back = IAVF_DEV_PRIVATE_TO_ADAPTER(eth_dev->data->dev_private); adapter->eth_dev = eth_dev; adapter->stopped = 1; + adapter->closed = 0; if (iavf_init_vf(eth_dev) != 0) { PMD_INIT_LOG(ERR, "Init vf failed"); @@ -1423,6 +1424,9 @@ iavf_dev_close(struct rte_eth_dev *dev) struct iavf_adapter *adapter = IAVF_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private); + if (adapter->closed == 1) + return; + iavf_dev_stop(dev); iavf_flow_flush(dev, NULL); iavf_flow_uninit(adapter); @@ -1434,6 +1438,8 @@ iavf_dev_close(struct rte_eth_dev *dev) rte_intr_callback_unregister(intr_handle, iavf_dev_interrupt_handler, dev); iavf_disable_irq0(hw); + + adapter->closed = 1; } static int