"Display:\n"
"--------\n\n"
- "show port (info|stats|summary|xstats|fdir|stat_qmap|dcb_tc|cap) (port_id|all)\n"
+ "show port (info|stats|summary|xstats|fdir|dcb_tc|cap) (port_id|all)\n"
" Display information for port_id, or all.\n\n"
"show port port_id (module_eeprom|eeprom)\n"
"show port (port_id) rss-hash [key]\n"
" Display the RSS hash functions and RSS hash key of port\n\n"
- "clear port (info|stats|xstats|fdir|stat_qmap) (port_id|all)\n"
+ "clear port (info|stats|xstats|fdir) (port_id|all)\n"
" Clear information for port_id, or all.\n\n"
"show (rxq|txq) info (port_id) (queue_id)\n"
RTE_ETH_FOREACH_DEV(i)
fdir_get_infos(i);
#endif
- else if (!strcmp(res->what, "stat_qmap"))
- RTE_ETH_FOREACH_DEV(i)
- nic_stats_mapping_display(i);
else if (!strcmp(res->what, "dcb_tc"))
RTE_ETH_FOREACH_DEV(i)
port_dcb_info_display(i);
TOKEN_STRING_INITIALIZER(struct cmd_showportall_result, port, "port");
cmdline_parse_token_string_t cmd_showportall_what =
TOKEN_STRING_INITIALIZER(struct cmd_showportall_result, what,
- "info#summary#stats#xstats#fdir#stat_qmap#dcb_tc#cap");
+ "info#summary#stats#xstats#fdir#dcb_tc#cap");
cmdline_parse_token_string_t cmd_showportall_all =
TOKEN_STRING_INITIALIZER(struct cmd_showportall_result, all, "all");
cmdline_parse_inst_t cmd_showportall = {
.f = cmd_showportall_parsed,
.data = NULL,
.help_str = "show|clear port "
- "info|summary|stats|xstats|fdir|stat_qmap|dcb_tc|cap all",
+ "info|summary|stats|xstats|fdir|dcb_tc|cap all",
.tokens = {
(void *)&cmd_showportall_show,
(void *)&cmd_showportall_port,
else if (!strcmp(res->what, "fdir"))
fdir_get_infos(res->portnum);
#endif
- else if (!strcmp(res->what, "stat_qmap"))
- nic_stats_mapping_display(res->portnum);
else if (!strcmp(res->what, "dcb_tc"))
port_dcb_info_display(res->portnum);
else if (!strcmp(res->what, "cap"))
TOKEN_STRING_INITIALIZER(struct cmd_showport_result, port, "port");
cmdline_parse_token_string_t cmd_showport_what =
TOKEN_STRING_INITIALIZER(struct cmd_showport_result, what,
- "info#summary#stats#xstats#fdir#stat_qmap#dcb_tc#cap");
+ "info#summary#stats#xstats#fdir#dcb_tc#cap");
cmdline_parse_token_num_t cmd_showport_portnum =
TOKEN_NUM_INITIALIZER(struct cmd_showport_result, portnum, RTE_UINT16);
.f = cmd_showport_parsed,
.data = NULL,
.help_str = "show|clear port "
- "info|summary|stats|xstats|fdir|stat_qmap|dcb_tc|cap "
+ "info|summary|stats|xstats|fdir|dcb_tc|cap "
"<port_id>",
.tokens = {
(void *)&cmd_showport_show,
diff_ns;
uint64_t mpps_rx, mpps_tx, mbps_rx, mbps_tx;
struct rte_eth_stats stats;
- struct rte_port *port = &ports[port_id];
- uint8_t i;
static const char *nic_stats_border = "########################";
printf("\n %s NIC statistics for port %-2d %s\n",
nic_stats_border, port_id, nic_stats_border);
- if ((!port->rx_queue_stats_mapping_enabled) && (!port->tx_queue_stats_mapping_enabled)) {
- printf(" RX-packets: %-10"PRIu64" RX-missed: %-10"PRIu64" RX-bytes: "
- "%-"PRIu64"\n",
- stats.ipackets, stats.imissed, stats.ibytes);
- printf(" RX-errors: %-"PRIu64"\n", stats.ierrors);
- printf(" RX-nombuf: %-10"PRIu64"\n",
- stats.rx_nombuf);
- printf(" TX-packets: %-10"PRIu64" TX-errors: %-10"PRIu64" TX-bytes: "
- "%-"PRIu64"\n",
- stats.opackets, stats.oerrors, stats.obytes);
- }
- else {
- printf(" RX-packets: %10"PRIu64" RX-errors: %10"PRIu64
- " RX-bytes: %10"PRIu64"\n",
- stats.ipackets, stats.ierrors, stats.ibytes);
- printf(" RX-errors: %10"PRIu64"\n", stats.ierrors);
- printf(" RX-nombuf: %10"PRIu64"\n",
- stats.rx_nombuf);
- printf(" TX-packets: %10"PRIu64" TX-errors: %10"PRIu64
- " TX-bytes: %10"PRIu64"\n",
- stats.opackets, stats.oerrors, stats.obytes);
- }
-
- if (port->rx_queue_stats_mapping_enabled) {
- printf("\n");
- for (i = 0; i < RTE_ETHDEV_QUEUE_STAT_CNTRS; i++) {
- printf(" Stats reg %2d RX-packets: %10"PRIu64
- " RX-errors: %10"PRIu64
- " RX-bytes: %10"PRIu64"\n",
- i, stats.q_ipackets[i], stats.q_errors[i], stats.q_ibytes[i]);
- }
- }
- if (port->tx_queue_stats_mapping_enabled) {
- printf("\n");
- for (i = 0; i < RTE_ETHDEV_QUEUE_STAT_CNTRS; i++) {
- printf(" Stats reg %2d TX-packets: %10"PRIu64
- " TX-bytes: %10"PRIu64"\n",
- i, stats.q_opackets[i], stats.q_obytes[i]);
- }
- }
+ printf(" RX-packets: %-10"PRIu64" RX-missed: %-10"PRIu64" RX-bytes: "
+ "%-"PRIu64"\n", stats.ipackets, stats.imissed, stats.ibytes);
+ printf(" RX-errors: %-"PRIu64"\n", stats.ierrors);
+ printf(" RX-nombuf: %-10"PRIu64"\n", stats.rx_nombuf);
+ printf(" TX-packets: %-10"PRIu64" TX-errors: %-10"PRIu64" TX-bytes: "
+ "%-"PRIu64"\n", stats.opackets, stats.oerrors, stats.obytes);
diff_ns = 0;
if (clock_gettime(CLOCK_TYPE_ID, &cur_time) == 0) {
}
}
-void
-nic_stats_mapping_display(portid_t port_id)
-{
- struct rte_port *port = &ports[port_id];
- uint16_t i;
-
- static const char *nic_stats_mapping_border = "########################";
-
- if (port_id_is_invalid(port_id, ENABLED_WARN)) {
- print_valid_ports();
- return;
- }
-
- if ((!port->rx_queue_stats_mapping_enabled) && (!port->tx_queue_stats_mapping_enabled)) {
- printf("Port id %d - either does not support queue statistic mapping or"
- " no queue statistic mapping set\n", port_id);
- return;
- }
-
- printf("\n %s NIC statistics mapping for port %-2d %s\n",
- nic_stats_mapping_border, port_id, nic_stats_mapping_border);
-
- if (port->rx_queue_stats_mapping_enabled) {
- for (i = 0; i < nb_rx_queue_stats_mappings; i++) {
- if (rx_queue_stats_mappings[i].port_id == port_id) {
- printf(" RX-queue %2d mapped to Stats Reg %2d\n",
- rx_queue_stats_mappings[i].queue_id,
- rx_queue_stats_mappings[i].stats_counter_id);
- }
- }
- printf("\n");
- }
-
-
- if (port->tx_queue_stats_mapping_enabled) {
- for (i = 0; i < nb_tx_queue_stats_mappings; i++) {
- if (tx_queue_stats_mappings[i].port_id == port_id) {
- printf(" TX-queue %2d mapped to Stats Reg %2d\n",
- tx_queue_stats_mappings[i].queue_id,
- tx_queue_stats_mappings[i].stats_counter_id);
- }
- }
- }
-
- printf(" %s####################################%s\n",
- nic_stats_mapping_border, nic_stats_mapping_border);
-}
-
void
rx_queue_infos_display(portid_t port_id, uint16_t queue_id)
{
{
if (txq_id < nb_txq)
return 0;
- printf("Invalid TX queue %d (must be < nb_rxq=%d)\n", txq_id, nb_txq);
+ printf("Invalid TX queue %d (must be < nb_txq=%d)\n", txq_id, nb_txq);
return 1;
}
void
set_qmap(portid_t port_id, uint8_t is_rx, uint16_t queue_id, uint8_t map_value)
{
- uint16_t i;
- uint8_t existing_mapping_found = 0;
+ int ret;
if (port_id_is_invalid(port_id, ENABLED_WARN))
return;
if (map_value >= RTE_ETHDEV_QUEUE_STAT_CNTRS) {
printf("map_value not in required range 0..%d\n",
- RTE_ETHDEV_QUEUE_STAT_CNTRS - 1);
+ RTE_ETHDEV_QUEUE_STAT_CNTRS - 1);
return;
}
- if (!is_rx) { /*then tx*/
- for (i = 0; i < nb_tx_queue_stats_mappings; i++) {
- if ((tx_queue_stats_mappings[i].port_id == port_id) &&
- (tx_queue_stats_mappings[i].queue_id == queue_id)) {
- tx_queue_stats_mappings[i].stats_counter_id = map_value;
- existing_mapping_found = 1;
- break;
- }
- }
- if (!existing_mapping_found) { /* A new additional mapping... */
- tx_queue_stats_mappings[nb_tx_queue_stats_mappings].port_id = port_id;
- tx_queue_stats_mappings[nb_tx_queue_stats_mappings].queue_id = queue_id;
- tx_queue_stats_mappings[nb_tx_queue_stats_mappings].stats_counter_id = map_value;
- nb_tx_queue_stats_mappings++;
- }
- }
- else { /*rx*/
- for (i = 0; i < nb_rx_queue_stats_mappings; i++) {
- if ((rx_queue_stats_mappings[i].port_id == port_id) &&
- (rx_queue_stats_mappings[i].queue_id == queue_id)) {
- rx_queue_stats_mappings[i].stats_counter_id = map_value;
- existing_mapping_found = 1;
- break;
- }
+ if (!is_rx) { /* tx */
+ ret = rte_eth_dev_set_tx_queue_stats_mapping(port_id, queue_id,
+ map_value);
+ if (ret) {
+ printf("failed to set tx queue stats mapping.\n");
+ return;
}
- if (!existing_mapping_found) { /* A new additional mapping... */
- rx_queue_stats_mappings[nb_rx_queue_stats_mappings].port_id = port_id;
- rx_queue_stats_mappings[nb_rx_queue_stats_mappings].queue_id = queue_id;
- rx_queue_stats_mappings[nb_rx_queue_stats_mappings].stats_counter_id = map_value;
- nb_rx_queue_stats_mappings++;
+ } else { /* rx */
+ ret = rte_eth_dev_set_rx_queue_stats_mapping(port_id, queue_id,
+ map_value);
+ if (ret) {
+ printf("failed to set rx queue stats mapping.\n");
+ return;
}
}
}
"(0 <= N <= value of txd).\n");
printf(" --txrst=N: set the transmit RS bit threshold of TX rings to N "
"(0 <= N <= value of txd).\n");
- printf(" --tx-queue-stats-mapping=(port,queue,mapping)[,(port,queue,mapping]: "
- "tx queues statistics counters mapping "
- "(0 <= mapping <= %d).\n", RTE_ETHDEV_QUEUE_STAT_CNTRS - 1);
- printf(" --rx-queue-stats-mapping=(port,queue,mapping)[,(port,queue,mapping]: "
- "rx queues statistics counters mapping "
- "(0 <= mapping <= %d).\n", RTE_ETHDEV_QUEUE_STAT_CNTRS - 1);
printf(" --no-flush-rx: Don't flush RX streams before forwarding."
" Used mainly with PCAP drivers.\n");
printf(" --rxoffs=X[,Y]*: set RX segment offsets for split.\n");
set_fwd_ports_mask((uint64_t) pm);
}
-
-static int
-parse_queue_stats_mapping_config(const char *q_arg, int is_rx)
-{
- char s[256];
- const char *p, *p0 = q_arg;
- char *end;
- enum fieldnames {
- FLD_PORT = 0,
- FLD_QUEUE,
- FLD_STATS_COUNTER,
- _NUM_FLD
- };
- unsigned long int_fld[_NUM_FLD];
- char *str_fld[_NUM_FLD];
- int i;
- unsigned size;
-
- /* reset from value set at definition */
- is_rx ? (nb_rx_queue_stats_mappings = 0) : (nb_tx_queue_stats_mappings = 0);
-
- while ((p = strchr(p0,'(')) != NULL) {
- ++p;
- if((p0 = strchr(p,')')) == NULL)
- return -1;
-
- size = p0 - p;
- if(size >= sizeof(s))
- return -1;
-
- snprintf(s, sizeof(s), "%.*s", size, p);
- if (rte_strsplit(s, sizeof(s), str_fld, _NUM_FLD, ',') != _NUM_FLD)
- return -1;
- for (i = 0; i < _NUM_FLD; i++){
- errno = 0;
- int_fld[i] = strtoul(str_fld[i], &end, 0);
- if (errno != 0 || end == str_fld[i] || int_fld[i] > 255)
- return -1;
- }
- /* Check mapping field is in correct range (0..RTE_ETHDEV_QUEUE_STAT_CNTRS-1) */
- if (int_fld[FLD_STATS_COUNTER] >= RTE_ETHDEV_QUEUE_STAT_CNTRS) {
- printf("Stats counter not in the correct range 0..%d\n",
- RTE_ETHDEV_QUEUE_STAT_CNTRS - 1);
- return -1;
- }
-
- if (!is_rx) {
- if ((nb_tx_queue_stats_mappings >=
- MAX_TX_QUEUE_STATS_MAPPINGS)) {
- printf("exceeded max number of TX queue "
- "statistics mappings: %hu\n",
- nb_tx_queue_stats_mappings);
- return -1;
- }
- tx_queue_stats_mappings_array[nb_tx_queue_stats_mappings].port_id =
- (uint8_t)int_fld[FLD_PORT];
- tx_queue_stats_mappings_array[nb_tx_queue_stats_mappings].queue_id =
- (uint8_t)int_fld[FLD_QUEUE];
- tx_queue_stats_mappings_array[nb_tx_queue_stats_mappings].stats_counter_id =
- (uint8_t)int_fld[FLD_STATS_COUNTER];
- ++nb_tx_queue_stats_mappings;
- }
- else {
- if ((nb_rx_queue_stats_mappings >=
- MAX_RX_QUEUE_STATS_MAPPINGS)) {
- printf("exceeded max number of RX queue "
- "statistics mappings: %hu\n",
- nb_rx_queue_stats_mappings);
- return -1;
- }
- rx_queue_stats_mappings_array[nb_rx_queue_stats_mappings].port_id =
- (uint8_t)int_fld[FLD_PORT];
- rx_queue_stats_mappings_array[nb_rx_queue_stats_mappings].queue_id =
- (uint8_t)int_fld[FLD_QUEUE];
- rx_queue_stats_mappings_array[nb_rx_queue_stats_mappings].stats_counter_id =
- (uint8_t)int_fld[FLD_STATS_COUNTER];
- ++nb_rx_queue_stats_mappings;
- }
-
- }
-/* Reassign the rx/tx_queue_stats_mappings pointer to point to this newly populated array rather */
-/* than to the default array (that was set at its definition) */
- is_rx ? (rx_queue_stats_mappings = rx_queue_stats_mappings_array) :
- (tx_queue_stats_mappings = tx_queue_stats_mappings_array);
- return 0;
-}
-
static void
print_invalid_socket_id_error(void)
{
{ "rxht", 1, 0, 0 },
{ "rxwt", 1, 0, 0 },
{ "rxfreet", 1, 0, 0 },
- { "tx-queue-stats-mapping", 1, 0, 0 },
- { "rx-queue-stats-mapping", 1, 0, 0 },
{ "no-flush-rx", 0, 0, 0 },
{ "flow-isolate-all", 0, 0, 0 },
{ "rxoffs", 1, 0, 0 },
else
rte_exit(EXIT_FAILURE, "rxfreet must be >= 0\n");
}
- if (!strcmp(lgopts[opt_idx].name, "tx-queue-stats-mapping")) {
- if (parse_queue_stats_mapping_config(optarg, TX)) {
- rte_exit(EXIT_FAILURE,
- "invalid TX queue statistics mapping config entered\n");
- }
- }
- if (!strcmp(lgopts[opt_idx].name, "rx-queue-stats-mapping")) {
- if (parse_queue_stats_mapping_config(optarg, RX)) {
- rte_exit(EXIT_FAILURE,
- "invalid RX queue statistics mapping config entered\n");
- }
- }
if (!strcmp(lgopts[opt_idx].name, "rxoffs")) {
unsigned int seg_off[MAX_SEGS_BUFFER_SPLIT];
unsigned int nb_offs;
volatile int test_done = 1; /* stop packet forwarding when set to 1. */
-struct queue_stats_mappings tx_queue_stats_mappings_array[MAX_TX_QUEUE_STATS_MAPPINGS];
-struct queue_stats_mappings rx_queue_stats_mappings_array[MAX_RX_QUEUE_STATS_MAPPINGS];
-
-struct queue_stats_mappings *tx_queue_stats_mappings = tx_queue_stats_mappings_array;
-struct queue_stats_mappings *rx_queue_stats_mappings = rx_queue_stats_mappings_array;
-
-uint16_t nb_tx_queue_stats_mappings = 0;
-uint16_t nb_rx_queue_stats_mappings = 0;
-
/*
* Display zero values by default for xstats
*/
/* Forward function declarations */
static void setup_attached_port(portid_t pi);
-static void map_port_queue_stats_mapping_registers(portid_t pi,
- struct rte_port *port);
static void check_all_ports_link_status(uint32_t port_mask);
static int eth_event_callback(portid_t port_id,
enum rte_eth_event_type type,
fwd_cycles += fs->core_cycles;
}
for (i = 0; i < cur_fwd_config.nb_fwd_ports; i++) {
- uint8_t j;
-
pt_id = fwd_ports_ids[i];
port = &ports[pt_id];
printf("\n %s Forward statistics for port %-2d %s\n",
fwd_stats_border, pt_id, fwd_stats_border);
- if (!port->rx_queue_stats_mapping_enabled &&
- !port->tx_queue_stats_mapping_enabled) {
- printf(" RX-packets: %-14"PRIu64
- " RX-dropped: %-14"PRIu64
- "RX-total: %-"PRIu64"\n",
- stats.ipackets, stats.imissed,
- stats.ipackets + stats.imissed);
-
- if (cur_fwd_eng == &csum_fwd_engine)
- printf(" Bad-ipcsum: %-14"PRIu64
- " Bad-l4csum: %-14"PRIu64
- "Bad-outer-l4csum: %-14"PRIu64"\n",
- ports_stats[pt_id].rx_bad_ip_csum,
- ports_stats[pt_id].rx_bad_l4_csum,
- ports_stats[pt_id].rx_bad_outer_l4_csum);
- if (stats.ierrors + stats.rx_nombuf > 0) {
- printf(" RX-error: %-"PRIu64"\n",
- stats.ierrors);
- printf(" RX-nombufs: %-14"PRIu64"\n",
- stats.rx_nombuf);
- }
+ printf(" RX-packets: %-14"PRIu64" RX-dropped: %-14"PRIu64
+ "RX-total: %-"PRIu64"\n", stats.ipackets, stats.imissed,
+ stats.ipackets + stats.imissed);
- printf(" TX-packets: %-14"PRIu64
- " TX-dropped: %-14"PRIu64
- "TX-total: %-"PRIu64"\n",
- stats.opackets, ports_stats[pt_id].tx_dropped,
- stats.opackets + ports_stats[pt_id].tx_dropped);
- } else {
- printf(" RX-packets: %14"PRIu64
- " RX-dropped:%14"PRIu64
- " RX-total:%14"PRIu64"\n",
- stats.ipackets, stats.imissed,
- stats.ipackets + stats.imissed);
-
- if (cur_fwd_eng == &csum_fwd_engine)
- printf(" Bad-ipcsum:%14"PRIu64
- " Bad-l4csum:%14"PRIu64
- " Bad-outer-l4csum: %-14"PRIu64"\n",
- ports_stats[pt_id].rx_bad_ip_csum,
- ports_stats[pt_id].rx_bad_l4_csum,
- ports_stats[pt_id].rx_bad_outer_l4_csum);
- if ((stats.ierrors + stats.rx_nombuf) > 0) {
- printf(" RX-error:%"PRIu64"\n", stats.ierrors);
- printf(" RX-nombufs: %14"PRIu64"\n",
- stats.rx_nombuf);
- }
-
- printf(" TX-packets: %14"PRIu64
- " TX-dropped:%14"PRIu64
- " TX-total:%14"PRIu64"\n",
- stats.opackets, ports_stats[pt_id].tx_dropped,
- stats.opackets + ports_stats[pt_id].tx_dropped);
+ if (cur_fwd_eng == &csum_fwd_engine)
+ printf(" Bad-ipcsum: %-14"PRIu64
+ " Bad-l4csum: %-14"PRIu64
+ "Bad-outer-l4csum: %-14"PRIu64"\n",
+ ports_stats[pt_id].rx_bad_ip_csum,
+ ports_stats[pt_id].rx_bad_l4_csum,
+ ports_stats[pt_id].rx_bad_outer_l4_csum);
+ if (stats.ierrors + stats.rx_nombuf > 0) {
+ printf(" RX-error: %-"PRIu64"\n", stats.ierrors);
+ printf(" RX-nombufs: %-14"PRIu64"\n", stats.rx_nombuf);
}
+ printf(" TX-packets: %-14"PRIu64" TX-dropped: %-14"PRIu64
+ "TX-total: %-"PRIu64"\n",
+ stats.opackets, ports_stats[pt_id].tx_dropped,
+ stats.opackets + ports_stats[pt_id].tx_dropped);
+
if (record_burst_stats) {
if (ports_stats[pt_id].rx_stream)
pkt_burst_stats_display("RX",
&ports_stats[pt_id].rx_stream->rx_burst_stats);
if (ports_stats[pt_id].tx_stream)
pkt_burst_stats_display("TX",
- &ports_stats[pt_id].tx_stream->tx_burst_stats);
- }
-
- if (port->rx_queue_stats_mapping_enabled) {
- printf("\n");
- for (j = 0; j < RTE_ETHDEV_QUEUE_STAT_CNTRS; j++) {
- printf(" Stats reg %2d RX-packets:%14"PRIu64
- " RX-errors:%14"PRIu64
- " RX-bytes:%14"PRIu64"\n",
- j, stats.q_ipackets[j],
- stats.q_errors[j], stats.q_ibytes[j]);
- }
- printf("\n");
- }
- if (port->tx_queue_stats_mapping_enabled) {
- for (j = 0; j < RTE_ETHDEV_QUEUE_STAT_CNTRS; j++) {
- printf(" Stats reg %2d TX-packets:%14"PRIu64
- " TX-bytes:%14"
- PRIu64"\n",
- j, stats.q_opackets[j],
- stats.q_obytes[j]);
- }
+ &ports_stats[pt_id].tx_stream->tx_burst_stats);
}
printf(" %s--------------------------------%s\n",
rxtx_config_display();
fwd_stats_reset();
- for (i = 0; i < cur_fwd_config.nb_fwd_ports; i++) {
- pt_id = fwd_ports_ids[i];
- port = &ports[pt_id];
- map_port_queue_stats_mapping_registers(pt_id, port);
- }
if (with_tx_first) {
port_fwd_begin = tx_only_engine.port_fwd_begin;
if (port_fwd_begin != NULL) {
}
}
-static int
-set_tx_queue_stats_mapping_registers(portid_t port_id, struct rte_port *port)
-{
- uint16_t i;
- int diag;
- uint8_t mapping_found = 0;
-
- for (i = 0; i < nb_tx_queue_stats_mappings; i++) {
- if ((tx_queue_stats_mappings[i].port_id == port_id) &&
- (tx_queue_stats_mappings[i].queue_id < nb_txq )) {
- diag = rte_eth_dev_set_tx_queue_stats_mapping(port_id,
- tx_queue_stats_mappings[i].queue_id,
- tx_queue_stats_mappings[i].stats_counter_id);
- if (diag != 0)
- return diag;
- mapping_found = 1;
- }
- }
- if (mapping_found)
- port->tx_queue_stats_mapping_enabled = 1;
- return 0;
-}
-
-static int
-set_rx_queue_stats_mapping_registers(portid_t port_id, struct rte_port *port)
-{
- uint16_t i;
- int diag;
- uint8_t mapping_found = 0;
-
- for (i = 0; i < nb_rx_queue_stats_mappings; i++) {
- if ((rx_queue_stats_mappings[i].port_id == port_id) &&
- (rx_queue_stats_mappings[i].queue_id < nb_rxq )) {
- diag = rte_eth_dev_set_rx_queue_stats_mapping(port_id,
- rx_queue_stats_mappings[i].queue_id,
- rx_queue_stats_mappings[i].stats_counter_id);
- if (diag != 0)
- return diag;
- mapping_found = 1;
- }
- }
- if (mapping_found)
- port->rx_queue_stats_mapping_enabled = 1;
- return 0;
-}
-
-static void
-map_port_queue_stats_mapping_registers(portid_t pi, struct rte_port *port)
-{
- int diag = 0;
-
- diag = set_tx_queue_stats_mapping_registers(pi, port);
- if (diag != 0) {
- if (diag == -ENOTSUP) {
- port->tx_queue_stats_mapping_enabled = 0;
- printf("TX queue stats mapping not supported port id=%d\n", pi);
- }
- else
- rte_exit(EXIT_FAILURE,
- "set_tx_queue_stats_mapping_registers "
- "failed for port id=%d diag=%d\n",
- pi, diag);
- }
-
- diag = set_rx_queue_stats_mapping_registers(pi, port);
- if (diag != 0) {
- if (diag == -ENOTSUP) {
- port->rx_queue_stats_mapping_enabled = 0;
- printf("RX queue stats mapping not supported port id=%d\n", pi);
- }
- else
- rte_exit(EXIT_FAILURE,
- "set_rx_queue_stats_mapping_registers "
- "failed for port id=%d diag=%d\n",
- pi, diag);
- }
-}
-
static void
rxtx_port_config(struct rte_port *port)
{
if (ret != 0)
return;
- map_port_queue_stats_mapping_registers(pid, port);
#if defined RTE_NET_IXGBE && defined RTE_LIBRTE_IXGBE_BYPASS
rte_pmd_ixgbe_bypass_init(pid);
#endif
if (retval != 0)
return retval;
- map_port_queue_stats_mapping_registers(pid, rte_port);
-
rte_port->dcb_flag = 1;
return 0;
uint16_t tunnel_tso_segsz; /**< Segmentation offload MSS for tunneled pkts. */
uint16_t tx_vlan_id;/**< The tag ID */
uint16_t tx_vlan_id_outer;/**< The outer tag ID */
- uint8_t tx_queue_stats_mapping_enabled;
- uint8_t rx_queue_stats_mapping_enabled;
volatile uint16_t port_status; /**< port started or not */
uint8_t need_setup; /**< port just attached */
uint8_t need_reconfig; /**< need reconfiguring port or not */
DCB_ENABLED
};
-#define MAX_TX_QUEUE_STATS_MAPPINGS 1024 /* MAX_PORT of 32 @ 32 tx_queues/port */
-#define MAX_RX_QUEUE_STATS_MAPPINGS 4096 /* MAX_PORT of 32 @ 128 rx_queues/port */
-
-struct queue_stats_mappings {
- portid_t port_id;
- uint16_t queue_id;
- uint8_t stats_counter_id;
-} __rte_cache_aligned;
-
-extern struct queue_stats_mappings tx_queue_stats_mappings_array[];
-extern struct queue_stats_mappings rx_queue_stats_mappings_array[];
-
-/* Assign both tx and rx queue stats mappings to the same default values */
-extern struct queue_stats_mappings *tx_queue_stats_mappings;
-extern struct queue_stats_mappings *rx_queue_stats_mappings;
-
-extern uint16_t nb_tx_queue_stats_mappings;
-extern uint16_t nb_rx_queue_stats_mappings;
-
extern uint8_t xstats_hide_zero; /**< Hide zero values for xstats display */
/* globals used for configuration */
void nic_stats_clear(portid_t port_id);
void nic_xstats_display(portid_t port_id);
void nic_xstats_clear(portid_t port_id);
-void nic_stats_mapping_display(portid_t port_id);
void device_infos_display(const char *identifier);
void port_infos_display(portid_t port_id);
void port_summary_display(portid_t port_id);