@@ -465,6 +465,8 @@ enum index {
ITEM_METER,
ITEM_METER_COLOR,
ITEM_METER_COLOR_NAME,
+ ITEM_MHPSDP_HW_PORT,
+ ITEM_MHPSDP_HW_PORT_VALUE,
/* Validate/create actions. */
ACTIONS,
@@ -1355,6 +1357,7 @@ static const enum index next_item[] = {
ITEM_L2TPV2,
ITEM_PPP,
ITEM_METER,
+ ITEM_MHPSDP_HW_PORT,
END_SET,
ZERO,
};
@@ -1821,6 +1824,12 @@ static const enum index item_meter[] = {
ZERO,
};
+static const enum index item_mhpsdp_hw_port[] = {
+ ITEM_MHPSDP_HW_PORT_VALUE,
+ ITEM_NEXT,
+ ZERO,
+};
+
static const enum index next_action[] = {
ACTION_END,
ACTION_VOID,
@@ -6443,6 +6452,23 @@ static const struct token token_list[] = {
ARGS_ENTRY(struct buffer, port)),
.call = parse_mp,
},
+ [ITEM_MHPSDP_HW_PORT] = {
+ .name = "mhpsdp_hw_port",
+ .help = "match on the hardware port of the"
+ " received packet.",
+ .priv = PRIV_ITEM(MHPSDP_HW_PORT,
+ sizeof(struct rte_flow_item_mhpsdp_hw_port)),
+ .next = NEXT(item_mhpsdp_hw_port),
+ .call = parse_vc,
+ },
+ [ITEM_MHPSDP_HW_PORT_VALUE] = {
+ .name = "hwport",
+ .help = "hardware port value",
+ .next = NEXT(item_mhpsdp_hw_port, NEXT_ENTRY(COMMON_UNSIGNED),
+ item_param),
+ .args = ARGS(ARGS_ENTRY(struct rte_flow_item_mhpsdp_hw_port,
+ hwport)),
+ },
};
/** Remove and return last entry from argument stack. */
@@ -10981,6 +11007,9 @@ flow_item_default_mask(const struct rte_flow_item *item)
case RTE_FLOW_ITEM_TYPE_METER_COLOR:
mask = &rte_flow_item_meter_color_mask;
break;
+ case RTE_FLOW_ITEM_TYPE_MHPSDP_HW_PORT:
+ mask = &rte_flow_item_mhpsdp_hw_port_mask;
+ break;
default:
break;
}
@@ -1544,6 +1544,14 @@ Matches Color Marker set by a Meter.
- ``color``: Metering color marker.
+Item: ``MHPSDP_HW_PORT``
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Matches on the hardware port of the received packet, the hardware port in the
+group of physical ports connected to a single DPDK port.
+
+- ``hwport``: Hardware port value.
+
Actions
~~~~~~~
@@ -69,6 +69,11 @@ New Features
``rte_event_dev_config::nb_single_link_event_port_queues`` parameter
required for eth_rx, eth_tx, crypto and timer eventdev adapters.
+* **Added rte_flow support for matching MHPSDP_HW_PORT fields.**
+
+ For the multiple hardware ports connect to a single DPDK port (mhpsdp),
+ Added ``mhpsdp_hw_port`` item in rte_flow to support hardware port of
+ the packets.
Removed Items
-------------
@@ -3712,6 +3712,11 @@ This section lists supported pattern items and their attributes, if any.
- ``color {value}``: meter color value (green/yellow/red).
+- ``mhpsdp_hw_port``: match hardware port in the group of multiple ports connect
+ to a single DPDK port.
+
+ - ``hwport {value}``: hardware port value.
+
- ``send_to_kernel``: send packets to kernel.
@@ -157,6 +157,7 @@ static const struct rte_flow_desc_data rte_flow_desc_item[] = {
MK_FLOW_ITEM(L2TPV2, sizeof(struct rte_flow_item_l2tpv2)),
MK_FLOW_ITEM(PPP, sizeof(struct rte_flow_item_ppp)),
MK_FLOW_ITEM(METER_COLOR, sizeof(struct rte_flow_item_meter_color)),
+ MK_FLOW_ITEM(MHPSDP_HW_PORT, sizeof(struct rte_flow_item_mhpsdp_hw_port)),
};
/** Generate flow_action[] entry. */
@@ -624,6 +624,13 @@ enum rte_flow_item_type {
* See struct rte_flow_item_meter_color.
*/
RTE_FLOW_ITEM_TYPE_METER_COLOR,
+
+ /**
+ * Matches on the physical port of the received packet.
+ *
+ * See struct rte_flow_item_mhpsdp_hw_port.
+ */
+ RTE_FLOW_ITEM_TYPE_MHPSDP_HW_PORT,
};
/**
@@ -2103,6 +2110,31 @@ static const struct rte_flow_item_meter_color rte_flow_item_meter_color_mask = {
};
#endif
+/**
+ * @warning
+ * @b EXPERIMENTAL: this structure may change without prior notice
+ *
+ * RTE_FLOW_ITEM_TYPE_MHPSDP_HW_PORT
+ *
+ * For the multiple hardware ports connect to a single DPDK port (mhpsdp),
+ * use this item to match the hardware port of the packets.
+ */
+struct rte_flow_item_mhpsdp_hw_port {
+ /**
+ * Hardware port in the group of multiple ports connect
+ * to a single DPDK port. Value 1 means the first hw port.
+ */
+ uint8_t hwport;
+};
+
+/** Default mask for RTE_FLOW_ITEM_TYPE_MHPSDP_HW_PORT. */
+#ifndef __cplusplus
+static const struct rte_flow_item_mhpsdp_hw_port
+rte_flow_item_mhpsdp_hw_port_mask = {
+ .hwport = 0xff,
+};
+#endif
+
/**
* Action types.
*