From patchwork Tue Apr 4 12:41:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Xing, Beilei" X-Patchwork-Id: 125770 X-Patchwork-Delegate: qi.z.zhang@intel.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id B9EBF428CD; Tue, 4 Apr 2023 15:03:49 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1E71C427F2; Tue, 4 Apr 2023 15:03:46 +0200 (CEST) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by mails.dpdk.org (Postfix) with ESMTP id CFDD340A7E for ; Tue, 4 Apr 2023 15:03:44 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1680613425; x=1712149425; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=T3KfUbuVZVH/Yy+y+S3AiVjFNPgP/n00jvr6rJJI/ew=; b=AB5BWLJGXfw/GM8tvC0CHQyXWOLK/nON/6uAafWjLHGjTHW0L08Yf4t4 UJnecpjAQxad/tTFSYjiRB8JMxFQDPxa383TuEbVD/XvHtjw8gyACQ7Eu 4oJKYE2HPJ3Ep3YcfKDhjyuQBj5oxnwUWNiCcHPYmWia9vWRKBD6ikxu5 9hf8KykrXq+mFbbYDQOBO5GRhcWU9awIdzUFJXJKqOFOOA2BLlUXvenC+ w08lUUsMSDQUhnlJmaSejHIywSc/f6C4qbBeSPueVKP+E+pGDE1qey7t+ CkJoNYnndZm263X+D2yexI9kxydRW/WWw9bc7lCnpnMmGA6IRwJz4OF/p A==; X-IronPort-AV: E=McAfee;i="6600,9927,10670"; a="344739412" X-IronPort-AV: E=Sophos;i="5.98,317,1673942400"; d="scan'208";a="344739412" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Apr 2023 06:03:44 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10670"; a="810229628" X-IronPort-AV: E=Sophos;i="5.98,317,1673942400"; d="scan'208";a="810229628" Received: from dpdk-beileix-3.sh.intel.com ([10.67.110.253]) by orsmga004.jf.intel.com with ESMTP; 04 Apr 2023 06:03:42 -0700 From: beilei.xing@intel.com To: jingjing.wu@intel.com Cc: dev@dpdk.org, Beilei Xing Subject: [PATCH v3 1/2] common/idpf: move PF specific functions from common init Date: Tue, 4 Apr 2023 12:41:11 +0000 Message-Id: <20230404124112.71703-2-beilei.xing@intel.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20230404124112.71703-1-beilei.xing@intel.com> References: <20230321070703.80689-1-beilei.xing@intel.com> <20230404124112.71703-1-beilei.xing@intel.com> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Beilei Xing Move PF reset and PF mailbox initialization functions from idpf_adapter_init function to xxxx_adapter_ext_init function, since they're different between PF and VF support. Signed-off-by: Beilei Xing --- drivers/common/idpf/idpf_common_device.c | 72 +++++------------------- drivers/common/idpf/idpf_common_device.h | 11 ++++ drivers/common/idpf/version.map | 5 ++ drivers/net/cpfl/cpfl_ethdev.c | 51 +++++++++++++++++ drivers/net/idpf/idpf_ethdev.c | 51 +++++++++++++++++ 5 files changed, 131 insertions(+), 59 deletions(-) diff --git a/drivers/common/idpf/idpf_common_device.c b/drivers/common/idpf/idpf_common_device.c index c5e7bbf66c..3b58bdd41e 100644 --- a/drivers/common/idpf/idpf_common_device.c +++ b/drivers/common/idpf/idpf_common_device.c @@ -6,8 +6,8 @@ #include #include -static void -idpf_reset_pf(struct idpf_hw *hw) +void +idpf_hw_pf_reset(struct idpf_hw *hw) { uint32_t reg; @@ -15,9 +15,8 @@ idpf_reset_pf(struct idpf_hw *hw) IDPF_WRITE_REG(hw, PFGEN_CTRL, (reg | PFGEN_CTRL_PFSWR)); } -#define IDPF_RESET_WAIT_CNT 100 -static int -idpf_check_pf_reset_done(struct idpf_hw *hw) +int +idpf_hw_pf_reset_check(struct idpf_hw *hw) { uint32_t reg; int i; @@ -33,48 +32,13 @@ idpf_check_pf_reset_done(struct idpf_hw *hw) return -EBUSY; } -#define CTLQ_NUM 2 -static int -idpf_init_mbx(struct idpf_hw *hw) +int +idpf_hw_mbx_init(struct idpf_hw *hw, struct idpf_ctlq_create_info *ctlq_info) { - struct idpf_ctlq_create_info ctlq_info[CTLQ_NUM] = { - { - .type = IDPF_CTLQ_TYPE_MAILBOX_TX, - .id = IDPF_CTLQ_ID, - .len = IDPF_CTLQ_LEN, - .buf_size = IDPF_DFLT_MBX_BUF_SIZE, - .reg = { - .head = PF_FW_ATQH, - .tail = PF_FW_ATQT, - .len = PF_FW_ATQLEN, - .bah = PF_FW_ATQBAH, - .bal = PF_FW_ATQBAL, - .len_mask = PF_FW_ATQLEN_ATQLEN_M, - .len_ena_mask = PF_FW_ATQLEN_ATQENABLE_M, - .head_mask = PF_FW_ATQH_ATQH_M, - } - }, - { - .type = IDPF_CTLQ_TYPE_MAILBOX_RX, - .id = IDPF_CTLQ_ID, - .len = IDPF_CTLQ_LEN, - .buf_size = IDPF_DFLT_MBX_BUF_SIZE, - .reg = { - .head = PF_FW_ARQH, - .tail = PF_FW_ARQT, - .len = PF_FW_ARQLEN, - .bah = PF_FW_ARQBAH, - .bal = PF_FW_ARQBAL, - .len_mask = PF_FW_ARQLEN_ARQLEN_M, - .len_ena_mask = PF_FW_ARQLEN_ARQENABLE_M, - .head_mask = PF_FW_ARQH_ARQH_M, - } - } - }; struct idpf_ctlq_info *ctlq; int ret; - ret = idpf_ctlq_init(hw, CTLQ_NUM, ctlq_info); + ret = idpf_ctlq_init(hw, IDPF_CTLQ_NUM, ctlq_info); if (ret != 0) return ret; @@ -96,6 +60,12 @@ idpf_init_mbx(struct idpf_hw *hw) return ret; } +void +idpf_hw_mbx_deinit(struct idpf_hw *hw) +{ + idpf_ctlq_deinit(hw); +} + static int idpf_get_pkt_type(struct idpf_adapter *adapter) { @@ -312,19 +282,6 @@ idpf_adapter_init(struct idpf_adapter *adapter) struct idpf_hw *hw = &adapter->hw; int ret; - idpf_reset_pf(hw); - ret = idpf_check_pf_reset_done(hw); - if (ret != 0) { - DRV_LOG(ERR, "IDPF is still resetting"); - goto err_check_reset; - } - - ret = idpf_init_mbx(hw); - if (ret != 0) { - DRV_LOG(ERR, "Failed to init mailbox"); - goto err_check_reset; - } - adapter->mbx_resp = rte_zmalloc("idpf_adapter_mbx_resp", IDPF_DFLT_MBX_BUF_SIZE, 0); if (adapter->mbx_resp == NULL) { @@ -357,8 +314,6 @@ idpf_adapter_init(struct idpf_adapter *adapter) rte_free(adapter->mbx_resp); adapter->mbx_resp = NULL; err_mbx_resp: - idpf_ctlq_deinit(hw); -err_check_reset: return ret; } @@ -367,7 +322,6 @@ idpf_adapter_deinit(struct idpf_adapter *adapter) { struct idpf_hw *hw = &adapter->hw; - idpf_ctlq_deinit(hw); rte_free(adapter->mbx_resp); adapter->mbx_resp = NULL; diff --git a/drivers/common/idpf/idpf_common_device.h b/drivers/common/idpf/idpf_common_device.h index c2dc2f16b9..7cf2355bc9 100644 --- a/drivers/common/idpf/idpf_common_device.h +++ b/drivers/common/idpf/idpf_common_device.h @@ -10,8 +10,11 @@ #include #include +#define IDPF_RESET_WAIT_CNT 100 + #define IDPF_RSS_KEY_LEN 52 +#define IDPF_CTLQ_NUM 2 #define IDPF_CTLQ_ID -1 #define IDPF_CTLQ_LEN 64 #define IDPF_DFLT_MBX_BUF_SIZE 4096 @@ -180,6 +183,14 @@ atomic_set_cmd(struct idpf_adapter *adapter, uint32_t ops) return !ret; } +__rte_internal +void idpf_hw_pf_reset(struct idpf_hw *hw); +__rte_internal +int idpf_hw_pf_reset_check(struct idpf_hw *hw); +__rte_internal +int idpf_hw_mbx_init(struct idpf_hw *hw, struct idpf_ctlq_create_info *ctlq_info); +__rte_internal +void idpf_hw_mbx_deinit(struct idpf_hw *hw); __rte_internal int idpf_adapter_init(struct idpf_adapter *adapter); __rte_internal diff --git a/drivers/common/idpf/version.map b/drivers/common/idpf/version.map index 70334a1b03..7076759024 100644 --- a/drivers/common/idpf/version.map +++ b/drivers/common/idpf/version.map @@ -15,6 +15,11 @@ INTERNAL { idpf_dp_splitq_xmit_pkts; idpf_dp_splitq_xmit_pkts_avx512; + idpf_hw_mbx_deinit; + idpf_hw_mbx_init; + idpf_hw_pf_reset; + idpf_hw_pf_reset_check; + idpf_qc_rx_thresh_check; idpf_qc_rx_queue_release; idpf_qc_rxq_mbufs_release; diff --git a/drivers/net/cpfl/cpfl_ethdev.c b/drivers/net/cpfl/cpfl_ethdev.c index ede730fd50..d3c50619ea 100644 --- a/drivers/net/cpfl/cpfl_ethdev.c +++ b/drivers/net/cpfl/cpfl_ethdev.c @@ -1165,6 +1165,41 @@ cpfl_dev_alarm_handler(void *param) rte_eal_alarm_set(CPFL_ALARM_INTERVAL, cpfl_dev_alarm_handler, adapter); } +static struct idpf_ctlq_create_info ctlq_info[IDPF_CTLQ_NUM] = { + { + .type = IDPF_CTLQ_TYPE_MAILBOX_TX, + .id = IDPF_CTLQ_ID, + .len = IDPF_CTLQ_LEN, + .buf_size = IDPF_DFLT_MBX_BUF_SIZE, + .reg = { + .head = PF_FW_ATQH, + .tail = PF_FW_ATQT, + .len = PF_FW_ATQLEN, + .bah = PF_FW_ATQBAH, + .bal = PF_FW_ATQBAL, + .len_mask = PF_FW_ATQLEN_ATQLEN_M, + .len_ena_mask = PF_FW_ATQLEN_ATQENABLE_M, + .head_mask = PF_FW_ATQH_ATQH_M, + } + }, + { + .type = IDPF_CTLQ_TYPE_MAILBOX_RX, + .id = IDPF_CTLQ_ID, + .len = IDPF_CTLQ_LEN, + .buf_size = IDPF_DFLT_MBX_BUF_SIZE, + .reg = { + .head = PF_FW_ARQH, + .tail = PF_FW_ARQT, + .len = PF_FW_ARQLEN, + .bah = PF_FW_ARQBAH, + .bal = PF_FW_ARQBAL, + .len_mask = PF_FW_ARQLEN_ARQLEN_M, + .len_ena_mask = PF_FW_ARQLEN_ARQENABLE_M, + .head_mask = PF_FW_ARQH_ARQH_M, + } + } +}; + static int cpfl_adapter_ext_init(struct rte_pci_device *pci_dev, struct cpfl_adapter_ext *adapter) { @@ -1181,6 +1216,19 @@ cpfl_adapter_ext_init(struct rte_pci_device *pci_dev, struct cpfl_adapter_ext *a strncpy(adapter->name, pci_dev->device.name, PCI_PRI_STR_SIZE); + idpf_hw_pf_reset(hw); + ret = idpf_hw_pf_reset_check(hw); + if (ret != 0) { + PMD_INIT_LOG(ERR, "PF is still resetting"); + goto err_reset_check; + } + + ret = idpf_hw_mbx_init(hw, ctlq_info); + if (ret != 0) { + PMD_INIT_LOG(ERR, "Failed to init mailbox"); + goto err_reset_check; + } + ret = idpf_adapter_init(base); if (ret != 0) { PMD_INIT_LOG(ERR, "Failed to init adapter"); @@ -1213,6 +1261,8 @@ cpfl_adapter_ext_init(struct rte_pci_device *pci_dev, struct cpfl_adapter_ext *a rte_eal_alarm_cancel(cpfl_dev_alarm_handler, adapter); idpf_adapter_deinit(base); err_adapter_init: + idpf_hw_mbx_deinit(hw); +err_reset_check: return ret; } @@ -1323,6 +1373,7 @@ cpfl_adapter_ext_deinit(struct cpfl_adapter_ext *adapter) { rte_eal_alarm_cancel(cpfl_dev_alarm_handler, adapter); idpf_adapter_deinit(&adapter->base); + idpf_hw_mbx_deinit(&adapter->base.hw); rte_free(adapter->vports); adapter->vports = NULL; diff --git a/drivers/net/idpf/idpf_ethdev.c b/drivers/net/idpf/idpf_ethdev.c index e02ec2ec5a..662a8a806a 100644 --- a/drivers/net/idpf/idpf_ethdev.c +++ b/drivers/net/idpf/idpf_ethdev.c @@ -1128,6 +1128,41 @@ idpf_dev_alarm_handler(void *param) rte_eal_alarm_set(IDPF_ALARM_INTERVAL, idpf_dev_alarm_handler, adapter); } +static struct idpf_ctlq_create_info idpf_ctlq_info[IDPF_CTLQ_NUM] = { + { + .type = IDPF_CTLQ_TYPE_MAILBOX_TX, + .id = IDPF_CTLQ_ID, + .len = IDPF_CTLQ_LEN, + .buf_size = IDPF_DFLT_MBX_BUF_SIZE, + .reg = { + .head = PF_FW_ATQH, + .tail = PF_FW_ATQT, + .len = PF_FW_ATQLEN, + .bah = PF_FW_ATQBAH, + .bal = PF_FW_ATQBAL, + .len_mask = PF_FW_ATQLEN_ATQLEN_M, + .len_ena_mask = PF_FW_ATQLEN_ATQENABLE_M, + .head_mask = PF_FW_ATQH_ATQH_M, + } + }, + { + .type = IDPF_CTLQ_TYPE_MAILBOX_RX, + .id = IDPF_CTLQ_ID, + .len = IDPF_CTLQ_LEN, + .buf_size = IDPF_DFLT_MBX_BUF_SIZE, + .reg = { + .head = PF_FW_ARQH, + .tail = PF_FW_ARQT, + .len = PF_FW_ARQLEN, + .bah = PF_FW_ARQBAH, + .bal = PF_FW_ARQBAL, + .len_mask = PF_FW_ARQLEN_ARQLEN_M, + .len_ena_mask = PF_FW_ARQLEN_ARQENABLE_M, + .head_mask = PF_FW_ARQH_ARQH_M, + } + } +}; + static int idpf_adapter_ext_init(struct rte_pci_device *pci_dev, struct idpf_adapter_ext *adapter) { @@ -1144,6 +1179,19 @@ idpf_adapter_ext_init(struct rte_pci_device *pci_dev, struct idpf_adapter_ext *a strncpy(adapter->name, pci_dev->device.name, PCI_PRI_STR_SIZE); + idpf_hw_pf_reset(hw); + ret = idpf_hw_pf_reset_check(hw); + if (ret != 0) { + PMD_INIT_LOG(ERR, "PF is still resetting"); + goto err_reset_check; + } + + ret = idpf_hw_mbx_init(hw, idpf_ctlq_info); + if (ret != 0) { + PMD_INIT_LOG(ERR, "Failed to init mailbox"); + goto err_reset_check; + } + ret = idpf_adapter_init(base); if (ret != 0) { PMD_INIT_LOG(ERR, "Failed to init adapter"); @@ -1175,6 +1223,8 @@ idpf_adapter_ext_init(struct rte_pci_device *pci_dev, struct idpf_adapter_ext *a rte_eal_alarm_cancel(idpf_dev_alarm_handler, adapter); idpf_adapter_deinit(base); err_adapter_init: + idpf_hw_mbx_deinit(hw); +err_reset_check: return ret; } @@ -1311,6 +1361,7 @@ idpf_adapter_ext_deinit(struct idpf_adapter_ext *adapter) { rte_eal_alarm_cancel(idpf_dev_alarm_handler, adapter); idpf_adapter_deinit(&adapter->base); + idpf_hw_mbx_deinit(&adapter->base.hw); rte_free(adapter->vports); adapter->vports = NULL; From patchwork Tue Apr 4 12:41:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Xing, Beilei" X-Patchwork-Id: 125771 X-Patchwork-Delegate: qi.z.zhang@intel.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 21E73428CD; Tue, 4 Apr 2023 15:03:56 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3744042B7E; Tue, 4 Apr 2023 15:03:48 +0200 (CEST) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by mails.dpdk.org (Postfix) with ESMTP id 74B5242B7E for ; Tue, 4 Apr 2023 15:03:46 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1680613426; x=1712149426; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=OiZu0cmyThkxMRLb+mEuLb1IYL6w8qfcO8DINBq3IEw=; b=EY2rXu93r7M50ffLktRLGHQkWi4moln+/VdmdsuydszWEzhUeCwVLuZx hjLBW324f0KNeIXzcHx9p8brIEcWmGPrqUbyrbWFB7n7EuzAyAjdJ9qgA 0d+KCQp/dGJqbmgL981rJa2BNzlLVK1G5S8a2kvWy4Pb/ZFBLCkQVr6rb cfABGLnJDK2nZV58TWB3P51kL7kY/eXddGAy/Y8gNLspfZgWOmjogAsfI LIrMcq/foUParK0TkW32pgkQkDNFg4SoXkE6nfgyeugU7nfh3tA+pPf3e EKxOMWPN976Ev3ql20f08F5q8SAmF/YF4c2ZQGJ+Q+NqkUSDV9OrxeIpv g==; X-IronPort-AV: E=McAfee;i="6600,9927,10670"; a="344739418" X-IronPort-AV: E=Sophos;i="5.98,317,1673942400"; d="scan'208";a="344739418" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Apr 2023 06:03:46 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10670"; a="810229634" X-IronPort-AV: E=Sophos;i="5.98,317,1673942400"; d="scan'208";a="810229634" Received: from dpdk-beileix-3.sh.intel.com ([10.67.110.253]) by orsmga004.jf.intel.com with ESMTP; 04 Apr 2023 06:03:44 -0700 From: beilei.xing@intel.com To: jingjing.wu@intel.com Cc: dev@dpdk.org, Beilei Xing Subject: [PATCH v3 2/2] common/idpf: refine capability get Date: Tue, 4 Apr 2023 12:41:12 +0000 Message-Id: <20230404124112.71703-3-beilei.xing@intel.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20230404124112.71703-1-beilei.xing@intel.com> References: <20230321070703.80689-1-beilei.xing@intel.com> <20230404124112.71703-1-beilei.xing@intel.com> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Beilei Xing Initialize required capability in PMD, and refine idpf_vc_caps_get function. Then different PMDs can require different capability. Signed-off-by: Beilei Xing --- drivers/common/idpf/idpf_common_virtchnl.c | 45 ++-------------------- drivers/net/cpfl/cpfl_ethdev.c | 41 ++++++++++++++++++++ drivers/net/idpf/idpf_ethdev.c | 40 +++++++++++++++++++ 3 files changed, 84 insertions(+), 42 deletions(-) diff --git a/drivers/common/idpf/idpf_common_virtchnl.c b/drivers/common/idpf/idpf_common_virtchnl.c index 9ee7259539..a4e129062e 100644 --- a/drivers/common/idpf/idpf_common_virtchnl.c +++ b/drivers/common/idpf/idpf_common_virtchnl.c @@ -278,51 +278,12 @@ idpf_vc_api_version_check(struct idpf_adapter *adapter) int idpf_vc_caps_get(struct idpf_adapter *adapter) { - struct virtchnl2_get_capabilities caps_msg; struct idpf_cmd_info args; int err; - memset(&caps_msg, 0, sizeof(struct virtchnl2_get_capabilities)); - - caps_msg.csum_caps = - VIRTCHNL2_CAP_TX_CSUM_L3_IPV4 | - VIRTCHNL2_CAP_TX_CSUM_L4_IPV4_TCP | - VIRTCHNL2_CAP_TX_CSUM_L4_IPV4_UDP | - VIRTCHNL2_CAP_TX_CSUM_L4_IPV4_SCTP | - VIRTCHNL2_CAP_TX_CSUM_L4_IPV6_TCP | - VIRTCHNL2_CAP_TX_CSUM_L4_IPV6_UDP | - VIRTCHNL2_CAP_TX_CSUM_L4_IPV6_SCTP | - VIRTCHNL2_CAP_TX_CSUM_GENERIC | - VIRTCHNL2_CAP_RX_CSUM_L3_IPV4 | - VIRTCHNL2_CAP_RX_CSUM_L4_IPV4_TCP | - VIRTCHNL2_CAP_RX_CSUM_L4_IPV4_UDP | - VIRTCHNL2_CAP_RX_CSUM_L4_IPV4_SCTP | - VIRTCHNL2_CAP_RX_CSUM_L4_IPV6_TCP | - VIRTCHNL2_CAP_RX_CSUM_L4_IPV6_UDP | - VIRTCHNL2_CAP_RX_CSUM_L4_IPV6_SCTP | - VIRTCHNL2_CAP_RX_CSUM_GENERIC; - - caps_msg.rss_caps = - VIRTCHNL2_CAP_RSS_IPV4_TCP | - VIRTCHNL2_CAP_RSS_IPV4_UDP | - VIRTCHNL2_CAP_RSS_IPV4_SCTP | - VIRTCHNL2_CAP_RSS_IPV4_OTHER | - VIRTCHNL2_CAP_RSS_IPV6_TCP | - VIRTCHNL2_CAP_RSS_IPV6_UDP | - VIRTCHNL2_CAP_RSS_IPV6_SCTP | - VIRTCHNL2_CAP_RSS_IPV6_OTHER | - VIRTCHNL2_CAP_RSS_IPV4_AH | - VIRTCHNL2_CAP_RSS_IPV4_ESP | - VIRTCHNL2_CAP_RSS_IPV4_AH_ESP | - VIRTCHNL2_CAP_RSS_IPV6_AH | - VIRTCHNL2_CAP_RSS_IPV6_ESP | - VIRTCHNL2_CAP_RSS_IPV6_AH_ESP; - - caps_msg.other_caps = VIRTCHNL2_CAP_WB_ON_ITR; - args.ops = VIRTCHNL2_OP_GET_CAPS; - args.in_args = (uint8_t *)&caps_msg; - args.in_args_size = sizeof(caps_msg); + args.in_args = (uint8_t *)&adapter->caps; + args.in_args_size = sizeof(struct virtchnl2_get_capabilities); args.out_buffer = adapter->mbx_resp; args.out_size = IDPF_DFLT_MBX_BUF_SIZE; @@ -333,7 +294,7 @@ idpf_vc_caps_get(struct idpf_adapter *adapter) return err; } - rte_memcpy(&adapter->caps, args.out_buffer, sizeof(caps_msg)); + rte_memcpy(&adapter->caps, args.out_buffer, sizeof(struct virtchnl2_get_capabilities)); return 0; } diff --git a/drivers/net/cpfl/cpfl_ethdev.c b/drivers/net/cpfl/cpfl_ethdev.c index d3c50619ea..186ccb3095 100644 --- a/drivers/net/cpfl/cpfl_ethdev.c +++ b/drivers/net/cpfl/cpfl_ethdev.c @@ -1200,6 +1200,45 @@ static struct idpf_ctlq_create_info ctlq_info[IDPF_CTLQ_NUM] = { } }; +static struct virtchnl2_get_capabilities req_caps = { + .csum_caps = + VIRTCHNL2_CAP_TX_CSUM_L3_IPV4 | + VIRTCHNL2_CAP_TX_CSUM_L4_IPV4_TCP | + VIRTCHNL2_CAP_TX_CSUM_L4_IPV4_UDP | + VIRTCHNL2_CAP_TX_CSUM_L4_IPV4_SCTP | + VIRTCHNL2_CAP_TX_CSUM_L4_IPV6_TCP | + VIRTCHNL2_CAP_TX_CSUM_L4_IPV6_UDP | + VIRTCHNL2_CAP_TX_CSUM_L4_IPV6_SCTP | + VIRTCHNL2_CAP_TX_CSUM_GENERIC | + VIRTCHNL2_CAP_RX_CSUM_L3_IPV4 | + VIRTCHNL2_CAP_RX_CSUM_L4_IPV4_TCP | + VIRTCHNL2_CAP_RX_CSUM_L4_IPV4_UDP | + VIRTCHNL2_CAP_RX_CSUM_L4_IPV4_SCTP | + VIRTCHNL2_CAP_RX_CSUM_L4_IPV6_TCP | + VIRTCHNL2_CAP_RX_CSUM_L4_IPV6_UDP | + VIRTCHNL2_CAP_RX_CSUM_L4_IPV6_SCTP | + VIRTCHNL2_CAP_RX_CSUM_GENERIC, + + .rss_caps = + VIRTCHNL2_CAP_RSS_IPV4_TCP | + VIRTCHNL2_CAP_RSS_IPV4_UDP | + VIRTCHNL2_CAP_RSS_IPV4_SCTP | + VIRTCHNL2_CAP_RSS_IPV4_OTHER | + VIRTCHNL2_CAP_RSS_IPV6_TCP | + VIRTCHNL2_CAP_RSS_IPV6_UDP | + VIRTCHNL2_CAP_RSS_IPV6_SCTP | + VIRTCHNL2_CAP_RSS_IPV6_OTHER | + VIRTCHNL2_CAP_RSS_IPV4_AH | + VIRTCHNL2_CAP_RSS_IPV4_ESP | + VIRTCHNL2_CAP_RSS_IPV4_AH_ESP | + VIRTCHNL2_CAP_RSS_IPV6_AH | + VIRTCHNL2_CAP_RSS_IPV6_ESP | + VIRTCHNL2_CAP_RSS_IPV6_AH_ESP, + + .other_caps = VIRTCHNL2_CAP_WB_ON_ITR | + VIRTCHNL2_CAP_PTP +}; + static int cpfl_adapter_ext_init(struct rte_pci_device *pci_dev, struct cpfl_adapter_ext *adapter) { @@ -1229,6 +1268,8 @@ cpfl_adapter_ext_init(struct rte_pci_device *pci_dev, struct cpfl_adapter_ext *a goto err_reset_check; } + rte_memcpy(&base->caps, &req_caps, sizeof(struct virtchnl2_get_capabilities)); + ret = idpf_adapter_init(base); if (ret != 0) { PMD_INIT_LOG(ERR, "Failed to init adapter"); diff --git a/drivers/net/idpf/idpf_ethdev.c b/drivers/net/idpf/idpf_ethdev.c index 662a8a806a..18c152b598 100644 --- a/drivers/net/idpf/idpf_ethdev.c +++ b/drivers/net/idpf/idpf_ethdev.c @@ -1163,6 +1163,44 @@ static struct idpf_ctlq_create_info idpf_ctlq_info[IDPF_CTLQ_NUM] = { } }; +static struct virtchnl2_get_capabilities req_caps = { + .csum_caps = + VIRTCHNL2_CAP_TX_CSUM_L3_IPV4 | + VIRTCHNL2_CAP_TX_CSUM_L4_IPV4_TCP | + VIRTCHNL2_CAP_TX_CSUM_L4_IPV4_UDP | + VIRTCHNL2_CAP_TX_CSUM_L4_IPV4_SCTP | + VIRTCHNL2_CAP_TX_CSUM_L4_IPV6_TCP | + VIRTCHNL2_CAP_TX_CSUM_L4_IPV6_UDP | + VIRTCHNL2_CAP_TX_CSUM_L4_IPV6_SCTP | + VIRTCHNL2_CAP_TX_CSUM_GENERIC | + VIRTCHNL2_CAP_RX_CSUM_L3_IPV4 | + VIRTCHNL2_CAP_RX_CSUM_L4_IPV4_TCP | + VIRTCHNL2_CAP_RX_CSUM_L4_IPV4_UDP | + VIRTCHNL2_CAP_RX_CSUM_L4_IPV4_SCTP | + VIRTCHNL2_CAP_RX_CSUM_L4_IPV6_TCP | + VIRTCHNL2_CAP_RX_CSUM_L4_IPV6_UDP | + VIRTCHNL2_CAP_RX_CSUM_L4_IPV6_SCTP | + VIRTCHNL2_CAP_RX_CSUM_GENERIC, + + .rss_caps = + VIRTCHNL2_CAP_RSS_IPV4_TCP | + VIRTCHNL2_CAP_RSS_IPV4_UDP | + VIRTCHNL2_CAP_RSS_IPV4_SCTP | + VIRTCHNL2_CAP_RSS_IPV4_OTHER | + VIRTCHNL2_CAP_RSS_IPV6_TCP | + VIRTCHNL2_CAP_RSS_IPV6_UDP | + VIRTCHNL2_CAP_RSS_IPV6_SCTP | + VIRTCHNL2_CAP_RSS_IPV6_OTHER | + VIRTCHNL2_CAP_RSS_IPV4_AH | + VIRTCHNL2_CAP_RSS_IPV4_ESP | + VIRTCHNL2_CAP_RSS_IPV4_AH_ESP | + VIRTCHNL2_CAP_RSS_IPV6_AH | + VIRTCHNL2_CAP_RSS_IPV6_ESP | + VIRTCHNL2_CAP_RSS_IPV6_AH_ESP, + + .other_caps = VIRTCHNL2_CAP_WB_ON_ITR +}; + static int idpf_adapter_ext_init(struct rte_pci_device *pci_dev, struct idpf_adapter_ext *adapter) { @@ -1192,6 +1230,8 @@ idpf_adapter_ext_init(struct rte_pci_device *pci_dev, struct idpf_adapter_ext *a goto err_reset_check; } + rte_memcpy(&base->caps, &req_caps, sizeof(struct virtchnl2_get_capabilities)); + ret = idpf_adapter_init(base); if (ret != 0) { PMD_INIT_LOG(ERR, "Failed to init adapter");