aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/ethernet/intel/ixgbe/ixgbe_main.c')
-rw-r--r--drivers/net/ethernet/intel/ixgbe/ixgbe_main.c30
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 /*