net/octeontx2: support port representor flow action
Action PORT_ID implementation assumes ingress only. Its semantics suggests that support for equal action PORT_REPRESENTOR be added. Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
This commit is contained in:
parent
d35dd287a2
commit
8d13351d4c
@ -91,6 +91,7 @@ of_set_vlan_pcp = Y
|
||||
of_set_vlan_vid = Y
|
||||
pf = Y
|
||||
port_id = Y
|
||||
port_representor = Y
|
||||
queue = Y
|
||||
rss = Y
|
||||
security = Y
|
||||
|
@ -403,10 +403,13 @@ Actions:
|
||||
+----+-----------------------------------------+
|
||||
| 12 | RTE_FLOW_ACTION_TYPE_PORT_ID |
|
||||
+----+-----------------------------------------+
|
||||
| 13 | RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR |
|
||||
+----+-----------------------------------------+
|
||||
|
||||
.. note::
|
||||
|
||||
``RTE_FLOW_ACTION_TYPE_PORT_ID`` is only supported between PF and its VFs.
|
||||
``RTE_FLOW_ACTION_TYPE_PORT_ID``, ``RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR``
|
||||
are only supported between PF and its VFs.
|
||||
|
||||
.. _table_octeontx2_supported_egress_action_types:
|
||||
|
||||
|
@ -900,7 +900,6 @@ otx2_flow_parse_actions(struct rte_eth_dev *dev,
|
||||
{
|
||||
struct otx2_eth_dev *hw = dev->data->dev_private;
|
||||
struct otx2_npc_flow_info *npc = &hw->npc_flow;
|
||||
const struct rte_flow_action_port_id *port_act;
|
||||
const struct rte_flow_action_mark *act_mark;
|
||||
const struct rte_flow_action_queue *act_q;
|
||||
const struct rte_flow_action_vf *vf_act;
|
||||
@ -977,9 +976,18 @@ otx2_flow_parse_actions(struct rte_eth_dev *dev,
|
||||
break;
|
||||
|
||||
case RTE_FLOW_ACTION_TYPE_PORT_ID:
|
||||
port_act = (const struct rte_flow_action_port_id *)
|
||||
actions->conf;
|
||||
port_id = port_act->id;
|
||||
case RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR:
|
||||
if (actions->type == RTE_FLOW_ACTION_TYPE_PORT_ID) {
|
||||
const struct rte_flow_action_port_id *port_act;
|
||||
|
||||
port_act = actions->conf;
|
||||
port_id = port_act->id;
|
||||
} else {
|
||||
const struct rte_flow_action_ethdev *ethdev_act;
|
||||
|
||||
ethdev_act = actions->conf;
|
||||
port_id = ethdev_act->port_id;
|
||||
}
|
||||
if (rte_eth_dev_get_name_by_port(port_id, if_name)) {
|
||||
errmsg = "Name not found for output port id";
|
||||
errcode = EINVAL;
|
||||
|
Loading…
x
Reference in New Issue
Block a user