net/mlx5: fix flow director drop action

Flow director drop action as not been brought back with the new
implementation on top of rte flow.

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

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Acked-by: Yongseok Koh <yskoh@mellanox.com>
This commit is contained in:
Nélio Laranjeiro 2017-10-24 17:18:15 +02:00 committed by Ferruh Yigit
parent 79b0fb7096
commit afca916135

View File

@ -2601,20 +2601,27 @@ priv_fdir_filter_convert(struct priv *priv,
ERROR("invalid queue number %d", fdir_filter->action.rx_queue); ERROR("invalid queue number %d", fdir_filter->action.rx_queue);
return EINVAL; 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->attr.ingress = 1;
attributes->items[0] = (struct rte_flow_item) { attributes->items[0] = (struct rte_flow_item) {
.type = RTE_FLOW_ITEM_TYPE_ETH, .type = RTE_FLOW_ITEM_TYPE_ETH,
.spec = &attributes->l2, .spec = &attributes->l2,
}; };
attributes->actions[0] = (struct rte_flow_action){ switch (fdir_filter->action.behavior) {
.type = RTE_FLOW_ACTION_TYPE_QUEUE, case RTE_ETH_FDIR_ACCEPT:
.conf = &attributes->queue, 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; attributes->queue.index = fdir_filter->action.rx_queue;
switch (fdir_filter->input.flow_type) { switch (fdir_filter->input.flow_type) {
case RTE_ETH_FLOW_NONFRAG_IPV4_UDP: case RTE_ETH_FLOW_NONFRAG_IPV4_UDP: