* |WARNING| pw131078-131085 [PATCH] [v2, 8/8] net/cpfl: add flow support for representor
@ 2023-09-01 12:33 dpdklab
0 siblings, 0 replies; only message in thread
From: dpdklab @ 2023-09-01 12:33 UTC (permalink / raw)
To: test-report; +Cc: dpdk-test-reports
Test-Label: iol-testing
Test-Status: WARNING
http://dpdk.org/patch/131078
_apply patch failure_
Submitter: Yuying Zhang <yuying.zhang@intel.com>
Date: Friday, September 01 2023 11:31:58
Applied on: CommitID:495e2ca8968a8a5efb8fa74fab8aed190bf3a16b
Apply patch set 131078-131085 failed:
Checking patch doc/guides/nics/cpfl.rst...
error: while searching for:
-a BDF,representor=vf[0-3],representor=c1pf1
Driver compilation and testing
------------------------------
Refer to the document :doc:`build_and_test` for details.
Features
--------
error: patch failed: doc/guides/nics/cpfl.rst:128
Hunk #2 succeeded at 128 (offset -48 lines).
Checking patch drivers/net/cpfl/cpfl_ethdev.c...
Hunk #1 succeeded at 18 (offset -3 lines).
Hunk #2 succeeded at 31 (offset -4 lines).
error: while searching for:
return 0;
}
static int
cpfl_parse_devargs(struct rte_pci_device *pci_dev, struct cpfl_adapter_ext *adapter, bool first)
{
error: patch failed: drivers/net/cpfl/cpfl_ethdev.c:1537
error: while searching for:
&adapter->base.is_rx_singleq);
if (ret != 0)
goto fail;
fail:
rte_kvargs_free(kvlist);
return ret;
error: patch failed: drivers/net/cpfl/cpfl_ethdev.c:1585
Checking patch drivers/net/cpfl/cpfl_ethdev.h...
error: while searching for:
#define ACC_LCE_ID 15
#define IMC_MBX_EFD_ID 0
struct cpfl_vport_param {
struct cpfl_adapter_ext *adapter;
uint16_t devarg_id; /* arg id from user */
error: patch failed: drivers/net/cpfl/cpfl_ethdev.h:87
error: while searching for:
uint16_t req_vport_nb;
uint8_t repr_args_num;
struct rte_eth_devargs repr_args[CPFL_REPR_ARG_NUM_MAX];
};
struct p2p_queue_chunks_info {
error: patch failed: drivers/net/cpfl/cpfl_ethdev.h:100
Checking patch drivers/net/cpfl/meson.build...
Hunk #1 succeeded at 36 (offset -2 lines).
Applying patch doc/guides/nics/cpfl.rst with 1 reject...
Rejected hunk #1.
Hunk #2 applied cleanly.
Applying patch drivers/net/cpfl/cpfl_ethdev.c with 2 rejects...
Hunk #1 applied cleanly.
Hunk #2 applied cleanly.
Rejected hunk #3.
Rejected hunk #4.
Applying patch drivers/net/cpfl/cpfl_ethdev.h with 2 rejects...
Rejected hunk #1.
Rejected hunk #2.
Applied patch drivers/net/cpfl/meson.build cleanly.
hint: Use 'git am --show-current-patch' to see the failed patch
diff a/doc/guides/nics/cpfl.rst b/doc/guides/nics/cpfl.rst (rejected hunks)
@@ -128,12 +128,24 @@ Runtime Configuration
-a BDF,representor=vf[0-3],representor=c1pf1
+- ``flow_parser`` (default ``not enabled``)
+
+ The PMD supports using a JSON file to parse rte_flow tokens into low level hardware
+ resources defined in a DDP package file.
+
+ The user can specify the path of json file, for example::
+
+ -a ca:00.0,flow_parser="refpkg.json"
+
+ Then the PMD will load json file for device ``ca:00.0``.
+ The parameter is optional.
Driver compilation and testing
------------------------------
Refer to the document :doc:`build_and_test` for details.
+Rte flow need to install json-c library.
Features
--------
diff a/drivers/net/cpfl/cpfl_ethdev.c b/drivers/net/cpfl/cpfl_ethdev.c (rejected hunks)
@@ -1537,6 +1544,24 @@ parse_repr(const char *key __rte_unused, const char *value, void *args)
return 0;
}
+#ifdef CPFL_FLOW_JSON_SUPPORT
+static int
+parse_file(const char *key, const char *value, void *args)
+{
+ char *name = args;
+
+ if (strlen(value) > CPFL_FLOW_FILE_LEN - 1) {
+ PMD_DRV_LOG(ERR, "file path(%s) is too long.", value);
+ return -1;
+ }
+
+ PMD_DRV_LOG(DEBUG, "value:\"%s\" for key:\"%s\"", value, key);
+ strlcpy(name, value, CPFL_FLOW_FILE_LEN);
+
+ return 0;
+}
+#endif
+
static int
cpfl_parse_devargs(struct rte_pci_device *pci_dev, struct cpfl_adapter_ext *adapter, bool first)
{
@@ -1585,7 +1610,18 @@ cpfl_parse_devargs(struct rte_pci_device *pci_dev, struct cpfl_adapter_ext *adap
&adapter->base.is_rx_singleq);
if (ret != 0)
goto fail;
-
+#ifdef CPFL_FLOW_JSON_SUPPORT
+ if (rte_kvargs_get(kvlist, CPFL_FLOW_PARSER)) {
+ ret = rte_kvargs_process(kvlist, CPFL_FLOW_PARSER,
+ &parse_file, cpfl_args->flow_parser);
+ if (ret) {
+ PMD_DRV_LOG(ERR, "Failed to parser flow_parser, ret: %d", ret);
+ goto fail;
+ }
+ } else {
+ cpfl_args->flow_parser[0] = '\0';
+ }
+#endif
fail:
rte_kvargs_free(kvlist);
return ret;
diff a/drivers/net/cpfl/cpfl_ethdev.h b/drivers/net/cpfl/cpfl_ethdev.h (rejected hunks)
@@ -87,6 +87,8 @@
#define ACC_LCE_ID 15
#define IMC_MBX_EFD_ID 0
+#define CPFL_FLOW_FILE_LEN 100
+
struct cpfl_vport_param {
struct cpfl_adapter_ext *adapter;
uint16_t devarg_id; /* arg id from user */
@@ -100,6 +102,7 @@ struct cpfl_devargs {
uint16_t req_vport_nb;
uint8_t repr_args_num;
struct rte_eth_devargs repr_args[CPFL_REPR_ARG_NUM_MAX];
+ char flow_parser[CPFL_FLOW_FILE_LEN];
};
struct p2p_queue_chunks_info {
Checking patch drivers/net/cpfl/cpfl_flow_parser.c...
Checking patch drivers/net/cpfl/cpfl_flow_parser.h...
Checking patch drivers/net/cpfl/meson.build...
error: drivers/net/cpfl/meson.build: does not match index
Applied patch drivers/net/cpfl/cpfl_flow_parser.c cleanly.
Applied patch drivers/net/cpfl/cpfl_flow_parser.h cleanly.
hint: Use 'git am --show-current-patch' to see the failed patch
Checking patch drivers/net/cpfl/cpfl_actions.h...
Checking patch drivers/net/cpfl/cpfl_controlq.c...
Checking patch drivers/net/cpfl/cpfl_controlq.h...
Checking patch drivers/net/cpfl/cpfl_rules.c...
Checking patch drivers/net/cpfl/cpfl_rules.h...
Checking patch drivers/net/cpfl/meson.build...
error: drivers/net/cpfl/meson.build: does not match index
Applied patch drivers/net/cpfl/cpfl_actions.h cleanly.
Applied patch drivers/net/cpfl/cpfl_controlq.c cleanly.
Applied patch drivers/net/cpfl/cpfl_controlq.h cleanly.
Applied patch drivers/net/cpfl/cpfl_rules.c cleanly.
Applied patch drivers/net/cpfl/cpfl_rules.h cleanly.
hint: Use 'git am --show-current-patch' to see the failed patch
Checking patch drivers/net/cpfl/cpfl_ethdev.c...
error: drivers/net/cpfl/cpfl_ethdev.c: does not match index
Checking patch drivers/net/cpfl/cpfl_ethdev.h...
error: while searching for:
#include "cpfl_logs.h"
#include "cpfl_cpchnl.h"
#include "cpfl_representor.h"
/* Currently, backend supports up to 8 vports */
#define CPFL_MAX_VPORT_NUM 8
error: patch failed: drivers/net/cpfl/cpfl_ethdev.h:22
error: while searching for:
#define CPFL_FLOW_FILE_LEN 100
struct cpfl_vport_param {
struct cpfl_adapter_ext *adapter;
uint16_t devarg_id; /* arg id from user */
error: patch failed: drivers/net/cpfl/cpfl_ethdev.h:89
error: while searching for:
rte_spinlock_t repr_lock;
struct rte_hash *repr_whitelist_hash;
};
TAILQ_HEAD(cpfl_adapter_list, cpfl_adapter_ext);
int cpfl_vport_info_create(struct cpfl_adapter_ext *adapter,
struct cpfl_vport_id *vport_identity,
struct cpchnl2_vport_info *vport_info);
error: patch failed: drivers/net/cpfl/cpfl_ethdev.h:189
Checking patch drivers/net/cpfl/cpfl_vchnl.c...
error: drivers/net/cpfl/cpfl_vchnl.c: does not exist in index
Applying patch drivers/net/cpfl/cpfl_ethdev.h with 3 rejects...
Rejected hunk #1.
Rejected hunk #2.
Rejected hunk #3.
hint: Use 'git am --show-current-patch' to see the failed patch
diff a/drivers/net/cpfl/cpfl_ethdev.h b/drivers/net/cpfl/cpfl_ethdev.h (rejected hunks)
@@ -22,6 +22,7 @@
#include "cpfl_logs.h"
#include "cpfl_cpchnl.h"
#include "cpfl_representor.h"
+#include "cpfl_controlq.h"
/* Currently, backend supports up to 8 vports */
#define CPFL_MAX_VPORT_NUM 8
@@ -89,6 +90,10 @@
#define CPFL_FLOW_FILE_LEN 100
+#define CPFL_RX_CFGQ_NUM 4
+#define CPFL_TX_CFGQ_NUM 4
+#define CPFL_CFGQ_NUM 8
+
struct cpfl_vport_param {
struct cpfl_adapter_ext *adapter;
uint16_t devarg_id; /* arg id from user */
@@ -189,10 +194,19 @@ struct cpfl_adapter_ext {
rte_spinlock_t repr_lock;
struct rte_hash *repr_whitelist_hash;
+
+ /* ctrl vport and ctrl queues. */
+ struct cpfl_vport ctrl_vport;
+ uint8_t ctrl_vport_recv_info[IDPF_DFLT_MBX_BUF_SIZE];
+ struct idpf_ctlq_info *ctlqp[CPFL_CFGQ_NUM];
+ struct cpfl_ctlq_create_info cfgq_info[CPFL_CFGQ_NUM];
};
TAILQ_HEAD(cpfl_adapter_list, cpfl_adapter_ext);
+int cpfl_vc_create_ctrl_vport(struct cpfl_adapter_ext *adapter);
+int cpfl_config_ctlq_rx(struct cpfl_adapter_ext *adapter);
+int cpfl_config_ctlq_tx(struct cpfl_adapter_ext *adapter);
int cpfl_vport_info_create(struct cpfl_adapter_ext *adapter,
struct cpfl_vport_id *vport_identity,
struct cpchnl2_vport_info *vport_info);
Checking patch drivers/net/cpfl/cpfl_ethdev.c...
error: drivers/net/cpfl/cpfl_ethdev.c: does not match index
Checking patch drivers/net/cpfl/cpfl_ethdev.h...
error: while searching for:
CPFL_ITF_TYPE_REPRESENTOR
};
struct cpfl_itf {
enum cpfl_itf_type type;
struct cpfl_adapter_ext *adapter;
void *data;
};
error: patch failed: drivers/net/cpfl/cpfl_ethdev.h:143
error: while searching for:
rte_spinlock_t repr_lock;
struct rte_hash *repr_whitelist_hash;
/* ctrl vport and ctrl queues. */
struct cpfl_vport ctrl_vport;
uint8_t ctrl_vport_recv_info[IDPF_DFLT_MBX_BUF_SIZE];
error: patch failed: drivers/net/cpfl/cpfl_ethdev.h:195
Checking patch drivers/net/cpfl/cpfl_flow.c...
Checking patch drivers/net/cpfl/cpfl_flow.h...
Checking patch drivers/net/cpfl/meson.build...
error: drivers/net/cpfl/meson.build: does not match index
Applying patch drivers/net/cpfl/cpfl_ethdev.h with 2 rejects...
Rejected hunk #1.
Rejected hunk #2.
Applied patch drivers/net/cpfl/cpfl_flow.c cleanly.
Applied patch drivers/net/cpfl/cpfl_flow.h cleanly.
hint: Use 'git am --show-current-patch' to see the failed patch
diff a/drivers/net/cpfl/cpfl_ethdev.h b/drivers/net/cpfl/cpfl_ethdev.h (rejected hunks)
@@ -143,9 +143,12 @@ enum cpfl_itf_type {
CPFL_ITF_TYPE_REPRESENTOR
};
+TAILQ_HEAD(cpfl_flow_list, rte_flow);
+
struct cpfl_itf {
enum cpfl_itf_type type;
struct cpfl_adapter_ext *adapter;
+ struct cpfl_flow_list flow_list;
void *data;
};
@@ -195,6 +198,8 @@ struct cpfl_adapter_ext {
rte_spinlock_t repr_lock;
struct rte_hash *repr_whitelist_hash;
+ struct cpfl_flow_js_parser *flow_parser;
+
/* ctrl vport and ctrl queues. */
struct cpfl_vport ctrl_vport;
uint8_t ctrl_vport_recv_info[IDPF_DFLT_MBX_BUF_SIZE];
Checking patch drivers/net/cpfl/cpfl_controlq.c...
error: drivers/net/cpfl/cpfl_controlq.c: does not exist in index
Checking patch drivers/net/cpfl/cpfl_controlq.h...
error: drivers/net/cpfl/cpfl_controlq.h: does not exist in index
Checking patch drivers/net/cpfl/cpfl_ethdev.c...
error: drivers/net/cpfl/cpfl_ethdev.c: does not match index
Checking patch drivers/net/cpfl/cpfl_ethdev.h...
error: while searching for:
TAILQ_HEAD(cpfl_flow_list, rte_flow);
struct cpfl_itf {
enum cpfl_itf_type type;
struct cpfl_adapter_ext *adapter;
struct cpfl_flow_list flow_list;
void *data;
};
error: patch failed: drivers/net/cpfl/cpfl_ethdev.h:145
error: while searching for:
struct cpchnl2_vport_id *vport_id,
struct cpfl_vport_id *vi,
struct cpchnl2_get_vport_info_response *response);
#define CPFL_DEV_TO_PCI(eth_dev) \
RTE_DEV_TO_PCI((eth_dev)->device)
error: patch failed: drivers/net/cpfl/cpfl_ethdev.h:222
Checking patch drivers/net/cpfl/cpfl_fxp_rule.c...
Checking patch drivers/net/cpfl/cpfl_fxp_rule.h...
Checking patch drivers/net/cpfl/meson.build...
error: drivers/net/cpfl/meson.build: does not match index
Applying patch drivers/net/cpfl/cpfl_ethdev.h with 2 rejects...
Rejected hunk #1.
Rejected hunk #2.
Applied patch drivers/net/cpfl/cpfl_fxp_rule.c cleanly.
Applied patch drivers/net/cpfl/cpfl_fxp_rule.h cleanly.
hint: Use 'git am --show-current-patch' to see the failed patch
diff a/drivers/net/cpfl/cpfl_ethdev.h b/drivers/net/cpfl/cpfl_ethdev.h (rejected hunks)
@@ -145,10 +145,14 @@ enum cpfl_itf_type {
TAILQ_HEAD(cpfl_flow_list, rte_flow);
+#define CPFL_FLOW_BATCH_SIZE 490
struct cpfl_itf {
enum cpfl_itf_type type;
struct cpfl_adapter_ext *adapter;
struct cpfl_flow_list flow_list;
+ struct idpf_dma_mem flow_dma;
+ struct idpf_dma_mem dma[CPFL_FLOW_BATCH_SIZE];
+ struct idpf_ctlq_msg msg[CPFL_FLOW_BATCH_SIZE];
void *data;
};
@@ -222,6 +226,8 @@ int cpfl_cc_vport_info_get(struct cpfl_adapter_ext *adapter,
struct cpchnl2_vport_id *vport_id,
struct cpfl_vport_id *vi,
struct cpchnl2_get_vport_info_response *response);
+int cpfl_alloc_dma_mem_batch(struct idpf_dma_mem *orig_dma, struct idpf_dma_mem *dma,
+ uint32_t size, int batch_size);
#define CPFL_DEV_TO_PCI(eth_dev) \
RTE_DEV_TO_PCI((eth_dev)->device)
Checking patch drivers/net/cpfl/cpfl_ethdev.h...
error: while searching for:
#define CPFL_RX_CFGQ_NUM 4
#define CPFL_TX_CFGQ_NUM 4
#define CPFL_CFGQ_NUM 8
struct cpfl_vport_param {
error: patch failed: drivers/net/cpfl/cpfl_ethdev.h:92
error: while searching for:
struct rte_hash *repr_whitelist_hash;
struct cpfl_flow_js_parser *flow_parser;
/* ctrl vport and ctrl queues. */
struct cpfl_vport ctrl_vport;
error: patch failed: drivers/net/cpfl/cpfl_ethdev.h:203
error: while searching for:
((struct cpfl_repr *)((dev)->data->dev_private))
#define CPFL_DEV_TO_ITF(dev) \
((struct cpfl_itf *)((dev)->data->dev_private))
#endif /* _CPFL_ETHDEV_H_ */
error: patch failed: drivers/net/cpfl/cpfl_ethdev.h:239
Checking patch drivers/net/cpfl/cpfl_flow_engine_fxp.c...
Checking patch drivers/net/cpfl/meson.build...
error: drivers/net/cpfl/meson.build: does not match index
Applying patch drivers/net/cpfl/cpfl_ethdev.h with 3 rejects...
Rejected hunk #1.
Rejected hunk #2.
Rejected hunk #3.
Applied patch drivers/net/cpfl/cpfl_flow_engine_fxp.c cleanly.
hint: Use 'git am --show-current-patch' to see the failed patch
diff a/drivers/net/cpfl/cpfl_ethdev.h b/drivers/net/cpfl/cpfl_ethdev.h (rejected hunks)
@@ -92,6 +92,8 @@
#define CPFL_RX_CFGQ_NUM 4
#define CPFL_TX_CFGQ_NUM 4
+#define CPFL_FPCP_CFGQ_TX 0
+#define CPFL_FPCP_CFGQ_RX 1
#define CPFL_CFGQ_NUM 8
struct cpfl_vport_param {
@@ -203,6 +205,8 @@ struct cpfl_adapter_ext {
struct rte_hash *repr_whitelist_hash;
struct cpfl_flow_js_parser *flow_parser;
+ struct rte_bitmap *mod_bm;
+ void *mod_bm_mem;
/* ctrl vport and ctrl queues. */
struct cpfl_vport ctrl_vport;
@@ -239,5 +243,82 @@ int cpfl_alloc_dma_mem_batch(struct idpf_dma_mem *orig_dma, struct idpf_dma_mem
((struct cpfl_repr *)((dev)->data->dev_private))
#define CPFL_DEV_TO_ITF(dev) \
((struct cpfl_itf *)((dev)->data->dev_private))
+#define CPFL_INVALID_HW_ID UINT16_MAX
+static inline uint16_t
+cpfl_get_port_id(struct cpfl_itf *itf)
+{
+ if (!itf)
+ return CPFL_INVALID_HW_ID;
+
+ if (itf->type == CPFL_ITF_TYPE_VPORT) {
+ struct cpfl_vport *vport = (void *)itf;
+
+ return vport->base.devarg_id;
+ }
+
+ return CPFL_INVALID_HW_ID;
+}
+
+static inline uint16_t
+cpfl_get_vsi_id(struct cpfl_itf *itf)
+{
+ struct cpfl_adapter_ext *adapter = itf->adapter;
+ struct cpfl_vport_info *info;
+ uint32_t vport_id;
+ int ret;
+ struct cpfl_vport_id vport_identity;
+
+ if (!itf)
+ return CPFL_INVALID_HW_ID;
+
+ if (itf->type == CPFL_ITF_TYPE_REPRESENTOR) {
+ struct cpfl_repr *repr = (void *)itf;
+
+ return repr->vport_info->vport_info.vsi_id;
+ } else if (itf->type == CPFL_ITF_TYPE_VPORT) {
+ vport_id = ((struct cpfl_vport *)itf)->base.vport_id;
+ vport_identity.func_type = CPCHNL2_FUNC_TYPE_PF;
+ /* host: HOST0_CPF_ID, acc: ACC_CPF_ID */
+ vport_identity.pf_id = ACC_CPF_ID;
+ vport_identity.vf_id = 0;
+ vport_identity.vport_id = vport_id;
+
+ ret = rte_hash_lookup_data(adapter->vport_map_hash,
+ &vport_identity, (void **)&info);
+ if (ret < 0) {
+ PMD_DRV_LOG(ERR, "vport id not exist");
+ goto err;
+ }
+
+ return info->vport_info.vsi_id;
+ }
+
+err:
+ return CPFL_INVALID_HW_ID;
+}
+
+static inline struct cpfl_itf *
+cpfl_get_itf_by_port_id(uint16_t port_id)
+{
+ struct rte_eth_dev *dev;
+
+ if (port_id >= RTE_MAX_ETHPORTS) {
+ PMD_DRV_LOG(ERR, "port_id should be < %d.", RTE_MAX_ETHPORTS);
+ return NULL;
+ }
+
+ dev = &rte_eth_devices[port_id];
+ if (dev->state == RTE_ETH_DEV_UNUSED) {
+ PMD_DRV_LOG(ERR, "eth_dev[%d] is unused.", port_id);
+ return NULL;
+ }
+
+ if (!dev->data) {
+ PMD_DRV_LOG(ERR, "eth_dev[%d] data not be allocated.", port_id);
+ return NULL;
+ }
+
+ return CPFL_DEV_TO_ITF(dev);
+}
#endif /* _CPFL_ETHDEV_H_ */
Checking patch doc/guides/nics/cpfl.rst...
error: doc/guides/nics/cpfl.rst: does not match index
Checking patch doc/guides/rel_notes/release_23_11.rst...
error: while searching for:
* **Updated Intel cpfl driver.**
* Added support for port representor.
Removed Items
-------------
error: patch failed: doc/guides/rel_notes/release_23_11.rst:58
Checking patch drivers/net/cpfl/cpfl_flow_engine_fxp.c...
error: drivers/net/cpfl/cpfl_flow_engine_fxp.c: does not exist in index
Checking patch drivers/net/cpfl/cpfl_representor.c...
error: drivers/net/cpfl/cpfl_representor.c: does not exist in index
Applying patch doc/guides/rel_notes/release_23_11.rst with 1 reject...
Rejected hunk #1.
hint: Use 'git am --show-current-patch' to see the failed patch
diff a/doc/guides/rel_notes/release_23_11.rst b/doc/guides/rel_notes/release_23_11.rst (rejected hunks)
@@ -58,6 +58,7 @@ New Features
* **Updated Intel cpfl driver.**
* Added support for port representor.
+ * Added support for rte_flow.
Removed Items
-------------
https://lab.dpdk.org/results/dashboard/patchsets/27503/
UNH-IOL DPDK Community Lab
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2023-09-01 12:33 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-09-01 12:33 |WARNING| pw131078-131085 [PATCH] [v2, 8/8] net/cpfl: add flow support for representor dpdklab
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).