be2net: add new counters to display via ethtool stats
authorAjit Khaparde <ajit.khaparde@emulex.com>
Sun, 20 Feb 2011 11:41:04 +0000 (11:41 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 22 Feb 2011 18:26:44 +0000 (10:26 -0800)
New counters:
> jabber frame stats
> red drop stats

Signed-off-by: Ajit Khaparde <ajit.khaparde@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/benet/be_cmds.h
drivers/net/benet/be_ethtool.c

index 91c5d2b09aa1fb261c5d94f94edceb465bd8b76b..331e9540bc74e0c57f64e5088c740d426893b592 100644 (file)
@@ -619,7 +619,10 @@ struct be_rxf_stats {
        u32 rx_drops_invalid_ring;      /* dword 145*/
        u32 forwarded_packets;  /* dword 146*/
        u32 rx_drops_mtu;       /* dword 147*/
-       u32 rsvd0[15];
+       u32 rsvd0[7];
+       u32 port0_jabber_events;
+       u32 port1_jabber_events;
+       u32 rsvd1[6];
 };
 
 struct be_erx_stats {
@@ -630,11 +633,16 @@ struct be_erx_stats {
        u32 debug_pmem_pbuf_dealloc;       /* dword 47*/
 };
 
+struct be_pmem_stats {
+       u32 eth_red_drops;
+       u32 rsvd[4];
+};
+
 struct be_hw_stats {
        struct be_rxf_stats rxf;
        u32 rsvd[48];
        struct be_erx_stats erx;
-       u32 rsvd1[6];
+       struct be_pmem_stats pmem;
 };
 
 struct be_cmd_req_get_stats {
index 07b4ab902b17c7d4cbf14789511338207f6e96b4..82a9a27a9812cecb5d0f7ba2c566dfbc443c08ff 100644 (file)
@@ -26,7 +26,8 @@ struct be_ethtool_stat {
        int offset;
 };
 
-enum {NETSTAT, PORTSTAT, MISCSTAT, DRVSTAT_TX, DRVSTAT_RX, ERXSTAT};
+enum {NETSTAT, PORTSTAT, MISCSTAT, DRVSTAT_TX, DRVSTAT_RX, ERXSTAT,
+                       PMEMSTAT};
 #define FIELDINFO(_struct, field) FIELD_SIZEOF(_struct, field), \
                                        offsetof(_struct, field)
 #define NETSTAT_INFO(field)    #field, NETSTAT,\
@@ -43,6 +44,8 @@ enum {NETSTAT, PORTSTAT, MISCSTAT, DRVSTAT_TX, DRVSTAT_RX, ERXSTAT};
                                                field)
 #define ERXSTAT_INFO(field)    #field, ERXSTAT,\
                                        FIELDINFO(struct be_erx_stats, field)
+#define PMEMSTAT_INFO(field)   #field, PMEMSTAT,\
+                                       FIELDINFO(struct be_pmem_stats, field)
 
 static const struct be_ethtool_stat et_stats[] = {
        {NETSTAT_INFO(rx_packets)},
@@ -99,7 +102,10 @@ static const struct be_ethtool_stat et_stats[] = {
        {MISCSTAT_INFO(rx_drops_too_many_frags)},
        {MISCSTAT_INFO(rx_drops_invalid_ring)},
        {MISCSTAT_INFO(forwarded_packets)},
-       {MISCSTAT_INFO(rx_drops_mtu)}
+       {MISCSTAT_INFO(rx_drops_mtu)},
+       {MISCSTAT_INFO(port0_jabber_events)},
+       {MISCSTAT_INFO(port1_jabber_events)},
+       {PMEMSTAT_INFO(eth_red_drops)}
 };
 #define ETHTOOL_STATS_NUM ARRAY_SIZE(et_stats)
 
@@ -276,6 +282,9 @@ be_get_ethtool_stats(struct net_device *netdev,
                case MISCSTAT:
                        p = &hw_stats->rxf;
                        break;
+               case PMEMSTAT:
+                       p = &hw_stats->pmem;
+                       break;
                }
 
                p = (u8 *)p + et_stats[i].offset;