ethdev: remove deprecated flow action physical port
Such deprecation was commenced in DPDK 21.11. Since then, no parties have objected. Remove. The patch breaks ABI. Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru> Reviewed-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru> Acked-by: Ori Kam <orika@nvidia.com>
This commit is contained in:
parent
5e3779b7ab
commit
235558fe94
@ -488,9 +488,6 @@ enum index {
|
||||
ACTION_VF,
|
||||
ACTION_VF_ORIGINAL,
|
||||
ACTION_VF_ID,
|
||||
ACTION_PHY_PORT,
|
||||
ACTION_PHY_PORT_ORIGINAL,
|
||||
ACTION_PHY_PORT_INDEX,
|
||||
ACTION_PORT_ID,
|
||||
ACTION_PORT_ID_ORIGINAL,
|
||||
ACTION_PORT_ID_ID,
|
||||
@ -1800,7 +1797,6 @@ static const enum index next_action[] = {
|
||||
ACTION_RSS,
|
||||
ACTION_PF,
|
||||
ACTION_VF,
|
||||
ACTION_PHY_PORT,
|
||||
ACTION_PORT_ID,
|
||||
ACTION_METER,
|
||||
ACTION_METER_COLOR,
|
||||
@ -1894,13 +1890,6 @@ static const enum index action_vf[] = {
|
||||
ZERO,
|
||||
};
|
||||
|
||||
static const enum index action_phy_port[] = {
|
||||
ACTION_PHY_PORT_ORIGINAL,
|
||||
ACTION_PHY_PORT_INDEX,
|
||||
ACTION_NEXT,
|
||||
ZERO,
|
||||
};
|
||||
|
||||
static const enum index action_port_id[] = {
|
||||
ACTION_PORT_ID_ORIGINAL,
|
||||
ACTION_PORT_ID_ID,
|
||||
@ -5241,30 +5230,6 @@ static const struct token token_list[] = {
|
||||
.args = ARGS(ARGS_ENTRY(struct rte_flow_action_vf, id)),
|
||||
.call = parse_vc_conf,
|
||||
},
|
||||
[ACTION_PHY_PORT] = {
|
||||
.name = "phy_port",
|
||||
.help = "direct packets to physical port index",
|
||||
.priv = PRIV_ACTION(PHY_PORT,
|
||||
sizeof(struct rte_flow_action_phy_port)),
|
||||
.next = NEXT(action_phy_port),
|
||||
.call = parse_vc,
|
||||
},
|
||||
[ACTION_PHY_PORT_ORIGINAL] = {
|
||||
.name = "original",
|
||||
.help = "use original port index if possible",
|
||||
.next = NEXT(action_phy_port, NEXT_ENTRY(COMMON_BOOLEAN)),
|
||||
.args = ARGS(ARGS_ENTRY_BF(struct rte_flow_action_phy_port,
|
||||
original, 1)),
|
||||
.call = parse_vc_conf,
|
||||
},
|
||||
[ACTION_PHY_PORT_INDEX] = {
|
||||
.name = "index",
|
||||
.help = "physical port index",
|
||||
.next = NEXT(action_phy_port, NEXT_ENTRY(COMMON_UNSIGNED)),
|
||||
.args = ARGS(ARGS_ENTRY(struct rte_flow_action_phy_port,
|
||||
index)),
|
||||
.call = parse_vc_conf,
|
||||
},
|
||||
[ACTION_PORT_ID] = {
|
||||
.name = "port_id",
|
||||
.help = "direct matching traffic to a given DPDK port ID",
|
||||
|
@ -82,7 +82,6 @@ of_push_vlan = Y
|
||||
of_set_vlan_pcp = Y
|
||||
of_set_vlan_vid = Y
|
||||
pf = Y
|
||||
phy_port = Y
|
||||
port_id = Y
|
||||
port_representor = Y
|
||||
represented_port = Y
|
||||
|
@ -51,7 +51,6 @@ of_pop_vlan = Y
|
||||
of_push_vlan = Y
|
||||
of_set_vlan_pcp = Y
|
||||
of_set_vlan_vid = Y
|
||||
phy_port = Y
|
||||
queue = Y
|
||||
set_ipv4_dst = Y
|
||||
set_ipv4_src = Y
|
||||
|
@ -170,7 +170,6 @@ of_set_vlan_pcp =
|
||||
of_set_vlan_vid =
|
||||
passthru =
|
||||
pf =
|
||||
phy_port =
|
||||
port_id =
|
||||
port_representor =
|
||||
queue =
|
||||
|
@ -45,7 +45,6 @@ vlan = Y
|
||||
|
||||
[rte_flow actions]
|
||||
drop = Y
|
||||
phy_port = Y
|
||||
port_id = Y
|
||||
queue = Y
|
||||
represented_port = Y
|
||||
|
@ -70,7 +70,6 @@ of_push_vlan = Y
|
||||
of_set_vlan_pcp = Y
|
||||
of_set_vlan_vid = Y
|
||||
pf = Y
|
||||
phy_port = Y
|
||||
port_id = Y
|
||||
port_representor = Y
|
||||
represented_port = Y
|
||||
|
@ -244,8 +244,6 @@ Supported actions (***transfer*** rules):
|
||||
|
||||
- MARK
|
||||
|
||||
- PHY_PORT
|
||||
|
||||
- PF
|
||||
|
||||
- VF
|
||||
|
@ -2003,28 +2003,6 @@ rule or if packets are not addressed to a VF in the first place.
|
||||
| ``id`` | VF ID |
|
||||
+--------------+--------------------------------+
|
||||
|
||||
Action: ``PHY_PORT``
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
This action is deprecated. Consider:
|
||||
- `Action: PORT_REPRESENTOR`_
|
||||
- `Action: REPRESENTED_PORT`_
|
||||
|
||||
Directs matching traffic to a given physical port index of the underlying
|
||||
device.
|
||||
|
||||
.. _table_rte_flow_action_phy_port:
|
||||
|
||||
.. table:: PHY_PORT
|
||||
|
||||
+--------------+-------------------------------------+
|
||||
| Field | Value |
|
||||
+==============+=====================================+
|
||||
| ``original`` | use original port index if possible |
|
||||
+--------------+-------------------------------------+
|
||||
| ``index`` | physical port index |
|
||||
+--------------+-------------------------------------+
|
||||
|
||||
Action: ``PORT_ID``
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
This action is deprecated. Consider:
|
||||
|
@ -89,6 +89,9 @@ Removed Items
|
||||
* ethdev: removed ``RTE_FLOW_ITEM_TYPE_PHY_PORT``;
|
||||
use ``RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT``.
|
||||
|
||||
* ethdev: removed ``RTE_FLOW_ACTION_TYPE_PHY_PORT``;
|
||||
use ``RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT``.
|
||||
|
||||
|
||||
API Changes
|
||||
-----------
|
||||
@ -221,6 +224,8 @@ ABI Changes
|
||||
|
||||
* ethdev: enum ``RTE_FLOW_ITEM`` was affected by deprecation procedure.
|
||||
|
||||
* ethdev: enum ``RTE_FLOW_ACTION`` was affected by deprecation procedure.
|
||||
|
||||
|
||||
Known Issues
|
||||
------------
|
||||
|
@ -3807,11 +3807,6 @@ This section lists supported actions and their attributes, if any.
|
||||
- ``original {boolean}``: use original VF ID if possible.
|
||||
- ``id {unsigned}``: VF ID.
|
||||
|
||||
- ``phy_port``: direct packets to physical port index.
|
||||
|
||||
- ``original {boolean}``: use original port index if possible.
|
||||
- ``index {unsigned}``: physical port index.
|
||||
|
||||
- ``port_id``: direct matching traffic to a given DPDK port ID.
|
||||
|
||||
- ``original {boolean}``: use original DPDK port ID if possible.
|
||||
|
@ -61,10 +61,6 @@ struct bnxt_ulp_rte_act_info ulp_act_info[] = {
|
||||
.act_type = BNXT_ULP_ACT_TYPE_SUPPORTED,
|
||||
.proto_act_func = ulp_rte_vf_act_handler
|
||||
},
|
||||
[RTE_FLOW_ACTION_TYPE_PHY_PORT] = {
|
||||
.act_type = BNXT_ULP_ACT_TYPE_SUPPORTED,
|
||||
.proto_act_func = ulp_rte_phy_port_act_handler
|
||||
},
|
||||
[RTE_FLOW_ACTION_TYPE_PORT_ID] = {
|
||||
.act_type = BNXT_ULP_ACT_TYPE_SUPPORTED,
|
||||
.proto_act_func = ulp_rte_port_act_handler
|
||||
|
@ -2255,55 +2255,6 @@ ulp_rte_port_act_handler(const struct rte_flow_action *act_item,
|
||||
return ulp_rte_parser_act_port_set(param, ifindex, act_dir);
|
||||
}
|
||||
|
||||
/* Function to handle the parsing of RTE Flow action phy_port. */
|
||||
int32_t
|
||||
ulp_rte_phy_port_act_handler(const struct rte_flow_action *action_item,
|
||||
struct ulp_rte_parser_params *prm)
|
||||
{
|
||||
const struct rte_flow_action_phy_port *phy_port;
|
||||
uint32_t pid;
|
||||
int32_t rc;
|
||||
uint16_t pid_s;
|
||||
enum bnxt_ulp_direction_type dir;
|
||||
|
||||
phy_port = action_item->conf;
|
||||
if (!phy_port) {
|
||||
BNXT_TF_DBG(ERR,
|
||||
"ParseErr: Invalid Argument\n");
|
||||
return BNXT_TF_RC_PARSE_ERR;
|
||||
}
|
||||
|
||||
if (phy_port->original) {
|
||||
BNXT_TF_DBG(ERR,
|
||||
"Parse Err:Port Original not supported\n");
|
||||
return BNXT_TF_RC_PARSE_ERR;
|
||||
}
|
||||
dir = ULP_COMP_FLD_IDX_RD(prm, BNXT_ULP_CF_IDX_DIRECTION);
|
||||
if (dir != BNXT_ULP_DIR_EGRESS) {
|
||||
BNXT_TF_DBG(ERR,
|
||||
"Parse Err:Phy ports are valid only for egress\n");
|
||||
return BNXT_TF_RC_PARSE_ERR;
|
||||
}
|
||||
/* Get the physical port details from port db */
|
||||
rc = ulp_port_db_phy_port_vport_get(prm->ulp_ctx, phy_port->index,
|
||||
&pid_s);
|
||||
if (rc) {
|
||||
BNXT_TF_DBG(ERR, "Failed to get port details\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
pid = pid_s;
|
||||
pid = rte_cpu_to_be_32(pid);
|
||||
memcpy(&prm->act_prop.act_details[BNXT_ULP_ACT_PROP_IDX_VPORT],
|
||||
&pid, BNXT_ULP_ACT_PROP_SZ_VPORT);
|
||||
|
||||
/* Update the action port set bit */
|
||||
ULP_COMP_FLD_IDX_WR(prm, BNXT_ULP_CF_IDX_ACT_PORT_IS_SET, 1);
|
||||
ULP_COMP_FLD_IDX_WR(prm, BNXT_ULP_CF_IDX_ACT_PORT_TYPE,
|
||||
BNXT_ULP_INTF_TYPE_PHY_PORT);
|
||||
return BNXT_TF_RC_SUCCESS;
|
||||
}
|
||||
|
||||
/* Function to handle the parsing of RTE Flow action pop vlan. */
|
||||
int32_t
|
||||
ulp_rte_of_pop_vlan_act_handler(const struct rte_flow_action *a __rte_unused,
|
||||
|
@ -194,11 +194,6 @@ int32_t
|
||||
ulp_rte_port_act_handler(const struct rte_flow_action *act_item,
|
||||
struct ulp_rte_parser_params *params);
|
||||
|
||||
/* Function to handle the parsing of RTE Flow action phy_port. */
|
||||
int32_t
|
||||
ulp_rte_phy_port_act_handler(const struct rte_flow_action *action_item,
|
||||
struct ulp_rte_parser_params *params);
|
||||
|
||||
/* Function to handle the parsing of RTE Flow action pop vlan. */
|
||||
int32_t
|
||||
ulp_rte_of_pop_vlan_act_handler(const struct rte_flow_action *action_item,
|
||||
|
@ -598,7 +598,6 @@ ch_rte_parse_atype_switch(const struct rte_flow_action *a,
|
||||
const struct rte_flow_action_set_ipv4 *ipv4;
|
||||
const struct rte_flow_action_set_ipv6 *ipv6;
|
||||
const struct rte_flow_action_set_tp *tp_port;
|
||||
const struct rte_flow_action_phy_port *port;
|
||||
const struct rte_flow_action_set_mac *mac;
|
||||
int item_index;
|
||||
u16 tmp_vlan;
|
||||
@ -645,10 +644,6 @@ ch_rte_parse_atype_switch(const struct rte_flow_action *a,
|
||||
case RTE_FLOW_ACTION_TYPE_OF_POP_VLAN:
|
||||
fs->newvlan = VLAN_REMOVE;
|
||||
break;
|
||||
case RTE_FLOW_ACTION_TYPE_PHY_PORT:
|
||||
port = (const struct rte_flow_action_phy_port *)a->conf;
|
||||
fs->eport = port->index;
|
||||
break;
|
||||
case RTE_FLOW_ACTION_TYPE_SET_IPV4_SRC:
|
||||
item_index = cxgbe_get_flow_item_index(items,
|
||||
RTE_FLOW_ITEM_TYPE_IPV4);
|
||||
@ -836,7 +831,6 @@ cxgbe_rtef_parse_actions(struct rte_flow *flow,
|
||||
goto action_switch;
|
||||
case RTE_FLOW_ACTION_TYPE_OF_PUSH_VLAN:
|
||||
case RTE_FLOW_ACTION_TYPE_OF_POP_VLAN:
|
||||
case RTE_FLOW_ACTION_TYPE_PHY_PORT:
|
||||
case RTE_FLOW_ACTION_TYPE_MAC_SWAP:
|
||||
case RTE_FLOW_ACTION_TYPE_SET_IPV4_SRC:
|
||||
case RTE_FLOW_ACTION_TYPE_SET_IPV4_DST:
|
||||
|
@ -83,7 +83,6 @@ static const
|
||||
enum rte_flow_action_type dpaa2_supported_action_type[] = {
|
||||
RTE_FLOW_ACTION_TYPE_END,
|
||||
RTE_FLOW_ACTION_TYPE_QUEUE,
|
||||
RTE_FLOW_ACTION_TYPE_PHY_PORT,
|
||||
RTE_FLOW_ACTION_TYPE_PORT_ID,
|
||||
RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT,
|
||||
RTE_FLOW_ACTION_TYPE_RSS
|
||||
@ -92,7 +91,6 @@ enum rte_flow_action_type dpaa2_supported_action_type[] = {
|
||||
static const
|
||||
enum rte_flow_action_type dpaa2_supported_fs_action_type[] = {
|
||||
RTE_FLOW_ACTION_TYPE_QUEUE,
|
||||
RTE_FLOW_ACTION_TYPE_PHY_PORT,
|
||||
RTE_FLOW_ACTION_TYPE_PORT_ID,
|
||||
RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT,
|
||||
};
|
||||
@ -3281,17 +3279,11 @@ static inline struct rte_eth_dev *
|
||||
dpaa2_flow_redirect_dev(struct dpaa2_dev_priv *priv,
|
||||
const struct rte_flow_action *action)
|
||||
{
|
||||
const struct rte_flow_action_phy_port *phy_port;
|
||||
const struct rte_flow_action_port_id *port_id;
|
||||
int idx = -1;
|
||||
struct rte_eth_dev *dest_dev;
|
||||
|
||||
if (action->type == RTE_FLOW_ACTION_TYPE_PHY_PORT) {
|
||||
phy_port = (const struct rte_flow_action_phy_port *)
|
||||
action->conf;
|
||||
if (!phy_port->original)
|
||||
idx = phy_port->index;
|
||||
} else if (action->type == RTE_FLOW_ACTION_TYPE_PORT_ID) {
|
||||
if (action->type == RTE_FLOW_ACTION_TYPE_PORT_ID) {
|
||||
port_id = (const struct rte_flow_action_port_id *)
|
||||
action->conf;
|
||||
if (!port_id->original)
|
||||
@ -3345,7 +3337,6 @@ dpaa2_flow_verify_action(
|
||||
}
|
||||
break;
|
||||
case RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT:
|
||||
case RTE_FLOW_ACTION_TYPE_PHY_PORT:
|
||||
case RTE_FLOW_ACTION_TYPE_PORT_ID:
|
||||
if (!dpaa2_flow_redirect_dev(priv, &actions[j])) {
|
||||
DPAA2_PMD_ERR("Invalid port id of action");
|
||||
@ -3523,7 +3514,6 @@ dpaa2_generic_flow_set(struct rte_flow *flow,
|
||||
switch (actions[j].type) {
|
||||
case RTE_FLOW_ACTION_TYPE_QUEUE:
|
||||
case RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT:
|
||||
case RTE_FLOW_ACTION_TYPE_PHY_PORT:
|
||||
case RTE_FLOW_ACTION_TYPE_PORT_ID:
|
||||
memset(&action, 0, sizeof(struct dpni_fs_action_cfg));
|
||||
flow->action = actions[j].type;
|
||||
@ -4098,7 +4088,6 @@ int dpaa2_flow_destroy(struct rte_eth_dev *dev,
|
||||
switch (flow->action) {
|
||||
case RTE_FLOW_ACTION_TYPE_QUEUE:
|
||||
case RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT:
|
||||
case RTE_FLOW_ACTION_TYPE_PHY_PORT:
|
||||
case RTE_FLOW_ACTION_TYPE_PORT_ID:
|
||||
if (priv->num_rx_tc > 1) {
|
||||
/* Remove entry from QoS table first */
|
||||
|
@ -3463,36 +3463,6 @@ sfc_mae_rule_parse_action_count(struct sfc_adapter *sa,
|
||||
return rc;
|
||||
}
|
||||
|
||||
static int
|
||||
sfc_mae_rule_parse_action_phy_port(struct sfc_adapter *sa,
|
||||
const struct rte_flow_action_phy_port *conf,
|
||||
efx_mae_actions_t *spec)
|
||||
{
|
||||
efx_mport_sel_t mport;
|
||||
uint32_t phy_port;
|
||||
int rc;
|
||||
|
||||
if (conf->original != 0)
|
||||
phy_port = efx_nic_cfg_get(sa->nic)->enc_assigned_port;
|
||||
else
|
||||
phy_port = conf->index;
|
||||
|
||||
rc = efx_mae_mport_by_phy_port(phy_port, &mport);
|
||||
if (rc != 0) {
|
||||
sfc_err(sa, "failed to convert phys. port ID %u to m-port selector: %s",
|
||||
phy_port, strerror(rc));
|
||||
return rc;
|
||||
}
|
||||
|
||||
rc = efx_mae_action_set_populate_deliver(spec, &mport);
|
||||
if (rc != 0) {
|
||||
sfc_err(sa, "failed to request action DELIVER with m-port selector 0x%08x: %s",
|
||||
mport.sel, strerror(rc));
|
||||
}
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
static int
|
||||
sfc_mae_rule_parse_action_pf_vf(struct sfc_adapter *sa,
|
||||
const struct rte_flow_action_vf *vf_conf,
|
||||
@ -3626,7 +3596,6 @@ static const char * const action_names[] = {
|
||||
[RTE_FLOW_ACTION_TYPE_COUNT] = "COUNT",
|
||||
[RTE_FLOW_ACTION_TYPE_FLAG] = "FLAG",
|
||||
[RTE_FLOW_ACTION_TYPE_MARK] = "MARK",
|
||||
[RTE_FLOW_ACTION_TYPE_PHY_PORT] = "PHY_PORT",
|
||||
[RTE_FLOW_ACTION_TYPE_PF] = "PF",
|
||||
[RTE_FLOW_ACTION_TYPE_VF] = "VF",
|
||||
[RTE_FLOW_ACTION_TYPE_PORT_ID] = "PORT_ID",
|
||||
@ -3745,11 +3714,6 @@ sfc_mae_rule_parse_action(struct sfc_adapter *sa,
|
||||
custom_error = B_TRUE;
|
||||
}
|
||||
break;
|
||||
case RTE_FLOW_ACTION_TYPE_PHY_PORT:
|
||||
SFC_BUILD_SET_OVERFLOW(RTE_FLOW_ACTION_TYPE_PHY_PORT,
|
||||
bundle->actions_mask);
|
||||
rc = sfc_mae_rule_parse_action_phy_port(sa, action->conf, spec);
|
||||
break;
|
||||
case RTE_FLOW_ACTION_TYPE_PF:
|
||||
SFC_BUILD_SET_OVERFLOW(RTE_FLOW_ACTION_TYPE_PF,
|
||||
bundle->actions_mask);
|
||||
|
@ -188,7 +188,6 @@ static const struct rte_flow_desc_data rte_flow_desc_action[] = {
|
||||
MK_FLOW_ACTION(RSS, sizeof(struct rte_flow_action_rss)),
|
||||
MK_FLOW_ACTION(PF, 0),
|
||||
MK_FLOW_ACTION(VF, sizeof(struct rte_flow_action_vf)),
|
||||
MK_FLOW_ACTION(PHY_PORT, sizeof(struct rte_flow_action_phy_port)),
|
||||
MK_FLOW_ACTION(PORT_ID, sizeof(struct rte_flow_action_port_id)),
|
||||
MK_FLOW_ACTION(METER, sizeof(struct rte_flow_action_meter)),
|
||||
MK_FLOW_ACTION(SECURITY, sizeof(struct rte_flow_action_security)),
|
||||
|
@ -2224,18 +2224,6 @@ enum rte_flow_action_type {
|
||||
*/
|
||||
RTE_FLOW_ACTION_TYPE_VF,
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
* @see RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR
|
||||
* @see RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT
|
||||
*
|
||||
* Directs packets to a given physical port index of the underlying
|
||||
* device.
|
||||
*
|
||||
* See struct rte_flow_action_phy_port.
|
||||
*/
|
||||
RTE_FLOW_ACTION_TYPE_PHY_PORT,
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
* @see RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR
|
||||
@ -2960,22 +2948,6 @@ struct rte_flow_action_vf {
|
||||
uint32_t id; /**< VF ID. */
|
||||
};
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
* @see RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR
|
||||
* @see RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT
|
||||
*
|
||||
* RTE_FLOW_ACTION_TYPE_PHY_PORT
|
||||
*
|
||||
* Directs packets to a given physical port index of the underlying
|
||||
* device.
|
||||
*/
|
||||
struct rte_flow_action_phy_port {
|
||||
uint32_t original:1; /**< Use original port index if possible. */
|
||||
uint32_t reserved:31; /**< Reserved, must be zero. */
|
||||
uint32_t index; /**< Physical port index. */
|
||||
};
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
* @see RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR
|
||||
|
Loading…
Reference in New Issue
Block a user