From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 1F95E45955; Tue, 10 Sep 2024 13:10:10 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 90A0B42E5A; Tue, 10 Sep 2024 13:09:44 +0200 (CEST) Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.11]) by mails.dpdk.org (Postfix) with ESMTP id 9437942E6C for ; Tue, 10 Sep 2024 13:09:42 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1725966583; x=1757502583; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=WQErbASxRiTznT01V1DN9P9rZsaClA9z3AsZthyG/iU=; b=gz/58jlfnu+QnZUWH+kb81PiQwId3mJD+nEQHGP6pmjZCB23xumXS4ZI ZFwTzIAxZWYTWjQMsbv30MjBdihG+DJt8TSoB1N3Nu9UpIqOY/ua884+i ONLFoKRLXfRmesy0Sv0M3g01Hlic030o6hBgwxxWb+hZjgDDx+sk8RZ3+ uNvhpCOzGltMTmAP1vkPAU28Ihd+zKl3qzFKJpyD9fX8QT0YFQED8zmj4 iYU4hpci026nr2ilhPXxuLanB2e2UEwQTIcddUlzOtMtcxiqgj8OSHGwg TWK9NOXWBQCSwxdNZhj5puF1eHEG1t8G/stWFPDOXXIO25Fop5X/cSxny g==; X-CSE-ConnectionGUID: 6A0/91sCSMKAe+6XDphQNQ== X-CSE-MsgGUID: hg85arMcR8WIYfmM9BLprg== X-IronPort-AV: E=McAfee;i="6700,10204,11190"; a="35276922" X-IronPort-AV: E=Sophos;i="6.10,217,1719903600"; d="scan'208";a="35276922" Received: from orviesa004.jf.intel.com ([10.64.159.144]) by orvoesa103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Sep 2024 04:09:42 -0700 X-CSE-ConnectionGUID: LtH0OwORT1aoNwRZKt88LQ== X-CSE-MsgGUID: tskJQaq+SDSlOcdEk109gg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.10,217,1719903600"; d="scan'208";a="71969846" Received: from unknown (HELO npf-hyd-clx-03..) ([10.145.170.182]) by orviesa004.jf.intel.com with ESMTP; 10 Sep 2024 04:09:40 -0700 From: Soumyadeep Hore To: bruce.richardson@intel.com, aman.deep.singh@intel.com Cc: dev@dpdk.org, shaiq.wani@intel.com, Lukasz Plachno Subject: [PATCH v1 5/9] common/iavf: add commands for HQOS management Date: Tue, 10 Sep 2024 10:12:20 +0000 Message-ID: <20240910101224.497044-6-soumyadeep.hore@intel.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240910101224.497044-1-soumyadeep.hore@intel.com> References: <20240910101224.497044-1-soumyadeep.hore@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 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: Lukasz Plachno Add VIRTCHNL operations for managing scheduling nodes for VSI subtree. E822/E830 adapters allows VNet based scheduling tree configuration. Management of scheduling nodes up to VSIs is done by devlink interface. Signed-off-by: Lukasz Plachno Signed-off-by: Soumyadeep Hore --- drivers/common/iavf/virtchnl.h | 66 ++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/drivers/common/iavf/virtchnl.h b/drivers/common/iavf/virtchnl.h index a4f3d7724f..ae6770adaf 100644 --- a/drivers/common/iavf/virtchnl.h +++ b/drivers/common/iavf/virtchnl.h @@ -189,6 +189,11 @@ enum virtchnl_ops { VIRTCHNL_OP_SYNCE_GET_HW_INFO = 128, VIRTCHNL_OP_GNSS_READ_I2C = 129, VIRTCHNL_OP_GNSS_WRITE_I2C = 130, + VIRTCHNL_OP_HQOS_TREE_READ = 131, + VIRTCHNL_OP_HQOS_ELEMS_ADD = 132, + VIRTCHNL_OP_HQOS_ELEMS_DEL = 133, + VIRTCHNL_OP_HQOS_ELEMS_MOVE = 134, + VIRTCHNL_OP_HQOS_ELEMS_CONF = 135, VIRTCHNL_OP_MAX, }; @@ -345,6 +350,16 @@ static inline const char *virtchnl_op_str(enum virtchnl_ops v_opcode) return "VIRTCHNL_OP_FLOW_SUBSCRIBE"; case VIRTCHNL_OP_FLOW_UNSUBSCRIBE: return "VIRTCHNL_OP_FLOW_UNSUBSCRIBE"; + case VIRTCHNL_OP_HQOS_TREE_READ: + return "VIRTCHNL_OP_HQOS_TREE_READ"; + case VIRTCHNL_OP_HQOS_ELEMS_ADD: + return "VIRTCHNL_OP_HQOS_ELEMS_ADD"; + case VIRTCHNL_OP_HQOS_ELEMS_DEL: + return "VIRTCHNL_OP_HQOS_ELEMS_DEL"; + case VIRTCHNL_OP_HQOS_ELEMS_MOVE: + return "VIRTCHNL_OP_HQOS_ELEMS_MOVE"; + case VIRTCHNL_OP_HQOS_ELEMS_CONF: + return "VIRTCHNL_OP_HQOS_ELEMS_CONF"; case VIRTCHNL_OP_MAX: return "VIRTCHNL_OP_MAX"; default: @@ -2508,6 +2523,34 @@ struct virtchnl_gnss_read_i2c_resp { VIRTCHNL_CHECK_STRUCT_LEN(16, virtchnl_gnss_read_i2c_resp); +/* + * VIRTCHNL_OP_HQOS_READ_TREE + * VIRTCHNL_OP_HQOS_ELEM_ADD + * VIRTCHNL_OP_HQOS_ELEM_DEL + * VIRTCHNL_OP_HQOS_ELEM_BW_SET + * List with tc and queues HW QoS values + */ +struct virtchnl_hqos_cfg { +#define VIRTCHNL_HQOS_ELEM_TYPE_NODE 0 +#define VIRTCHNL_HQOS_ELEM_TYPE_LEAF 1 + u8 node_type; + u8 pad[7]; + u32 teid; + u32 parent_teid; + u64 tx_max; + u64 tx_share; + u32 tx_priority; + u32 tx_weight; +}; +VIRTCHNL_CHECK_STRUCT_LEN(40, virtchnl_hqos_cfg); + +struct virtchnl_hqos_cfg_list { + u16 num_elem; + u8 pad[6]; + struct virtchnl_hqos_cfg cfg[1]; +}; +VIRTCHNL_CHECK_STRUCT_LEN(48, virtchnl_hqos_cfg_list); + /* Since VF messages are limited by u16 size, precalculate the maximum possible * values of nested elements in virtchnl structures that virtual channel can * possibly handle in a single message. @@ -2545,6 +2588,10 @@ enum virtchnl_vector_limits { VIRTCHNL_OP_ADD_DEL_VLAN_V2_MAX = ((u16)(~0) - sizeof(struct virtchnl_vlan_filter_list_v2)) / sizeof(struct virtchnl_vlan_filter), + + VIRTCHNL_OP_HQOS_ELEMS_MAX = + ((u16)(~0) - sizeof(struct virtchnl_hqos_cfg_list)) / + sizeof(struct virtchnl_hqos_cfg), }; /** @@ -2928,6 +2975,25 @@ virtchnl_vc_validate_vf_msg(struct virtchnl_version_info *ver, u32 v_opcode, virtchnl_inline_ipsec_val_msg_len(iim->ipsec_opcode); break; } + case VIRTCHNL_OP_HQOS_ELEMS_ADD: + case VIRTCHNL_OP_HQOS_ELEMS_DEL: + case VIRTCHNL_OP_HQOS_ELEMS_MOVE: + case VIRTCHNL_OP_HQOS_ELEMS_CONF: + valid_len = sizeof(struct virtchnl_hqos_cfg_list); + if (msglen >= valid_len) { + struct virtchnl_hqos_cfg_list *v_hcl = + (struct virtchnl_hqos_cfg_list *)msg; + if (v_hcl->num_elem == 0 || + v_hcl->num_elem > VIRTCHNL_OP_HQOS_ELEMS_MAX) { + err_msg_format = true; + break; + } + valid_len += (v_hcl->num_elem - 1) * + sizeof(struct virtchnl_hqos_cfg); + } + break; + case VIRTCHNL_OP_HQOS_TREE_READ: + break; /* These are always errors coming from the VF. */ case VIRTCHNL_OP_EVENT: case VIRTCHNL_OP_UNKNOWN: -- 2.34.1