app/procinfo: dump detailed info for Rx/Tx descriptors
This patch support Rx/Tx descriptor dump The command is like: dpdk-proc-info -a xxxx:xx:xx.x --file-prefix=xxx -- --show-rx-descriptor queue_id:offset:num dpdk-proc-info -a xxxx:xx:xx.x --file-prefix=xxx -- --show-tx-descriptor queue_id:offset:num queue_id: A queue identifier on this port. offset: The offset of the descriptor starting from tail. num: The number of the descriptors to dump. Signed-off-by: Min Hu (Connor) <humin29@huawei.com> Signed-off-by: Dongdong Liu <liudongdong3@huawei.com> Acked-by: Reshma Pattan <reshma.pattan@intel.com>
This commit is contained in:
parent
a6d81dc032
commit
6ff065b221
@ -117,6 +117,21 @@ static uint32_t enable_shw_rss_reta;
|
|||||||
/* Enable show module eeprom information. */
|
/* Enable show module eeprom information. */
|
||||||
static uint32_t enable_shw_module_eeprom;
|
static uint32_t enable_shw_module_eeprom;
|
||||||
|
|
||||||
|
/* Enable dump Rx/Tx descriptor. */
|
||||||
|
static uint32_t enable_shw_rx_desc_dump;
|
||||||
|
static uint32_t enable_shw_tx_desc_dump;
|
||||||
|
|
||||||
|
#define DESC_PARAM_NUM 3
|
||||||
|
|
||||||
|
struct desc_param {
|
||||||
|
uint16_t queue_id; /* A queue identifier on this port. */
|
||||||
|
uint16_t offset; /* The offset of the descriptor starting from tail. */
|
||||||
|
uint16_t num; /* The number of the descriptors to dump. */
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct desc_param rx_desc_param;
|
||||||
|
static struct desc_param tx_desc_param;
|
||||||
|
|
||||||
/* display usage */
|
/* display usage */
|
||||||
static void
|
static void
|
||||||
proc_info_usage(const char *prgname)
|
proc_info_usage(const char *prgname)
|
||||||
@ -148,6 +163,14 @@ proc_info_usage(const char *prgname)
|
|||||||
" --firmware-version: to display ethdev firmware version\n"
|
" --firmware-version: to display ethdev firmware version\n"
|
||||||
" --show-rss-reta: to display ports redirection table\n"
|
" --show-rss-reta: to display ports redirection table\n"
|
||||||
" --show-module-eeprom: to display ports module eeprom information\n"
|
" --show-module-eeprom: to display ports module eeprom information\n"
|
||||||
|
" --show-rx-descriptor queue_id:offset:num to display ports Rx descriptor information. "
|
||||||
|
"queue_id: A Rx queue identifier on this port. "
|
||||||
|
"offset: The offset of the descriptor starting from tail. "
|
||||||
|
"num: The number of the descriptors to dump.\n"
|
||||||
|
" --show-tx-descriptor queue_id:offset:num to display ports Tx descriptor information. "
|
||||||
|
"queue_id: A Tx queue identifier on this port. "
|
||||||
|
"offset: The offset of the descriptor starting from tail. "
|
||||||
|
"num: The number of the descriptors to dump.\n"
|
||||||
" --iter-mempool=name: iterate mempool elements to display content\n"
|
" --iter-mempool=name: iterate mempool elements to display content\n"
|
||||||
" --dump-regs=file-prefix: dump registers to file with the file-prefix\n",
|
" --dump-regs=file-prefix: dump registers to file with the file-prefix\n",
|
||||||
prgname);
|
prgname);
|
||||||
@ -200,6 +223,19 @@ parse_xstats_ids(char *list, uint64_t *ids, int limit) {
|
|||||||
return length;
|
return length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
parse_descriptor_param(char *list, struct desc_param *desc)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = sscanf(list, "%hu:%hu:%hu", &desc->queue_id, &desc->offset,
|
||||||
|
&desc->num);
|
||||||
|
if (ret != DESC_PARAM_NUM)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
proc_info_preparse_args(int argc, char **argv)
|
proc_info_preparse_args(int argc, char **argv)
|
||||||
{
|
{
|
||||||
@ -264,6 +300,8 @@ proc_info_parse_args(int argc, char **argv)
|
|||||||
{"firmware-version", 0, NULL, 0},
|
{"firmware-version", 0, NULL, 0},
|
||||||
{"show-rss-reta", 0, NULL, 0},
|
{"show-rss-reta", 0, NULL, 0},
|
||||||
{"show-module-eeprom", 0, NULL, 0},
|
{"show-module-eeprom", 0, NULL, 0},
|
||||||
|
{"show-rx-descriptor", required_argument, NULL, 1},
|
||||||
|
{"show-tx-descriptor", required_argument, NULL, 1},
|
||||||
{NULL, 0, 0, 0}
|
{NULL, 0, 0, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -367,6 +405,26 @@ proc_info_parse_args(int argc, char **argv)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
nb_xstats_ids = ret;
|
nb_xstats_ids = ret;
|
||||||
|
} else if (!strncmp(long_option[option_index].name,
|
||||||
|
"show-rx-descriptor", MAX_LONG_OPT_SZ)) {
|
||||||
|
int ret = parse_descriptor_param(optarg,
|
||||||
|
&rx_desc_param);
|
||||||
|
if (ret < 0) {
|
||||||
|
fprintf(stderr, "Error parsing Rx descriptor param: %s\n",
|
||||||
|
strerror(-ret));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
enable_shw_rx_desc_dump = 1;
|
||||||
|
} else if (!strncmp(long_option[option_index].name,
|
||||||
|
"show-tx-descriptor", MAX_LONG_OPT_SZ)) {
|
||||||
|
int ret = parse_descriptor_param(optarg,
|
||||||
|
&tx_desc_param);
|
||||||
|
if (ret < 0) {
|
||||||
|
fprintf(stderr, "Error parsing Tx descriptor param: %s\n",
|
||||||
|
strerror(-ret));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
enable_shw_tx_desc_dump = 1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -1644,6 +1702,48 @@ show_module_eeprom_info(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
nic_rx_descriptor_display(uint16_t port_id, struct desc_param *desc)
|
||||||
|
{
|
||||||
|
uint16_t queue_id = desc->queue_id;
|
||||||
|
uint16_t offset = desc->offset;
|
||||||
|
uint16_t num = desc->num;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
snprintf(bdr_str, MAX_STRING_LEN, " show - Rx descriptor ");
|
||||||
|
STATS_BDR_STR(10, bdr_str);
|
||||||
|
|
||||||
|
printf("Dump ethdev Rx descriptor for port %u, queue %u, offset %u, num %u\n",
|
||||||
|
port_id, queue_id, offset, num);
|
||||||
|
|
||||||
|
ret = rte_eth_rx_descriptor_dump(port_id, queue_id, offset, num,
|
||||||
|
stdout);
|
||||||
|
if (ret < 0)
|
||||||
|
fprintf(stderr, "Error dumping ethdev Rx descriptor: %s\n",
|
||||||
|
strerror(-ret));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
nic_tx_descriptor_display(uint16_t port_id, struct desc_param *desc)
|
||||||
|
{
|
||||||
|
uint16_t queue_id = desc->queue_id;
|
||||||
|
uint16_t offset = desc->offset;
|
||||||
|
uint16_t num = desc->num;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
snprintf(bdr_str, MAX_STRING_LEN, " show - Tx descriptor ");
|
||||||
|
STATS_BDR_STR(10, bdr_str);
|
||||||
|
|
||||||
|
printf("Dump ethdev Tx descriptor for port %u, queue %u, offset %u, num %u\n",
|
||||||
|
port_id, queue_id, offset, num);
|
||||||
|
|
||||||
|
ret = rte_eth_tx_descriptor_dump(port_id, queue_id, offset, num,
|
||||||
|
stdout);
|
||||||
|
if (ret < 0)
|
||||||
|
fprintf(stderr, "Error dumping ethdev Tx descriptor: %s\n",
|
||||||
|
strerror(-ret));
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
main(int argc, char **argv)
|
main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
@ -1732,6 +1832,10 @@ main(int argc, char **argv)
|
|||||||
metrics_display(i);
|
metrics_display(i);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (enable_shw_rx_desc_dump)
|
||||||
|
nic_rx_descriptor_display(i, &rx_desc_param);
|
||||||
|
if (enable_shw_tx_desc_dump)
|
||||||
|
nic_tx_descriptor_display(i, &tx_desc_param);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef RTE_LIB_METRICS
|
#ifdef RTE_LIB_METRICS
|
||||||
|
@ -21,7 +21,8 @@ The application has a number of command line options:
|
|||||||
--stats-reset | --xstats-reset] [ --show-port | --show-tm | --show-crypto |
|
--stats-reset | --xstats-reset] [ --show-port | --show-tm | --show-crypto |
|
||||||
--show-ring[=name] | --show-mempool[=name] | --iter-mempool=name |
|
--show-ring[=name] | --show-mempool[=name] | --iter-mempool=name |
|
||||||
--show-port-private | --version | --firmware-version | --show-rss-reta |
|
--show-port-private | --version | --firmware-version | --show-rss-reta |
|
||||||
--show-module-eeprom ]
|
--show-module-eeprom | --show-rx-descriptor queue_id:offset:num |
|
||||||
|
--show-tx-descriptor queue_id:offset:num ]
|
||||||
|
|
||||||
Parameters
|
Parameters
|
||||||
~~~~~~~~~~
|
~~~~~~~~~~
|
||||||
@ -86,6 +87,20 @@ The show-rss-reta parameter displays ports rss redirection table.
|
|||||||
**--show-module-eeprom**
|
**--show-module-eeprom**
|
||||||
The show-module-eeprom parameter displays ports module eeprom information.
|
The show-module-eeprom parameter displays ports module eeprom information.
|
||||||
|
|
||||||
|
**--show-rx-descriptor queue_id:offset:num**
|
||||||
|
The show-rx-descriptor parameter displays ports Rx descriptor information
|
||||||
|
specified by queue_id, offset and num.
|
||||||
|
queue_id: A Rx queue identifier on this port.
|
||||||
|
offset: The offset of the descriptor starting from tail.
|
||||||
|
num: The number of the descriptors to dump.
|
||||||
|
|
||||||
|
**--show-tx-descriptor queue_id:offset:num**
|
||||||
|
The show-tx-descriptor parameter displays ports Tx descriptor information
|
||||||
|
specified by queue_id, offset and num.
|
||||||
|
queue_id: A Tx queue identifier on this port.
|
||||||
|
offset: The offset of the descriptor starting from tail.
|
||||||
|
num: The number of the descriptors to dump.
|
||||||
|
|
||||||
Limitations
|
Limitations
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user