HNS3_RX_BD_ERROR_STATS_FIELD_OFFSET(ol4_csum_erros)}
};
-/* The statistic of errors in Tx */
-static const struct hns3_xstats_name_offset hns3_tx_error_strings[] = {
- {"TX_PKT_LEN_ERRORS",
- HNS3_TX_ERROR_STATS_FIELD_OFFSET(pkt_len_errors)}
-};
-
#define HNS3_NUM_MAC_STATS (sizeof(hns3_mac_strings) / \
sizeof(hns3_mac_strings[0]))
#define HNS3_NUM_RX_BD_ERROR_XSTATS (sizeof(hns3_rx_bd_error_strings) / \
sizeof(hns3_rx_bd_error_strings[0]))
-#define HNS3_NUM_TX_ERROR_XSTATS (sizeof(hns3_tx_error_strings) / \
- sizeof(hns3_tx_error_strings[0]))
-
#define HNS3_FIX_NUM_STATS (HNS3_NUM_MAC_STATS + HNS3_NUM_ERROR_INT_XSTATS + \
HNS3_NUM_RESET_XSTATS)
struct hns3_hw *hw = &hns->hw;
struct hns3_tqp_stats *stats = &hw->tqp_stats;
struct hns3_rx_queue *rxq;
+ struct hns3_tx_queue *txq;
uint64_t cnt;
uint64_t num;
uint16_t i;
return ret;
}
- rte_stats->ipackets = stats->rcb_rx_ring_pktnum_rcd;
- rte_stats->opackets = stats->rcb_tx_ring_pktnum_rcd;
- rte_stats->rx_nombuf = eth_dev->data->rx_mbuf_alloc_failed;
-
- num = RTE_MIN(RTE_ETHDEV_QUEUE_STAT_CNTRS, hw->tqps_num);
- for (i = 0; i < num; i++) {
- rte_stats->q_ipackets[i] = stats->rcb_rx_ring_pktnum[i];
- rte_stats->q_opackets[i] = stats->rcb_tx_ring_pktnum[i];
- }
-
+ /* Get the error stats of received packets */
num = RTE_MIN(RTE_ETHDEV_QUEUE_STAT_CNTRS, eth_dev->data->nb_rx_queues);
for (i = 0; i != num; ++i) {
rxq = eth_dev->data->rx_queues[i];
if (rxq) {
- cnt = rxq->errors;
+ cnt = rxq->l2_errors + rxq->pkt_len_errors;
rte_stats->q_errors[i] = cnt;
+ rte_stats->q_ipackets[i] =
+ stats->rcb_rx_ring_pktnum[i] - cnt;
rte_stats->ierrors += cnt;
}
}
+ /* Get the error stats of transmitted packets */
+ num = RTE_MIN(RTE_ETHDEV_QUEUE_STAT_CNTRS, eth_dev->data->nb_tx_queues);
+ for (i = 0; i < num; i++) {
+ txq = eth_dev->data->tx_queues[i];
+ if (txq)
+ rte_stats->q_opackets[i] = stats->rcb_tx_ring_pktnum[i];
+ }
+
+ rte_stats->oerrors = 0;
+ rte_stats->ipackets = stats->rcb_rx_ring_pktnum_rcd -
+ rte_stats->ierrors;
+ rte_stats->opackets = stats->rcb_tx_ring_pktnum_rcd -
+ rte_stats->oerrors;
+ rte_stats->rx_nombuf = eth_dev->data->rx_mbuf_alloc_failed;
return 0;
}
struct hns3_tqp_stats *stats = &hw->tqp_stats;
struct hns3_cmd_desc desc_reset;
struct hns3_rx_queue *rxq;
- struct hns3_tx_queue *txq;
uint16_t i;
int ret;
rxq->l4_csum_erros = 0;
rxq->ol3_csum_erros = 0;
rxq->ol4_csum_erros = 0;
- rxq->errors = 0;
}
-
- txq = eth_dev->data->tx_queues[i];
- if (txq)
- txq->pkt_len_errors = 0;
}
memset(stats, 0, sizeof(struct hns3_tqp_stats));
if (hns->is_vf)
return dev->data->nb_rx_queues * HNS3_NUM_RX_BD_ERROR_XSTATS +
- dev->data->nb_tx_queues * HNS3_NUM_TX_ERROR_XSTATS +
HNS3_NUM_RESET_XSTATS;
else
return dev->data->nb_rx_queues * HNS3_NUM_RX_BD_ERROR_XSTATS +
- dev->data->nb_tx_queues * HNS3_NUM_TX_ERROR_XSTATS +
HNS3_FIX_NUM_STATS;
}
struct hns3_mac_stats *mac_stats = &hw->mac_stats;
struct hns3_reset_stats *reset_stats = &hw->reset.stats;
struct hns3_rx_queue *rxq;
- struct hns3_tx_queue *txq;
uint16_t i, j;
char *addr;
int count;
}
}
- /* Get the Tx errors stats */
- for (j = 0; j != dev->data->nb_tx_queues; ++j) {
- for (i = 0; i < HNS3_NUM_TX_ERROR_XSTATS; i++) {
- txq = dev->data->tx_queues[j];
- addr = (char *)txq + hns3_tx_error_strings[i].offset;
- xstats[count].value = *(uint64_t *)addr;
- xstats[count].id = count;
- count++;
- }
- }
return count;
}
count++;
}
}
- for (j = 0; j < dev->data->nb_tx_queues; j++) {
- for (i = 0; i < HNS3_NUM_TX_ERROR_XSTATS; i++) {
- snprintf(xstats_names[count].name,
- sizeof(xstats_names[count].name),
- "tx_q%u%s", j, hns3_tx_error_strings[i].name);
- count++;
- }
- }
return count;
}
struct hns3_mac_stats *mac_stats = &hw->mac_stats;
struct hns3_reset_stats *reset_stats = &hw->reset.stats;
struct hns3_rx_queue *rxq;
- struct hns3_tx_queue *txq;
const uint32_t cnt_stats = hns3_xstats_calc_num(dev);
uint64_t *values_copy;
uint64_t len;
}
}
- for (j = 0; j != dev->data->nb_tx_queues; ++j) {
- for (i = 0; i < HNS3_NUM_TX_ERROR_XSTATS; i++) {
- txq = dev->data->tx_queues[j];
- addr = (char *)txq + hns3_tx_error_strings[i].offset;
- values_copy[count] = *(uint64_t *)addr;
- count++;
- }
- }
-
for (i = 0; i < size; i++) {
if (ids[i] >= cnt_stats) {
hns3_err(hw, "ids[%d] (%" PRIx64 ") is invalid, "
count_name++;
}
}
- for (j = 0; j != dev->data->nb_rx_queues; ++j) {
- for (i = 0; i < HNS3_NUM_TX_ERROR_XSTATS; i++) {
- snprintf(xstats_names_copy[count_name].name,
- sizeof(xstats_names_copy[count_name].name),
- "tx_q%u%s", j, hns3_tx_error_strings[i].name);
- count_name++;
- }
- }
for (i = 0; i < size; i++) {
if (ids[i] >= cnt_stats) {