net/iavf: fix adding multicast MAC address
[dpdk.git] / drivers / net / mlx5 / mlx5_flow_verbs.c
index 5d11ba7..276bcb5 100644 (file)
@@ -8,16 +8,6 @@
 #include <stdint.h>
 #include <string.h>
 
-/* Verbs header. */
-/* ISO C doesn't support unnamed structs/unions, disabling -pedantic. */
-#ifdef PEDANTIC
-#pragma GCC diagnostic ignored "-Wpedantic"
-#endif
-#include <infiniband/verbs.h>
-#ifdef PEDANTIC
-#pragma GCC diagnostic error "-Wpedantic"
-#endif
-
 #include <rte_common.h>
 #include <rte_ether.h>
 #include <rte_ethdev_driver.h>
@@ -82,7 +72,7 @@ mlx5_flow_discover_priorities(struct rte_eth_dev *dev)
                },
        };
        struct ibv_flow *flow;
-       struct mlx5_hrxq *drop = mlx5_hrxq_drop_new(dev);
+       struct mlx5_hrxq *drop = mlx5_drop_action_create(dev);
        uint16_t vprio[] = { 8, 16 };
        int i;
        int priority = 0;
@@ -99,7 +89,7 @@ mlx5_flow_discover_priorities(struct rte_eth_dev *dev)
                claim_zero(mlx5_glue->destroy_flow(flow));
                priority = vprio[i];
        }
-       mlx5_hrxq_drop_release(dev);
+       mlx5_drop_action_destroy(dev);
        switch (priority) {
        case 8:
                priority = RTE_DIM(priority_map_3);
@@ -1322,10 +1312,11 @@ flow_verbs_validate(struct rte_eth_dev *dev,
                        }
                        break;
                case RTE_FLOW_ITEM_TYPE_IPV4:
-                       ret = mlx5_flow_validate_item_ipv4(items, item_flags,
-                                                          last_item,
-                                                          ether_type, NULL,
-                                                          error);
+                       ret = mlx5_flow_validate_item_ipv4
+                                               (items, item_flags,
+                                                last_item, ether_type, NULL,
+                                                MLX5_ITEM_RANGE_NOT_ACCEPTED,
+                                                error);
                        if (ret < 0)
                                return ret;
                        last_item = tunnel ? MLX5_FLOW_LAYER_INNER_L3_IPV4 :
@@ -1837,25 +1828,25 @@ flow_verbs_translate(struct rte_eth_dev *dev,
                case RTE_FLOW_ITEM_TYPE_VXLAN:
                        flow_verbs_translate_item_vxlan(dev_flow, items,
                                                        item_flags);
-                       subpriority = MLX5_PRIORITY_MAP_L2;
+                       subpriority = MLX5_TUNNEL_PRIO_GET(rss_desc);
                        item_flags |= MLX5_FLOW_LAYER_VXLAN;
                        break;
                case RTE_FLOW_ITEM_TYPE_VXLAN_GPE:
                        flow_verbs_translate_item_vxlan_gpe(dev_flow, items,
                                                            item_flags);
-                       subpriority = MLX5_PRIORITY_MAP_L2;
+                       subpriority = MLX5_TUNNEL_PRIO_GET(rss_desc);
                        item_flags |= MLX5_FLOW_LAYER_VXLAN_GPE;
                        break;
                case RTE_FLOW_ITEM_TYPE_GRE:
                        flow_verbs_translate_item_gre(dev_flow, items,
                                                      item_flags);
-                       subpriority = MLX5_PRIORITY_MAP_L2;
+                       subpriority = MLX5_TUNNEL_PRIO_GET(rss_desc);
                        item_flags |= MLX5_FLOW_LAYER_GRE;
                        break;
                case RTE_FLOW_ITEM_TYPE_MPLS:
                        flow_verbs_translate_item_mpls(dev_flow, items,
                                                       item_flags);
-                       subpriority = MLX5_PRIORITY_MAP_L2;
+                       subpriority = MLX5_TUNNEL_PRIO_GET(rss_desc);
                        item_flags |= MLX5_FLOW_LAYER_MPLS;
                        break;
                default:
@@ -1899,7 +1890,7 @@ flow_verbs_remove(struct rte_eth_dev *dev, struct rte_flow *flow)
                /* hrxq is union, don't touch it only the flag is set. */
                if (handle->rix_hrxq) {
                        if (handle->fate_action == MLX5_FLOW_FATE_DROP) {
-                               mlx5_hrxq_drop_release(dev);
+                               mlx5_drop_action_destroy(dev);
                                handle->rix_hrxq = 0;
                        } else if (handle->fate_action ==
                                   MLX5_FLOW_FATE_QUEUE) {
@@ -1975,7 +1966,7 @@ flow_verbs_apply(struct rte_eth_dev *dev, struct rte_flow *flow,
                dev_flow = &((struct mlx5_flow *)priv->inter_flows)[idx];
                handle = dev_flow->handle;
                if (handle->fate_action == MLX5_FLOW_FATE_DROP) {
-                       hrxq = mlx5_hrxq_drop_new(dev);
+                       hrxq = mlx5_drop_action_create(dev);
                        if (!hrxq) {
                                rte_flow_error_set
                                        (error, errno,
@@ -1991,20 +1982,21 @@ flow_verbs_apply(struct rte_eth_dev *dev, struct rte_flow *flow,
 
                        MLX5_ASSERT(rss_desc->queue_num);
                        hrxq_idx = mlx5_hrxq_get(dev, rss_desc->key,
-                                            MLX5_RSS_HASH_KEY_LEN,
-                                            dev_flow->hash_fields,
-                                            rss_desc->queue,
-                                            rss_desc->queue_num);
+                                                MLX5_RSS_HASH_KEY_LEN,
+                                                dev_flow->hash_fields,
+                                                rss_desc->queue,
+                                                rss_desc->queue_num);
                        if (!hrxq_idx)
-                               hrxq_idx = mlx5_hrxq_new(dev, rss_desc->key,
-                                               MLX5_RSS_HASH_KEY_LEN,
-                                               dev_flow->hash_fields,
-                                               rss_desc->queue,
-                                               rss_desc->queue_num,
-                                               !!(handle->layers &
-                                               MLX5_FLOW_LAYER_TUNNEL));
+                               hrxq_idx = mlx5_hrxq_new
+                                               (dev, rss_desc->key,
+                                                MLX5_RSS_HASH_KEY_LEN,
+                                                dev_flow->hash_fields,
+                                                rss_desc->queue,
+                                                rss_desc->queue_num,
+                                                !!(handle->layers &
+                                                MLX5_FLOW_LAYER_TUNNEL));
                        hrxq = mlx5_ipool_get(priv->sh->ipool[MLX5_IPOOL_HRXQ],
-                                        hrxq_idx);
+                                             hrxq_idx);
                        if (!hrxq) {
                                rte_flow_error_set
                                        (error, rte_errno,
@@ -2043,7 +2035,7 @@ error:
                /* hrxq is union, don't touch it only the flag is set. */
                if (handle->rix_hrxq) {
                        if (handle->fate_action == MLX5_FLOW_FATE_DROP) {
-                               mlx5_hrxq_drop_release(dev);
+                               mlx5_drop_action_destroy(dev);
                                handle->rix_hrxq = 0;
                        } else if (handle->fate_action ==
                                   MLX5_FLOW_FATE_QUEUE) {