From patchwork Mon Jun 5 06:17: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: 128078 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 2B44C42C31; Mon, 5 Jun 2023 08:42:32 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 562BD42D2C; Mon, 5 Jun 2023 08:42:21 +0200 (CEST) Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31]) by mails.dpdk.org (Postfix) with ESMTP id AC6514003C for ; Mon, 5 Jun 2023 08:42:18 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1685947338; x=1717483338; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=82N8O95wtbEHqZYor1Qdr1XbDZ5VBYUiACvRUiM8voI=; b=h4daiBl+/LVGU1JY4jBB7smFcmSC2RJY7BmynZmCmv0Ejs4EZ3bFzmVI pzGzCPf7mQEcCcwzcBZzB9ezNwDueN8bWpMojzxq5KkD62yUwD81Cs4ST 31pqMqBRTQOKmixIQt6H8S5Jf1ARe7D2zBxe9gf3WjfrOOsN9mNeAhE1i 39Rr7ohSnFkVVfRhz2nnrIICRcYvUjh4iDP+YtHnf7AWIYGowVPskWGhr 45fGFLUVi13f75Zp+ajmSApTXL10WIoFRdncS1m/UPK1f+FawXUCJMLBZ 6tRK1PU59bXLWaN73SSV6O2SdnlkCGpL6V373pjLQ2MS6mAvFZngJNelZ A==; X-IronPort-AV: E=McAfee;i="6600,9927,10731"; a="419839620" X-IronPort-AV: E=Sophos;i="6.00,217,1681196400"; d="scan'208";a="419839620" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Jun 2023 23:42:18 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10731"; a="798301024" X-IronPort-AV: E=Sophos;i="6.00,217,1681196400"; d="scan'208";a="798301024" Received: from dpdk-beileix-3.sh.intel.com ([10.67.110.253]) by FMSMGA003.fm.intel.com with ESMTP; 04 Jun 2023 23:42:16 -0700 From: beilei.xing@intel.com To: jingjing.wu@intel.com Cc: dev@dpdk.org, mingxia.liu@intel.com, Beilei Xing Subject: [PATCH v8 02/14] common/idpf: support queue groups add/delete Date: Mon, 5 Jun 2023 06:17:12 +0000 Message-Id: <20230605061724.88130-3-beilei.xing@intel.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20230605061724.88130-1-beilei.xing@intel.com> References: <20230531130450.26380-1-beilei.xing@intel.com> <20230605061724.88130-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 This patch adds queue group add/delete virtual channel support. Signed-off-by: Mingxia Liu Signed-off-by: Beilei Xing --- drivers/common/idpf/idpf_common_virtchnl.c | 66 ++++++++++++++++++++++ drivers/common/idpf/idpf_common_virtchnl.h | 9 +++ drivers/common/idpf/version.map | 2 + 3 files changed, 77 insertions(+) diff --git a/drivers/common/idpf/idpf_common_virtchnl.c b/drivers/common/idpf/idpf_common_virtchnl.c index b713678634..a3fe55c897 100644 --- a/drivers/common/idpf/idpf_common_virtchnl.c +++ b/drivers/common/idpf/idpf_common_virtchnl.c @@ -359,6 +359,72 @@ idpf_vc_vport_destroy(struct idpf_vport *vport) return err; } +int +idpf_vc_queue_grps_add(struct idpf_vport *vport, + struct virtchnl2_add_queue_groups *p2p_queue_grps_info, + uint8_t *p2p_queue_grps_out) +{ + struct idpf_adapter *adapter = vport->adapter; + struct idpf_cmd_info args; + int size, qg_info_size; + int err = -1; + + size = sizeof(*p2p_queue_grps_info) + + (p2p_queue_grps_info->qg_info.num_queue_groups - 1) * + sizeof(struct virtchnl2_queue_group_info); + + memset(&args, 0, sizeof(args)); + args.ops = VIRTCHNL2_OP_ADD_QUEUE_GROUPS; + args.in_args = (uint8_t *)p2p_queue_grps_info; + args.in_args_size = size; + args.out_buffer = adapter->mbx_resp; + args.out_size = IDPF_DFLT_MBX_BUF_SIZE; + + err = idpf_vc_cmd_execute(adapter, &args); + if (err != 0) { + DRV_LOG(ERR, + "Failed to execute command of VIRTCHNL2_OP_ADD_QUEUE_GROUPS"); + return err; + } + + rte_memcpy(p2p_queue_grps_out, args.out_buffer, IDPF_DFLT_MBX_BUF_SIZE); + return 0; +} + +int idpf_vc_queue_grps_del(struct idpf_vport *vport, + uint16_t num_q_grps, + struct virtchnl2_queue_group_id *qg_ids) +{ + struct idpf_adapter *adapter = vport->adapter; + struct virtchnl2_delete_queue_groups *vc_del_q_grps; + struct idpf_cmd_info args; + int size; + int err; + + size = sizeof(*vc_del_q_grps) + + (num_q_grps - 1) * sizeof(struct virtchnl2_queue_group_id); + vc_del_q_grps = rte_zmalloc("vc_del_q_grps", size, 0); + + vc_del_q_grps->vport_id = vport->vport_id; + vc_del_q_grps->num_queue_groups = num_q_grps; + memcpy(vc_del_q_grps->qg_ids, qg_ids, + num_q_grps * sizeof(struct virtchnl2_queue_group_id)); + + memset(&args, 0, sizeof(args)); + args.ops = VIRTCHNL2_OP_DEL_QUEUE_GROUPS; + args.in_args = (uint8_t *)vc_del_q_grps; + args.in_args_size = size; + args.out_buffer = adapter->mbx_resp; + args.out_size = IDPF_DFLT_MBX_BUF_SIZE; + + err = idpf_vc_cmd_execute(adapter, &args); + if (err != 0) + DRV_LOG(ERR, "Failed to execute command of VIRTCHNL2_OP_DEL_QUEUE_GROUPS"); + + rte_free(vc_del_q_grps); + return err; +} + int idpf_vc_rss_key_set(struct idpf_vport *vport) { diff --git a/drivers/common/idpf/idpf_common_virtchnl.h b/drivers/common/idpf/idpf_common_virtchnl.h index c45295290e..58b16e1c5d 100644 --- a/drivers/common/idpf/idpf_common_virtchnl.h +++ b/drivers/common/idpf/idpf_common_virtchnl.h @@ -64,4 +64,13 @@ int idpf_vc_ctlq_recv(struct idpf_ctlq_info *cq, u16 *num_q_msg, __rte_internal int idpf_vc_ctlq_post_rx_buffs(struct idpf_hw *hw, struct idpf_ctlq_info *cq, u16 *buff_count, struct idpf_dma_mem **buffs); +__rte_internal +int idpf_vc_queue_grps_del(struct idpf_vport *vport, + uint16_t num_q_grps, + struct virtchnl2_queue_group_id *qg_ids); +__rte_internal +int +idpf_vc_queue_grps_add(struct idpf_vport *vport, + struct virtchnl2_add_queue_groups *ptp_queue_grps_info, + uint8_t *ptp_queue_grps_out); #endif /* _IDPF_COMMON_VIRTCHNL_H_ */ diff --git a/drivers/common/idpf/version.map b/drivers/common/idpf/version.map index 70334a1b03..01d18f3f3f 100644 --- a/drivers/common/idpf/version.map +++ b/drivers/common/idpf/version.map @@ -43,6 +43,8 @@ INTERNAL { idpf_vc_irq_map_unmap_config; idpf_vc_one_msg_read; idpf_vc_ptype_info_query; + idpf_vc_queue_grps_add; + idpf_vc_queue_grps_del; idpf_vc_queue_switch; idpf_vc_queues_ena_dis; idpf_vc_rss_hash_get;