cfgfile: fix leak on creation error
[dpdk.git] / drivers / net / mlx5 / mlx5_flow.c
index 96a753e..f392f1f 100644 (file)
@@ -786,6 +786,8 @@ priv_flow_convert_actions(struct priv *priv,
                        goto exit_action_not_supported;
                }
        }
+       if (parser->drop && parser->mark)
+               parser->mark = 0;
        if (!parser->queues_n && !parser->drop) {
                rte_flow_error_set(error, ENOTSUP, RTE_FLOW_ERROR_TYPE_HANDLE,
                                   NULL, "no valid action");
@@ -1172,9 +1174,17 @@ priv_flow_convert(struct priv *priv,
         * Last step. Complete missing specification to reach the RSS
         * configuration.
         */
-       if (parser->queues_n > 1) {
+       if (parser->drop) {
+               /*
+                * Drop queue priority needs to be adjusted to
+                * their most specific layer priority.
+                */
+               parser->drop_q.ibv_attr->priority =
+                       attr->priority +
+                       hash_rxq_init[parser->layer].flow_priority;
+       } else if (parser->queues_n > 1) {
                priv_flow_convert_finalise(priv, parser);
-       } else if (!parser->drop) {
+       } else {
                /*
                 * Action queue have their priority overridden with
                 * Ethernet priority, this priority needs to be adjusted to
@@ -2790,7 +2800,6 @@ priv_fdir_filter_add(struct priv *priv,
                                attributes.actions,
                                &error);
        if (flow) {
-               TAILQ_INSERT_TAIL(&priv->flows, flow, next);
                DEBUG("FDIR created %p", (void *)flow);
                return 0;
        }