| 368 | } |
| 369 | |
| 370 | static void |
| 371 | txgbevf_update_stats(struct rte_eth_dev *dev) |
| 372 | { |
| 373 | struct txgbe_hw *hw = TXGBE_DEV_HW(dev); |
| 374 | struct txgbevf_hw_stats *hw_stats = (struct txgbevf_hw_stats *) |
| 375 | TXGBE_DEV_STATS(dev); |
| 376 | unsigned int i; |
| 377 | |
| 378 | for (i = 0; i < dev->data->nb_rx_queues; i++) { |
| 379 | /* Good Rx packet, include VF loopback */ |
| 380 | TXGBE_UPDCNT32(TXGBE_QPRXPKT(i), |
| 381 | hw_stats->qp[i].last_vfgprc, hw_stats->qp[i].vfgprc); |
| 382 | |
| 383 | /* Good Rx octets, include VF loopback */ |
| 384 | TXGBE_UPDCNT36(TXGBE_QPRXOCTL(i), |
| 385 | hw_stats->qp[i].last_vfgorc, hw_stats->qp[i].vfgorc); |
| 386 | |
| 387 | /* Rx Multicst Packet */ |
| 388 | TXGBE_UPDCNT32(TXGBE_QPRXMPKT(i), |
| 389 | hw_stats->qp[i].last_vfmprc, hw_stats->qp[i].vfmprc); |
| 390 | } |
| 391 | hw->rx_loaded = 0; |
| 392 | |
| 393 | for (i = 0; i < dev->data->nb_tx_queues; i++) { |
| 394 | /* Good Tx packet, include VF loopback */ |
| 395 | TXGBE_UPDCNT32(TXGBE_QPTXPKT(i), |
| 396 | hw_stats->qp[i].last_vfgptc, hw_stats->qp[i].vfgptc); |
| 397 | |
| 398 | /* Good Tx octets, include VF loopback */ |
| 399 | TXGBE_UPDCNT36(TXGBE_QPTXOCTL(i), |
| 400 | hw_stats->qp[i].last_vfgotc, hw_stats->qp[i].vfgotc); |
| 401 | } |
| 402 | hw->offset_loaded = 0; |
| 403 | } |
| 404 | |
| 405 | static int |
| 406 | txgbevf_dev_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *xstats, |
no outgoing calls
no test coverage detected