Add the corresponding logics to support the offload of QUEUE action.

Signed-off-by: Chaoyong He <chaoyong...@corigine.com>
Reviewed-by: Long Wu <long...@corigine.com>
Reviewed-by: Peng Zhang <peng.zh...@corigine.com>
---
 drivers/net/nfp/nfp_net_flow.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)
diff --git a/drivers/net/nfp/nfp_net_flow.c b/drivers/net/nfp/nfp_net_flow.c
index 674aff075e..67071272a2 100644
--- a/drivers/net/nfp/nfp_net_flow.c
+++ b/drivers/net/nfp/nfp_net_flow.c
@@ -552,6 +552,20 @@ nfp_net_flow_action_mark(struct rte_flow *nfp_flow,
        action_data->mark_id = mark->id;
 }
 
+static void
+nfp_net_flow_action_queue(struct rte_flow *nfp_flow,
+               const struct rte_flow_action *action)
+{
+       struct nfp_net_cmsg_action *action_data;
+       const struct rte_flow_action_queue *queue;
+
+       action_data = (struct nfp_net_cmsg_action 
*)nfp_flow->payload.action_data;
+       queue = action->conf;
+
+       action_data->action |= NFP_NET_CMSG_ACTION_QUEUE;
+       action_data->queue = queue->index;
+}
+
 static int
 nfp_net_flow_compile_actions(const struct rte_flow_action actions[],
                struct rte_flow *nfp_flow)
@@ -568,6 +582,10 @@ nfp_net_flow_compile_actions(const struct rte_flow_action 
actions[],
                        PMD_DRV_LOG(DEBUG, "Process RTE_FLOW_ACTION_TYPE_MARK");
                        nfp_net_flow_action_mark(nfp_flow, action);
                        break;
+               case RTE_FLOW_ACTION_TYPE_QUEUE:
+                       PMD_DRV_LOG(DEBUG, "Process 
RTE_FLOW_ACTION_TYPE_QUEUE");
+                       nfp_net_flow_action_queue(nfp_flow, action);
+                       break;
                default:
                        PMD_DRV_LOG(ERR, "Unsupported action type: %d", 
action->type);
                        return -ENOTSUP;
-- 
2.39.1

Reply via email to