Configure flow management resources. */
| 1726 | |
| 1727 | /** Configure flow management resources. */ |
| 1728 | int |
| 1729 | port_flow_configure(portid_t port_id, |
| 1730 | const struct rte_flow_port_attr *port_attr, |
| 1731 | uint16_t nb_queue, |
| 1732 | const struct rte_flow_queue_attr *queue_attr) |
| 1733 | { |
| 1734 | struct rte_port *port; |
| 1735 | struct rte_flow_error error; |
| 1736 | const struct rte_flow_queue_attr *attr_list[nb_queue]; |
| 1737 | int std_queue; |
| 1738 | |
| 1739 | if (port_id_is_invalid(port_id, ENABLED_WARN) || |
| 1740 | port_id == (portid_t)RTE_PORT_ALL) |
| 1741 | return -EINVAL; |
| 1742 | port = &ports[port_id]; |
| 1743 | port->queue_nb = nb_queue; |
| 1744 | port->queue_sz = queue_attr->size; |
| 1745 | for (std_queue = 0; std_queue < nb_queue; std_queue++) |
| 1746 | attr_list[std_queue] = queue_attr; |
| 1747 | /* Poisoning to make sure PMDs update it in case of error. */ |
| 1748 | memset(&error, 0x66, sizeof(error)); |
| 1749 | if (rte_flow_configure(port_id, port_attr, nb_queue, attr_list, &error)) |
| 1750 | return port_flow_complain(&error); |
| 1751 | printf("Configure flows on port %u: " |
| 1752 | "number of queues %d with %d elements\n", |
| 1753 | port_id, nb_queue, queue_attr->size); |
| 1754 | return 0; |
| 1755 | } |
| 1756 | |
| 1757 | static int |
| 1758 | action_handle_create(portid_t port_id, |
no test coverage detected