net/mlx5: fix flow director drop action
authorNélio Laranjeiro <nelio.laranjeiro@6wind.com>
Tue, 24 Oct 2017 15:18:15 +0000 (17:18 +0200)
committerFerruh Yigit <ferruh.yigit@intel.com>
Thu, 26 Oct 2017 00:33:01 +0000 (02:33 +0200)
Flow director drop action as not been brought back with the new
implementation on top of rte flow.

Fixes: 4c3e9bcdd52e ("net/mlx5: support flow director")

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Acked-by: Yongseok Koh <yskoh@mellanox.com>
drivers/net/mlx5/mlx5_flow.c

index 6f458f4..96a753e 100644 (file)
@@ -2601,20 +2601,27 @@ priv_fdir_filter_convert(struct priv *priv,
                ERROR("invalid queue number %d", fdir_filter->action.rx_queue);
                return EINVAL;
        }
-       /* Validate the behavior. */
-       if (fdir_filter->action.behavior != RTE_ETH_FDIR_ACCEPT) {
-               ERROR("invalid behavior %d", fdir_filter->action.behavior);
-               return ENOTSUP;
-       }
        attributes->attr.ingress = 1;
        attributes->items[0] = (struct rte_flow_item) {
                .type = RTE_FLOW_ITEM_TYPE_ETH,
                .spec = &attributes->l2,
        };
-       attributes->actions[0] = (struct rte_flow_action){
-               .type = RTE_FLOW_ACTION_TYPE_QUEUE,
-               .conf = &attributes->queue,
-       };
+       switch (fdir_filter->action.behavior) {
+       case RTE_ETH_FDIR_ACCEPT:
+               attributes->actions[0] = (struct rte_flow_action){
+                       .type = RTE_FLOW_ACTION_TYPE_QUEUE,
+                       .conf = &attributes->queue,
+               };
+               break;
+       case RTE_ETH_FDIR_REJECT:
+               attributes->actions[0] = (struct rte_flow_action){
+                       .type = RTE_FLOW_ACTION_TYPE_DROP,
+               };
+               break;
+       default:
+               ERROR("invalid behavior %d", fdir_filter->action.behavior);
+               return ENOTSUP;
+       }
        attributes->queue.index = fdir_filter->action.rx_queue;
        switch (fdir_filter->input.flow_type) {
        case RTE_ETH_FLOW_NONFRAG_IPV4_UDP: