From: Simei Su <simei.su@intel.com>
To: jingjing.wu@intel.com, beilei.xing@intel.com, qi.z.zhang@intel.com
Cc: dev@dpdk.org, wenjun1.wu@intel.com, mingxia.liu@intel.com,
wenjing.qiao@intel.com, Simei Su <simei.su@intel.com>,
Shailendra Bhatnagar <shailendra.bhatnagar@intel.com>,
Julianx Grajkowski <julianx.grajkowski@intel.com>
Subject: [PATCH v5 06/11] common/idpf/base: refine structure and necessary check
Date: Wed, 20 Sep 2023 14:22:31 +0800 [thread overview]
Message-ID: <20230920062236.375308-7-simei.su@intel.com> (raw)
In-Reply-To: <20230920062236.375308-1-simei.su@intel.com>
a) Refine queue chunk and vector chunk structures.
b) Add non_flex prefix to distinguish the flex array definitions.
c) Add some specific fields.
d) Refine condition check.
Signed-off-by: Shailendra Bhatnagar <shailendra.bhatnagar@intel.com>
Signed-off-by: Julianx Grajkowski <julianx.grajkowski@intel.com>
Signed-off-by: Simei Su <simei.su@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
---
.mailmap | 2 +
drivers/common/idpf/base/idpf_common.c | 6 ++-
drivers/common/idpf/base/virtchnl2.h | 72 +++++++++++++++++---------
3 files changed, 54 insertions(+), 26 deletions(-)
diff --git a/.mailmap b/.mailmap
index d8782cd67e..23aed53102 100644
--- a/.mailmap
+++ b/.mailmap
@@ -1643,3 +1643,5 @@ Jayaprakash Shanmugam <jayaprakash.shanmugam@intel.com>
Zhenning Xiao <zhenning.xiao@intel.com>
Josh Hay <joshua.a.hay@intel.com>
Madhu Chittim <madhu.chittim@intel.com>
+Shailendra Bhatnagar <shailendra.bhatnagar@intel.com>
+Julianx Grajkowski <julianx.grajkowski@intel.com>
diff --git a/drivers/common/idpf/base/idpf_common.c b/drivers/common/idpf/base/idpf_common.c
index fbf71416fd..9610916aa9 100644
--- a/drivers/common/idpf/base/idpf_common.c
+++ b/drivers/common/idpf/base/idpf_common.c
@@ -239,8 +239,10 @@ int idpf_clean_arq_element(struct idpf_hw *hw,
e->desc.ret_val = msg.status;
e->desc.datalen = msg.data_len;
if (msg.data_len > 0) {
- if (!msg.ctx.indirect.payload)
- return -EINVAL;
+ if (!msg.ctx.indirect.payload || !msg.ctx.indirect.payload->va ||
+ !e->msg_buf) {
+ return -EFAULT;
+ }
e->buf_len = msg.data_len;
msg_data_len = msg.data_len;
idpf_memcpy(e->msg_buf, msg.ctx.indirect.payload->va, msg_data_len,
diff --git a/drivers/common/idpf/base/virtchnl2.h b/drivers/common/idpf/base/virtchnl2.h
index 320430df6f..3900b784d0 100644
--- a/drivers/common/idpf/base/virtchnl2.h
+++ b/drivers/common/idpf/base/virtchnl2.h
@@ -89,8 +89,8 @@
* VIRTCHNL2_OP_GET_PTYPE_INFO_RAW
*/
/* opcodes 529, 530, and 531 are reserved */
-#define VIRTCHNL2_OP_CREATE_ADI 532
-#define VIRTCHNL2_OP_DESTROY_ADI 533
+#define VIRTCHNL2_OP_NON_FLEX_CREATE_ADI 532
+#define VIRTCHNL2_OP_NON_FLEX_DESTROY_ADI 533
#define VIRTCHNL2_OP_LOOPBACK 534
#define VIRTCHNL2_OP_ADD_MAC_ADDR 535
#define VIRTCHNL2_OP_DEL_MAC_ADDR 536
@@ -294,6 +294,7 @@
/* These messages are only sent to PF from CP */
#define VIRTCHNL2_EVENT_START_RESET_ADI 2
#define VIRTCHNL2_EVENT_FINISH_RESET_ADI 3
+#define VIRTCHNL2_EVENT_ADI_ACTIVE 4
/* VIRTCHNL2_QUEUE_TYPE
* Transmit and Receive queue types are valid in legacy as well as split queue
@@ -547,7 +548,8 @@ struct virtchnl2_get_capabilities {
u8 max_sg_bufs_per_tx_pkt;
u8 reserved1;
- __le16 pad1;
+ /* upper bound of number of ADIs supported */
+ __le16 max_adis;
/* version of Control Plane that is running */
__le16 oem_cp_ver_major;
@@ -1059,14 +1061,34 @@ struct virtchnl2_sriov_vfs_info {
VIRTCHNL2_CHECK_STRUCT_LEN(4, virtchnl2_sriov_vfs_info);
-/* VIRTCHNL2_OP_CREATE_ADI
+/* structure to specify single chunk of queue */
+/* 'chunks' is fixed size(not flexible) and will be deprecated at some point */
+struct virtchnl2_non_flex_queue_reg_chunks {
+ __le16 num_chunks;
+ u8 reserved[6];
+ struct virtchnl2_queue_reg_chunk chunks[1];
+};
+
+VIRTCHNL2_CHECK_STRUCT_LEN(40, virtchnl2_non_flex_queue_reg_chunks);
+
+/* structure to specify single chunk of interrupt vector */
+/* 'vchunks' is fixed size(not flexible) and will be deprecated at some point */
+struct virtchnl2_non_flex_vector_chunks {
+ __le16 num_vchunks;
+ u8 reserved[14];
+ struct virtchnl2_vector_chunk vchunks[1];
+};
+
+VIRTCHNL2_CHECK_STRUCT_LEN(48, virtchnl2_non_flex_vector_chunks);
+
+/* VIRTCHNL2_OP_NON_FLEX_CREATE_ADI
* PF sends this message to CP to create ADI by filling in required
- * fields of virtchnl2_create_adi structure.
- * CP responds with the updated virtchnl2_create_adi structure containing the
- * necessary fields followed by chunks which in turn will have an array of
+ * fields of virtchnl2_non_flex_create_adi structure.
+ * CP responds with the updated virtchnl2_non_flex_create_adi structure containing
+ * the necessary fields followed by chunks which in turn will have an array of
* num_chunks entries of virtchnl2_queue_chunk structures.
*/
-struct virtchnl2_create_adi {
+struct virtchnl2_non_flex_create_adi {
/* PF sends PASID to CP */
__le32 pasid;
/*
@@ -1076,29 +1098,31 @@ struct virtchnl2_create_adi {
__le16 mbx_id;
/* PF sends mailbox vector id to CP */
__le16 mbx_vec_id;
+ /* PF populates this ADI index */
+ __le16 adi_index;
/* CP populates ADI id */
__le16 adi_id;
u8 reserved[64];
- u8 pad[6];
+ u8 pad[4];
/* CP populates queue chunks */
- struct virtchnl2_queue_reg_chunks chunks;
+ struct virtchnl2_non_flex_queue_reg_chunks chunks;
/* PF sends vector chunks to CP */
- struct virtchnl2_vector_chunks vchunks;
+ struct virtchnl2_non_flex_vector_chunks vchunks;
};
-VIRTCHNL2_CHECK_STRUCT_LEN(168, virtchnl2_create_adi);
+VIRTCHNL2_CHECK_STRUCT_LEN(168, virtchnl2_non_flex_create_adi);
/* VIRTCHNL2_OP_DESTROY_ADI
* PF sends this message to CP to destroy ADI by filling
* in the adi_id in virtchnl2_destropy_adi structure.
* CP responds with the status of the requested operation.
*/
-struct virtchnl2_destroy_adi {
+struct virtchnl2_non_flex_destroy_adi {
__le16 adi_id;
u8 reserved[2];
};
-VIRTCHNL2_CHECK_STRUCT_LEN(4, virtchnl2_destroy_adi);
+VIRTCHNL2_CHECK_STRUCT_LEN(4, virtchnl2_non_flex_destroy_adi);
/* Based on the descriptor type the PF supports, CP fills ptype_id_10 or
* ptype_id_8 for flex and base descriptor respectively. If ptype_id_10 value
@@ -1562,10 +1586,10 @@ static inline const char *virtchnl2_op_str(__le32 v_opcode)
return "VIRTCHNL2_OP_EVENT";
case VIRTCHNL2_OP_RESET_VF:
return "VIRTCHNL2_OP_RESET_VF";
- case VIRTCHNL2_OP_CREATE_ADI:
- return "VIRTCHNL2_OP_CREATE_ADI";
- case VIRTCHNL2_OP_DESTROY_ADI:
- return "VIRTCHNL2_OP_DESTROY_ADI";
+ case VIRTCHNL2_OP_NON_FLEX_CREATE_ADI:
+ return "VIRTCHNL2_OP_NON_FLEX_CREATE_ADI";
+ case VIRTCHNL2_OP_NON_FLEX_DESTROY_ADI:
+ return "VIRTCHNL2_OP_NON_FLEX_DESTROY_ADI";
case VIRTCHNL2_OP_ADD_QUEUE_GROUPS:
return "VIRTCHNL2_OP_ADD_QUEUE_GROUPS";
case VIRTCHNL2_OP_DEL_QUEUE_GROUPS:
@@ -1620,11 +1644,11 @@ virtchnl2_vc_validate_vf_msg(__rte_unused struct virtchnl2_version_info *ver, u3
sizeof(struct virtchnl2_queue_reg_chunk);
}
break;
- case VIRTCHNL2_OP_CREATE_ADI:
- valid_len = sizeof(struct virtchnl2_create_adi);
+ case VIRTCHNL2_OP_NON_FLEX_CREATE_ADI:
+ valid_len = sizeof(struct virtchnl2_non_flex_create_adi);
if (msglen >= valid_len) {
- struct virtchnl2_create_adi *cadi =
- (struct virtchnl2_create_adi *)msg;
+ struct virtchnl2_non_flex_create_adi *cadi =
+ (struct virtchnl2_non_flex_create_adi *)msg;
if (cadi->chunks.num_chunks == 0) {
/* zero chunks is allowed as input */
@@ -1641,8 +1665,8 @@ virtchnl2_vc_validate_vf_msg(__rte_unused struct virtchnl2_version_info *ver, u3
sizeof(struct virtchnl2_vector_chunk);
}
break;
- case VIRTCHNL2_OP_DESTROY_ADI:
- valid_len = sizeof(struct virtchnl2_destroy_adi);
+ case VIRTCHNL2_OP_NON_FLEX_DESTROY_ADI:
+ valid_len = sizeof(struct virtchnl2_non_flex_destroy_adi);
break;
case VIRTCHNL2_OP_DESTROY_VPORT:
case VIRTCHNL2_OP_ENABLE_VPORT:
--
2.25.1
next prev parent reply other threads:[~2023-09-20 6:22 UTC|newest]
Thread overview: 85+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-09 1:32 [PATCH 00/14] update idpf base code Wenjing Qiao
2023-08-09 1:32 ` [PATCH 01/14] common/idpf/base: enable support for physical port stats Wenjing Qiao
2023-08-09 1:32 ` [PATCH 02/14] common/idpf/base: add miss completion capabilities Wenjing Qiao
2023-08-09 1:32 ` [PATCH 03/14] common/idpf/base: initial PTP support Wenjing Qiao
2023-08-09 2:22 ` Liu, Mingxia
2023-08-09 1:32 ` [PATCH 04/14] common/idpf/base: remove mailbox registers Wenjing Qiao
2023-08-09 1:32 ` [PATCH 05/14] common/idpf/base: add some adi specific fields Wenjing Qiao
2023-08-09 1:33 ` [PATCH 06/14] common/idpf/base: add necessary check Wenjing Qiao
2023-08-09 1:33 ` [PATCH 07/14] common/idpf/base: add union for SW cookie fields in ctlq msg Wenjing Qiao
2023-08-09 1:33 ` [PATCH 08/14] common/idpf/base: define non-flexible size structure for ADI Wenjing Qiao
2023-08-09 1:33 ` [PATCH 09/14] common/idpf/base: use local pointer before updating 'CQ out' Wenjing Qiao
2023-08-09 1:33 ` [PATCH 10/14] common/idpf/base: use 'void' return type Wenjing Qiao
2023-08-09 1:33 ` [PATCH 11/14] common/idpf/base: refactor descriptor 'ret val' stripping Wenjing Qiao
2023-08-09 1:33 ` [PATCH 12/14] common/idpf/base: refine comments and alignment Wenjing Qiao
2023-08-09 1:33 ` [PATCH 13/14] common/idpf/base: use GENMASK macro Wenjing Qiao
2023-08-09 1:33 ` [PATCH 14/14] common/idpf/base: use 'type functionname(args)' style Wenjing Qiao
2023-08-25 10:13 ` [PATCH v2 00/17] update idpf base code Simei Su
2023-08-25 10:13 ` [PATCH v2 01/17] common/idpf/base: enable support for physical port stats Simei Su
2023-08-25 10:13 ` [PATCH v2 02/17] common/idpf/base: add miss completion capabilities Simei Su
2023-08-25 10:13 ` [PATCH v2 03/17] common/idpf/base: initial PTP support Simei Su
2023-08-25 10:13 ` [PATCH v2 04/17] common/idpf/base: remove mailbox registers Simei Su
2023-08-25 10:13 ` [PATCH v2 05/17] common/idpf/base: add some adi specific fields Simei Su
2023-08-25 10:13 ` [PATCH v2 06/17] common/idpf/base: add necessary check Simei Su
2023-08-25 10:13 ` [PATCH v2 07/17] common/idpf/base: add union for SW cookie fields in ctlq msg Simei Su
2023-08-25 10:13 ` [PATCH v2 08/17] common/idpf/base: define non-flexible size structure for ADI Simei Su
2023-08-25 10:13 ` [PATCH v2 09/17] common/idpf/base: use local pointer before updating 'CQ out' Simei Su
2023-08-25 10:13 ` [PATCH v2 10/17] common/idpf/base: use 'void' return type Simei Su
2023-08-25 10:13 ` [PATCH v2 11/17] common/idpf/base: refactor descriptor 'ret val' stripping Simei Su
2023-08-25 10:13 ` [PATCH v2 12/17] common/idpf/base: refine comments and alignment Simei Su
2023-08-25 10:13 ` [PATCH v2 13/17] common/idpf/base: use GENMASK macro Simei Su
2023-08-25 10:13 ` [PATCH v2 14/17] common/idpf/base: use 'type functionname(args)' style Simei Su
2023-08-25 10:13 ` [PATCH v2 15/17] common/idpf/base: dont declare union with 'flex' Simei Su
2023-08-25 10:13 ` [PATCH v2 16/17] common/idpf/base: remove unused Tx descriptor types Simei Su
2023-08-25 10:13 ` [PATCH v2 17/17] common/idpf/base: update version Simei Su
2023-09-15 2:17 ` [PATCH v3 00/17] update idpf base code Simei Su
2023-09-15 2:17 ` [PATCH v3 01/17] common/idpf/base: enable support for physical port stats Simei Su
2023-09-15 2:17 ` [PATCH v3 02/17] common/idpf/base: add miss completion capabilities Simei Su
2023-09-15 2:17 ` [PATCH v3 03/17] common/idpf/base: initial PTP support Simei Su
2023-09-15 2:17 ` [PATCH v3 04/17] common/idpf/base: remove mailbox registers Simei Su
2023-09-15 2:17 ` [PATCH v3 05/17] common/idpf/base: add some adi specific fields Simei Su
2023-09-15 2:17 ` [PATCH v3 06/17] common/idpf/base: add necessary check Simei Su
2023-09-15 2:17 ` [PATCH v3 07/17] common/idpf/base: add union for SW cookie fields in ctlq msg Simei Su
2023-09-15 2:17 ` [PATCH v3 08/17] common/idpf/base: define non-flexible size structure for ADI Simei Su
2023-09-15 2:17 ` [PATCH v3 09/17] common/idpf/base: use local pointer before updating 'CQ out' Simei Su
2023-09-15 2:17 ` [PATCH v3 10/17] common/idpf/base: use 'void' return type Simei Su
2023-09-15 2:17 ` [PATCH v3 11/17] common/idpf/base: refactor descriptor 'ret val' stripping Simei Su
2023-09-15 2:17 ` [PATCH v3 12/17] common/idpf/base: refine comments and alignment Simei Su
2023-09-15 2:17 ` [PATCH v3 13/17] common/idpf/base: use GENMASK macro Simei Su
2023-09-15 2:17 ` [PATCH v3 14/17] common/idpf/base: use 'type functionname(args)' style Simei Su
2023-09-15 2:17 ` [PATCH v3 15/17] common/idpf/base: don't declare union with 'flex' Simei Su
2023-09-15 2:17 ` [PATCH v3 16/17] common/idpf/base: remove unused Tx descriptor types Simei Su
2023-09-15 2:17 ` [PATCH v3 17/17] common/idpf/base: update version Simei Su
2023-09-15 5:44 ` [PATCH v3 00/17] update idpf base code Xing, Beilei
2023-09-18 2:11 ` [PATCH v4 00/18] " Simei Su
2023-09-18 2:11 ` [PATCH v4 01/18] common/idpf: refactor single queue Tx data path Simei Su
2023-09-18 2:11 ` [PATCH v4 02/18] common/idpf/base: enable support for physical port stats Simei Su
2023-09-18 2:11 ` [PATCH v4 03/18] common/idpf/base: add miss completion capabilities Simei Su
2023-09-18 2:11 ` [PATCH v4 04/18] common/idpf/base: initial PTP support Simei Su
2023-09-18 2:11 ` [PATCH v4 05/18] common/idpf/base: remove mailbox registers Simei Su
2023-09-18 2:11 ` [PATCH v4 06/18] common/idpf/base: add some adi specific fields Simei Su
2023-09-18 2:11 ` [PATCH v4 07/18] common/idpf/base: add necessary check Simei Su
2023-09-18 2:11 ` [PATCH v4 08/18] common/idpf/base: add union for SW cookie fields in ctlq msg Simei Su
2023-09-18 2:11 ` [PATCH v4 09/18] common/idpf/base: define non-flexible size structure for ADI Simei Su
2023-09-18 2:11 ` [PATCH v4 10/18] common/idpf/base: use local pointer before updating 'CQ out' Simei Su
2023-09-18 2:11 ` [PATCH v4 11/18] common/idpf/base: use 'void' return type Simei Su
2023-09-18 2:11 ` [PATCH v4 12/18] common/idpf/base: refactor descriptor 'ret val' stripping Simei Su
2023-09-18 2:11 ` [PATCH v4 13/18] common/idpf/base: refine comments and alignment Simei Su
2023-09-18 2:11 ` [PATCH v4 14/18] common/idpf/base: use GENMASK macro Simei Su
2023-09-18 2:11 ` [PATCH v4 15/18] common/idpf/base: use 'type functionname(args)' style Simei Su
2023-09-18 2:11 ` [PATCH v4 16/18] common/idpf/base: don't declare union with 'flex' Simei Su
2023-09-18 2:11 ` [PATCH v4 17/18] common/idpf/base: remove unused Tx descriptor types Simei Su
2023-09-18 2:11 ` [PATCH v4 18/18] common/idpf/base: update version Simei Su
2023-09-20 6:22 ` [PATCH v5 00/11] update idpf base code Simei Su
2023-09-20 6:22 ` [PATCH v5 01/11] common/idpf: refactor single queue Tx data path Simei Su
2023-09-20 6:22 ` [PATCH v5 02/11] common/idpf/base: enable support for physical port stats Simei Su
2023-09-20 6:22 ` [PATCH v5 03/11] common/idpf/base: add miss completion capabilities Simei Su
2023-09-20 6:22 ` [PATCH v5 04/11] common/idpf/base: initialize PTP support Simei Su
2023-09-20 6:22 ` [PATCH v5 05/11] common/idpf/base: remove mailbox registers Simei Su
2023-09-20 6:22 ` Simei Su [this message]
2023-09-20 6:22 ` [PATCH v5 07/11] common/idpf/base: add union for SW cookie fields Simei Su
2023-09-20 6:22 ` [PATCH v5 08/11] common/idpf/base: refine code and alignments Simei Su
2023-09-20 6:22 ` [PATCH v5 09/11] common/idpf/base: use GENMASK macro Simei Su
2023-09-20 6:22 ` [PATCH v5 10/11] common/idpf/base: remove unused Tx descriptor types Simei Su
2023-09-20 6:22 ` [PATCH v5 11/11] common/idpf/base: update version Simei Su
2023-09-21 1:21 ` [PATCH v5 00/11] update idpf base code Zhang, Qi Z
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230920062236.375308-7-simei.su@intel.com \
--to=simei.su@intel.com \
--cc=beilei.xing@intel.com \
--cc=dev@dpdk.org \
--cc=jingjing.wu@intel.com \
--cc=julianx.grajkowski@intel.com \
--cc=mingxia.liu@intel.com \
--cc=qi.z.zhang@intel.com \
--cc=shailendra.bhatnagar@intel.com \
--cc=wenjing.qiao@intel.com \
--cc=wenjun1.wu@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).