* [dpdk-test-report] |WARNING| pw102450-102453 [PATCH] [v8, 4/4] app/testpmd: add flex item CLI commands
@ 2021-10-20 15:29 dpdklab
0 siblings, 0 replies; only message in thread
From: dpdklab @ 2021-10-20 15:29 UTC (permalink / raw)
To: test-report; +Cc: dpdk-test-reports
[-- Attachment #1: Type: text/plain, Size: 13587 bytes --]
Test-Label: iol-testing
Test-Status: WARNING
http://dpdk.org/patch/102450
_apply patch failure_
Submitter: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Date: Wednesday, October 20 2021 15:14:57
Applied on: CommitID:69a3c6319140b34fb714fa5bd6990cceb2ea2997
Apply patch set 102450-102453 failed:
Checking patch doc/guides/prog_guide/rte_flow.rst...
error: while searching for:
See also `Action: REPRESENTED_PORT`_.
Actions
~~~~~~~
error: patch failed: doc/guides/prog_guide/rte_flow.rst:1548
Checking patch doc/guides/rel_notes/release_21_11.rst...
error: while searching for:
Added macros ETH_RSS_IPV4_CHKSUM and ETH_RSS_L4_CHKSUM, now IPv4 and
TCP/UDP/SCTP header checksum field can be used as input set for RSS.
* **Added ethdev support to control delivery of Rx metadata from the HW to the PMD**
A new API, ``rte_eth_rx_metadata_negotiate()``, was added.
error: patch failed: doc/guides/rel_notes/release_21_11.rst:80
Checking patch lib/ethdev/rte_flow.c...
error: while searching for:
MK_FLOW_ITEM(CONNTRACK, sizeof(uint32_t)),
MK_FLOW_ITEM(PORT_REPRESENTOR, sizeof(struct rte_flow_item_ethdev)),
MK_FLOW_ITEM(REPRESENTED_PORT, sizeof(struct rte_flow_item_ethdev)),
};
/** Generate flow_action[] entry. */
error: patch failed: lib/ethdev/rte_flow.c:141
error: while searching for:
ops->pick_transfer_proxy(dev, proxy_port_id, error),
error);
}
error: patch failed: lib/ethdev/rte_flow.c:1332
Checking patch lib/ethdev/rte_flow.h...
error: while searching for:
* @see struct rte_flow_item_ethdev
*/
RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT,
};
/**
error: patch failed: lib/ethdev/rte_flow.h:635
Hunk #2 succeeded at 1839 (offset -101 lines).
error: while searching for:
int
rte_flow_pick_transfer_proxy(uint16_t port_id, uint16_t *proxy_port_id,
struct rte_flow_error *error);
#ifdef __cplusplus
}
#endif
error: patch failed: lib/ethdev/rte_flow.h:4477
Checking patch lib/ethdev/rte_flow_driver.h...
error: while searching for:
(struct rte_eth_dev *dev,
uint16_t *proxy_port_id,
struct rte_flow_error *error);
};
/**
error: patch failed: lib/ethdev/rte_flow_driver.h:144
Checking patch lib/ethdev/version.map...
error: while searching for:
rte_eth_macaddrs_get;
rte_eth_rx_metadata_negotiate;
rte_flow_pick_transfer_proxy;
};
INTERNAL {
error: patch failed: lib/ethdev/version.map:253
Applying patch doc/guides/prog_guide/rte_flow.rst with 1 reject...
Rejected hunk #1.
Applying patch doc/guides/rel_notes/release_21_11.rst with 1 reject...
Rejected hunk #1.
Applying patch lib/ethdev/rte_flow.c with 2 rejects...
Hunk #1 applied cleanly.
Rejected hunk #2.
Rejected hunk #3.
Applying patch lib/ethdev/rte_flow.h with 2 rejects...
Rejected hunk #1.
Hunk #2 applied cleanly.
Rejected hunk #3.
Applying patch lib/ethdev/rte_flow_driver.h with 1 reject...
Rejected hunk #1.
Applying patch lib/ethdev/version.map with 1 reject...
Rejected hunk #1.
diff a/doc/guides/prog_guide/rte_flow.rst b/doc/guides/prog_guide/rte_flow.rst (rejected hunks)
@@ -1548,6 +1548,31 @@ This item is meant to use the same structure as `Item: PORT_REPRESENTOR`_.
See also `Action: REPRESENTED_PORT`_.
+Item: ``FLEX``
+^^^^^^^^^^^^^^
+
+Matches with the custom network protocol header that was created
+using rte_flow_flex_item_create() API. The application describes
+the desired header structure, defines the header fields attributes
+and header relations with preceding and following protocols and
+configures the ethernet devices accordingly via
+rte_flow_flex_item_create() routine.
+
+- ``handle``: the flex item handle returned by the PMD on successful
+ rte_flow_flex_item_create() call, mask for this field is ignored.
+- ``length``: match pattern length in bytes. If the length does not cover
+ all fields defined in item configuration, the pattern spec and mask are
+ considered by the driver as padded with trailing zeroes till the full
+ configured item pattern length.
+- ``pattern``: pattern to match. The pattern is concatenation of bit fields
+ configured at item creation. At configuration the fields are presented
+ by sample_data array. The order of the bitfields is defined by the order
+ of sample_data elements. The width of each bitfield is defined by the width
+ specified in the corresponding sample_data element as well. If pattern
+ length is smaller than configured fields overall length it is considered
+ as padded with trailing zeroes up to full configured length, both for
+ value and mask.
+
Actions
~~~~~~~
diff a/doc/guides/rel_notes/release_21_11.rst b/doc/guides/rel_notes/release_21_11.rst (rejected hunks)
@@ -80,6 +80,13 @@ New Features
Added macros ETH_RSS_IPV4_CHKSUM and ETH_RSS_L4_CHKSUM, now IPv4 and
TCP/UDP/SCTP header checksum field can be used as input set for RSS.
+* **Introduced flow flex item.**
+
+ * The configurable flow flex item provides the capability to introduce
+ the arbitrary user specified network protocol header, configure the device
+ hardware accordingly, and perform match on this header with desired patterns
+ and masks.
+
* **Added ethdev support to control delivery of Rx metadata from the HW to the PMD**
A new API, ``rte_eth_rx_metadata_negotiate()``, was added.
diff a/lib/ethdev/rte_flow.c b/lib/ethdev/rte_flow.c (rejected hunks)
@@ -141,6 +154,8 @@ static const struct rte_flow_desc_data rte_flow_desc_item[] = {
MK_FLOW_ITEM(CONNTRACK, sizeof(uint32_t)),
MK_FLOW_ITEM(PORT_REPRESENTOR, sizeof(struct rte_flow_item_ethdev)),
MK_FLOW_ITEM(REPRESENTED_PORT, sizeof(struct rte_flow_item_ethdev)),
+ MK_FLOW_ITEM_FN(FLEX, sizeof(struct rte_flow_item_flex),
+ rte_flow_item_flex_conv),
};
/** Generate flow_action[] entry. */
@@ -1332,3 +1347,43 @@ rte_flow_pick_transfer_proxy(uint16_t port_id, uint16_t *proxy_port_id,
ops->pick_transfer_proxy(dev, proxy_port_id, error),
error);
}
+
+struct rte_flow_item_flex_handle *
+rte_flow_flex_item_create(uint16_t port_id,
+ const struct rte_flow_item_flex_conf *conf,
+ struct rte_flow_error *error)
+{
+ struct rte_eth_dev *dev = &rte_eth_devices[port_id];
+ const struct rte_flow_ops *ops = rte_flow_ops_get(port_id, error);
+ struct rte_flow_item_flex_handle *handle;
+
+ if (unlikely(!ops))
+ return NULL;
+ if (unlikely(!ops->flex_item_create)) {
+ rte_flow_error_set(error, ENOTSUP,
+ RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
+ NULL, rte_strerror(ENOTSUP));
+ return NULL;
+ }
+ handle = ops->flex_item_create(dev, conf, error);
+ if (handle == NULL)
+ flow_err(port_id, -rte_errno, error);
+ return handle;
+}
+
+int
+rte_flow_flex_item_release(uint16_t port_id,
+ const struct rte_flow_item_flex_handle *handle,
+ struct rte_flow_error *error)
+{
+ int ret;
+ struct rte_eth_dev *dev = &rte_eth_devices[port_id];
+ const struct rte_flow_ops *ops = rte_flow_ops_get(port_id, error);
+
+ if (unlikely(!ops || !ops->flex_item_release))
+ return rte_flow_error_set(error, ENOTSUP,
+ RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
+ NULL, rte_strerror(ENOTSUP));
+ ret = ops->flex_item_release(dev, handle, error);
+ return flow_err(port_id, ret, error);
+}
diff a/lib/ethdev/rte_flow.h b/lib/ethdev/rte_flow.h (rejected hunks)
@@ -635,6 +635,15 @@ enum rte_flow_item_type {
* @see struct rte_flow_item_ethdev
*/
RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT,
+
+ /**
+ * Matches a configured set of fields at runtime calculated offsets
+ * over the generic network header with variable length and
+ * flexible pattern
+ *
+ * @see struct rte_flow_item_flex.
+ */
+ RTE_FLOW_ITEM_TYPE_FLEX,
};
/**
@@ -4477,6 +4657,51 @@ __rte_experimental
int
rte_flow_pick_transfer_proxy(uint16_t port_id, uint16_t *proxy_port_id,
struct rte_flow_error *error);
+
+/**
+ * @warning
+ * @b EXPERIMENTAL: this API may change without prior notice.
+ *
+ * Create the flex item with specified configuration over
+ * the Ethernet device.
+ *
+ * @param port_id
+ * Port identifier of Ethernet device.
+ * @param[in] conf
+ * Item configuration.
+ * @param[out] error
+ * Perform verbose error reporting if not NULL. PMDs initialize this
+ * structure in case of error only.
+ *
+ * @return
+ * Non-NULL opaque pointer on success, NULL otherwise and rte_errno is set.
+ */
+__rte_experimental
+struct rte_flow_item_flex_handle *
+rte_flow_flex_item_create(uint16_t port_id,
+ const struct rte_flow_item_flex_conf *conf,
+ struct rte_flow_error *error);
+
+/**
+ * Release the flex item on the specified Ethernet device.
+ *
+ * @param port_id
+ * Port identifier of Ethernet device.
+ * @param[in] handle
+ * Handle of the item existing on the specified device.
+ * @param[out] error
+ * Perform verbose error reporting if not NULL. PMDs initialize this
+ * structure in case of error only.
+ *
+ * @return
+ * 0 on success, a negative errno value otherwise and rte_errno is set.
+ */
+__rte_experimental
+int
+rte_flow_flex_item_release(uint16_t port_id,
+ const struct rte_flow_item_flex_handle *handle,
+ struct rte_flow_error *error);
+
#ifdef __cplusplus
}
#endif
diff a/lib/ethdev/rte_flow_driver.h b/lib/ethdev/rte_flow_driver.h (rejected hunks)
@@ -144,6 +144,14 @@ struct rte_flow_ops {
(struct rte_eth_dev *dev,
uint16_t *proxy_port_id,
struct rte_flow_error *error);
+ struct rte_flow_item_flex_handle *(*flex_item_create)
+ (struct rte_eth_dev *dev,
+ const struct rte_flow_item_flex_conf *conf,
+ struct rte_flow_error *error);
+ int (*flex_item_release)
+ (struct rte_eth_dev *dev,
+ const struct rte_flow_item_flex_handle *handle,
+ struct rte_flow_error *error);
};
/**
diff a/lib/ethdev/version.map b/lib/ethdev/version.map (rejected hunks)
@@ -253,6 +253,8 @@ EXPERIMENTAL {
rte_eth_macaddrs_get;
rte_eth_rx_metadata_negotiate;
rte_flow_pick_transfer_proxy;
+ rte_flow_flex_item_create;
+ rte_flow_flex_item_release;
};
INTERNAL {
Checking patch app/test-pmd/cmdline_flow.c...
Hunk #1 succeeded at 7962 (offset -114 lines).
Checking patch app/test-pmd/testpmd.h...
error: while searching for:
void remove_tx_dynf_callback(portid_t portid);
int update_mtu_from_frame_size(portid_t portid, uint32_t max_rx_pktlen);
/*
* Work-around of a compilation error with ICC on invocations of the
* rte_be_to_cpu_16() function.
error: patch failed: app/test-pmd/testpmd.h:1047
Applied patch app/test-pmd/cmdline_flow.c cleanly.
Applying patch app/test-pmd/testpmd.h with 1 reject...
Rejected hunk #1.
diff a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h (rejected hunks)
@@ -1047,6 +1047,11 @@ void add_tx_dynf_callback(portid_t portid);
void remove_tx_dynf_callback(portid_t portid);
int update_mtu_from_frame_size(portid_t portid, uint32_t max_rx_pktlen);
+extern int flow_parse(const char *src, void *result, unsigned int size,
+ struct rte_flow_attr **attr,
+ struct rte_flow_item **pattern,
+ struct rte_flow_action **actions);
+
/*
* Work-around of a compilation error with ICC on invocations of the
* rte_be_to_cpu_16() function.
Checking patch app/test-pmd/cmd_flex_item.c...
Checking patch app/test-pmd/cmdline.c...
Hunk #1 succeeded at 17539 (offset -322 lines).
Checking patch app/test-pmd/cmdline_flow.c...
error: app/test-pmd/cmdline_flow.c: does not match index
Checking patch app/test-pmd/meson.build...
Checking patch app/test-pmd/testpmd.c...
error: while searching for:
if (is_proc_primary()) {
port_flow_flush(pi);
rte_eth_dev_close(pi);
}
error: patch failed: app/test-pmd/testpmd.c:3118
Hunk #2 succeeded at 4017 (offset -207 lines).
Checking patch app/test-pmd/testpmd.h...
Hunk #2 succeeded at 282 (offset -16 lines).
Hunk #3 succeeded at 327 (offset -16 lines).
error: while searching for:
void add_tx_dynf_callback(portid_t portid);
void remove_tx_dynf_callback(portid_t portid);
int update_mtu_from_frame_size(portid_t portid, uint32_t max_rx_pktlen);
extern int flow_parse(const char *src, void *result, unsigned int size,
struct rte_flow_attr **attr,
error: patch failed: app/test-pmd/testpmd.h:1046
Checking patch doc/guides/testpmd_app_ug/testpmd_funcs.rst...
Hunk #1 succeeded at 5066 (offset -25 lines).
Applied patch app/test-pmd/cmd_flex_item.c cleanly.
Applied patch app/test-pmd/cmdline.c cleanly.
Applied patch app/test-pmd/meson.build cleanly.
Applying patch app/test-pmd/testpmd.c with 1 reject...
Rejected hunk #1.
Hunk #2 applied cleanly.
Applying patch app/test-pmd/testpmd.h with 1 reject...
Hunk #1 applied cleanly.
Hunk #2 applied cleanly.
Hunk #3 applied cleanly.
Rejected hunk #4.
Applied patch doc/guides/testpmd_app_ug/testpmd_funcs.rst cleanly.
diff a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c (rejected hunks)
@@ -3118,6 +3118,7 @@ close_port(portid_t pid)
if (is_proc_primary()) {
port_flow_flush(pi);
+ port_flex_item_flush(pi);
rte_eth_dev_close(pi);
}
diff a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h (rejected hunks)
@@ -1046,6 +1072,10 @@ uint16_t tx_pkt_set_dynf(uint16_t port_id, __rte_unused uint16_t queue,
void add_tx_dynf_callback(portid_t portid);
void remove_tx_dynf_callback(portid_t portid);
int update_mtu_from_frame_size(portid_t portid, uint32_t max_rx_pktlen);
+int update_jumbo_frame_offload(portid_t portid);
+void flex_item_create(portid_t port_id, uint16_t flex_id, const char *filename);
+void flex_item_destroy(portid_t port_id, uint16_t flex_id);
+void port_flex_item_flush(portid_t port_id);
extern int flow_parse(const char *src, void *result, unsigned int size,
struct rte_flow_attr **attr,
https://lab.dpdk.org/results/dashboard/patchsets/19590/
UNH-IOL DPDK Community Lab
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2021-10-20 15:29 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-20 15:29 [dpdk-test-report] |WARNING| pw102450-102453 [PATCH] [v8, 4/4] app/testpmd: add flex item CLI commands 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).