ixgbe: add ethtool counters for OS2BMC
authorEmil Tantilov <emil.s.tantilov@intel.com>
Thu, 21 Apr 2011 08:43:43 +0000 (08:43 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Sat, 7 May 2011 10:15:45 +0000 (03:15 -0700)
OS2BMC registers are available for X540.
This patch adds ethtool counters based on those registers.

Signed-off-by: Emil Tantilov <emil.s.tantilov@intel.com>
Tested-by: Evan Swanson <evan.swanson@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ixgbe/ixgbe_ethtool.c
drivers/net/ixgbe/ixgbe_main.c
drivers/net/ixgbe/ixgbe_type.h

index 545b231..1fdd075 100644 (file)
@@ -102,6 +102,10 @@ static struct ixgbe_stats ixgbe_gstrings_stats[] = {
        {"alloc_rx_page_failed", IXGBE_STAT(alloc_rx_page_failed)},
        {"alloc_rx_buff_failed", IXGBE_STAT(alloc_rx_buff_failed)},
        {"rx_no_dma_resources", IXGBE_STAT(hw_rx_no_dma_resources)},
+       {"os2bmc_rx_by_bmc", IXGBE_STAT(stats.o2bgptc)},
+       {"os2bmc_tx_by_bmc", IXGBE_STAT(stats.b2ospc)},
+       {"os2bmc_tx_by_host", IXGBE_STAT(stats.o2bspc)},
+       {"os2bmc_rx_by_host", IXGBE_STAT(stats.b2ogprc)},
 #ifdef IXGBE_FCOE
        {"fcoe_bad_fccrc", IXGBE_STAT(stats.fccrc)},
        {"rx_fcoe_dropped", IXGBE_STAT(stats.fcoerpdc)},
index 56cc9a1..a3e384b 100644 (file)
@@ -5912,8 +5912,13 @@ void ixgbe_update_stats(struct ixgbe_adapter *adapter)
                hwstats->gotc += IXGBE_READ_REG(hw, IXGBE_GOTCH);
                hwstats->tor += IXGBE_READ_REG(hw, IXGBE_TORH);
                break;
-       case ixgbe_mac_82599EB:
        case ixgbe_mac_X540:
+               /* OS2BMC stats are X540 only*/
+               hwstats->o2bgptc += IXGBE_READ_REG(hw, IXGBE_O2BGPTC);
+               hwstats->o2bspc += IXGBE_READ_REG(hw, IXGBE_O2BSPC);
+               hwstats->b2ospc += IXGBE_READ_REG(hw, IXGBE_B2OSPC);
+               hwstats->b2ogprc += IXGBE_READ_REG(hw, IXGBE_B2OGPRC);
+       case ixgbe_mac_82599EB:
                hwstats->gorc += IXGBE_READ_REG(hw, IXGBE_GORCL);
                IXGBE_READ_REG(hw, IXGBE_GORCH); /* to clear */
                hwstats->gotc += IXGBE_READ_REG(hw, IXGBE_GOTCL);
index b1d523c..70e6870 100644 (file)
 #define IXGBE_FCOEDWRC  0x0242C /* Number of FCoE DWords Received */
 #define IXGBE_FCOEPTC   0x08784 /* Number of FCoE Packets Transmitted */
 #define IXGBE_FCOEDWTC  0x08788 /* Number of FCoE DWords Transmitted */
+#define IXGBE_O2BGPTC   0x041C4
+#define IXGBE_O2BSPC    0x087B0
+#define IXGBE_B2OSPC    0x041C0
+#define IXGBE_B2OGPRC   0x02F90
 #define IXGBE_PCRC8ECL  0x0E810
 #define IXGBE_PCRC8ECH  0x0E811
 #define IXGBE_PCRC8ECH_MASK     0x1F
@@ -2554,6 +2558,10 @@ struct ixgbe_hw_stats {
        u64 fcoeptc;
        u64 fcoedwrc;
        u64 fcoedwtc;
+       u64 b2ospc;
+       u64 b2ogprc;
+       u64 o2bgptc;
+       u64 o2bspc;
 };
 
 /* forward declaration */