| 3137 | } |
| 3138 | |
| 3139 | int |
| 3140 | rte_eth_stats_get(uint16_t port_id, struct rte_eth_stats *stats) |
| 3141 | { |
| 3142 | struct rte_eth_dev *dev; |
| 3143 | int ret; |
| 3144 | |
| 3145 | RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); |
| 3146 | dev = &rte_eth_devices[port_id]; |
| 3147 | |
| 3148 | if (stats == NULL) { |
| 3149 | RTE_ETHDEV_LOG(ERR, "Cannot get ethdev port %u stats to NULL\n", |
| 3150 | port_id); |
| 3151 | return -EINVAL; |
| 3152 | } |
| 3153 | |
| 3154 | memset(stats, 0, sizeof(*stats)); |
| 3155 | |
| 3156 | if (*dev->dev_ops->stats_get == NULL) |
| 3157 | return -ENOTSUP; |
| 3158 | stats->rx_nombuf = dev->data->rx_mbuf_alloc_failed; |
| 3159 | ret = eth_err(port_id, (*dev->dev_ops->stats_get)(dev, stats)); |
| 3160 | |
| 3161 | rte_eth_trace_stats_get(port_id, stats, ret); |
| 3162 | |
| 3163 | return ret; |
| 3164 | } |
| 3165 | |
| 3166 | int |
| 3167 | rte_eth_stats_reset(uint16_t port_id) |