diff options
Diffstat (limited to 'drivers/net/ethernet/intel/ixgbe/ixgbe_main.c')
-rw-r--r-- | drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c index a4103efde363..1e72c00dd7c0 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | |||
@@ -5463,20 +5463,21 @@ void ixgbe_update_stats(struct ixgbe_adapter *adapter) | |||
5463 | netdev->stats.tx_packets = packets; | 5463 | netdev->stats.tx_packets = packets; |
5464 | 5464 | ||
5465 | hwstats->crcerrs += IXGBE_READ_REG(hw, IXGBE_CRCERRS); | 5465 | hwstats->crcerrs += IXGBE_READ_REG(hw, IXGBE_CRCERRS); |
5466 | |||
5467 | /* 8 register reads */ | ||
5466 | for (i = 0; i < 8; i++) { | 5468 | for (i = 0; i < 8; i++) { |
5467 | /* for packet buffers not used, the register should read 0 */ | 5469 | /* for packet buffers not used, the register should read 0 */ |
5468 | mpc = IXGBE_READ_REG(hw, IXGBE_MPC(i)); | 5470 | mpc = IXGBE_READ_REG(hw, IXGBE_MPC(i)); |
5469 | missed_rx += mpc; | 5471 | missed_rx += mpc; |
5470 | hwstats->mpc[i] += mpc; | 5472 | hwstats->mpc[i] += mpc; |
5471 | total_mpc += hwstats->mpc[i]; | 5473 | total_mpc += hwstats->mpc[i]; |
5472 | if (hw->mac.type == ixgbe_mac_82598EB) | 5474 | hwstats->pxontxc[i] += IXGBE_READ_REG(hw, IXGBE_PXONTXC(i)); |
5473 | hwstats->rnbc[i] += IXGBE_READ_REG(hw, IXGBE_RNBC(i)); | 5475 | hwstats->pxofftxc[i] += IXGBE_READ_REG(hw, IXGBE_PXOFFTXC(i)); |
5474 | hwstats->qptc[i] += IXGBE_READ_REG(hw, IXGBE_QPTC(i)); | ||
5475 | hwstats->qbtc[i] += IXGBE_READ_REG(hw, IXGBE_QBTC(i)); | ||
5476 | hwstats->qprc[i] += IXGBE_READ_REG(hw, IXGBE_QPRC(i)); | ||
5477 | hwstats->qbrc[i] += IXGBE_READ_REG(hw, IXGBE_QBRC(i)); | ||
5478 | switch (hw->mac.type) { | 5476 | switch (hw->mac.type) { |
5479 | case ixgbe_mac_82598EB: | 5477 | case ixgbe_mac_82598EB: |
5478 | hwstats->rnbc[i] += IXGBE_READ_REG(hw, IXGBE_RNBC(i)); | ||
5479 | hwstats->qbtc[i] += IXGBE_READ_REG(hw, IXGBE_QBTC(i)); | ||
5480 | hwstats->qbrc[i] += IXGBE_READ_REG(hw, IXGBE_QBRC(i)); | ||
5480 | hwstats->pxonrxc[i] += | 5481 | hwstats->pxonrxc[i] += |
5481 | IXGBE_READ_REG(hw, IXGBE_PXONRXC(i)); | 5482 | IXGBE_READ_REG(hw, IXGBE_PXONRXC(i)); |
5482 | break; | 5483 | break; |
@@ -5488,9 +5489,21 @@ void ixgbe_update_stats(struct ixgbe_adapter *adapter) | |||
5488 | default: | 5489 | default: |
5489 | break; | 5490 | break; |
5490 | } | 5491 | } |
5491 | hwstats->pxontxc[i] += IXGBE_READ_REG(hw, IXGBE_PXONTXC(i)); | ||
5492 | hwstats->pxofftxc[i] += IXGBE_READ_REG(hw, IXGBE_PXOFFTXC(i)); | ||
5493 | } | 5492 | } |
5493 | |||
5494 | /*16 register reads */ | ||
5495 | for (i = 0; i < 16; i++) { | ||
5496 | hwstats->qptc[i] += IXGBE_READ_REG(hw, IXGBE_QPTC(i)); | ||
5497 | hwstats->qprc[i] += IXGBE_READ_REG(hw, IXGBE_QPRC(i)); | ||
5498 | if ((hw->mac.type == ixgbe_mac_82599EB) || | ||
5499 | (hw->mac.type == ixgbe_mac_X540)) { | ||
5500 | hwstats->qbtc[i] += IXGBE_READ_REG(hw, IXGBE_QBTC_L(i)); | ||
5501 | IXGBE_READ_REG(hw, IXGBE_QBTC_H(i)); /* to clear */ | ||
5502 | hwstats->qbrc[i] += IXGBE_READ_REG(hw, IXGBE_QBRC_L(i)); | ||
5503 | IXGBE_READ_REG(hw, IXGBE_QBRC_H(i)); /* to clear */ | ||
5504 | } | ||
5505 | } | ||
5506 | |||
5494 | hwstats->gprc += IXGBE_READ_REG(hw, IXGBE_GPRC); | 5507 | hwstats->gprc += IXGBE_READ_REG(hw, IXGBE_GPRC); |
5495 | /* work around hardware counting issue */ | 5508 | /* work around hardware counting issue */ |
5496 | hwstats->gprc -= missed_rx; | 5509 | hwstats->gprc -= missed_rx; |
@@ -5550,7 +5563,6 @@ void ixgbe_update_stats(struct ixgbe_adapter *adapter) | |||
5550 | hwstats->lxontxc += lxon; | 5563 | hwstats->lxontxc += lxon; |
5551 | lxoff = IXGBE_READ_REG(hw, IXGBE_LXOFFTXC); | 5564 | lxoff = IXGBE_READ_REG(hw, IXGBE_LXOFFTXC); |
5552 | hwstats->lxofftxc += lxoff; | 5565 | hwstats->lxofftxc += lxoff; |
5553 | hwstats->ruc += IXGBE_READ_REG(hw, IXGBE_RUC); | ||
5554 | hwstats->gptc += IXGBE_READ_REG(hw, IXGBE_GPTC); | 5566 | hwstats->gptc += IXGBE_READ_REG(hw, IXGBE_GPTC); |
5555 | hwstats->mptc += IXGBE_READ_REG(hw, IXGBE_MPTC); | 5567 | hwstats->mptc += IXGBE_READ_REG(hw, IXGBE_MPTC); |
5556 | /* | 5568 | /* |